1.库存详情添加货位字段

2.添加货位绑定功能接口
feature-order-fix
x_z 2 years ago
parent 28d3ff41e8
commit 27b57673bd

@ -13,10 +13,7 @@ import com.glxp.api.admin.entity.inout.WarehouseUserEntity;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.api.admin.entity.inventory.InvProductEntity;
import com.glxp.api.admin.req.inout.DeleteRequest;
import com.glxp.api.admin.req.inventory.FilterCodeTraceRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductRequest;
import com.glxp.api.admin.req.inventory.ThirdFilterInvRequest;
import com.glxp.api.admin.req.inventory.*;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
import com.glxp.api.admin.res.inventory.*;
@ -39,6 +36,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -91,7 +89,7 @@ public class InvProductsController {
return ResultVOUtils.success(pageSimpleResponse);
}
// @AuthRuleAnnotation("")
// @AuthRuleAnnotation("")
@PostMapping("udiwms/inv/products/filter")
public BaseResponse thirdInvFilter(@RequestBody ThirdFilterInvRequest thirdFilterInvRequest) {
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
@ -437,4 +435,47 @@ public class InvProductsController {
return ResultVOUtils.success(count);
}
/**
*
*
* @param filterInvProductDetailRequest
* @return
*/
@AuthRuleAnnotation("")
@GetMapping("spms/inv/products/getPlacementDetailList")
public BaseResponse getPlacementDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest) {
List<InvProductDetailPlaceResponse> list = invProductDetailService.getPlacementDetailList(filterInvProductDetailRequest);
PageInfo<InvProductDetailPlaceResponse> pageInfo = new PageInfo<>(list);
PageSimpleResponse<InvProductDetailPlaceResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(list);
return ResultVOUtils.success(pageSimpleResponse);
}
@AuthRuleAnnotation("")
@PostMapping("spms/inv/products/bindInvSpace")
public BaseResponse bindInvSpace(@RequestBody @Valid BindInvSpaceRequest bindInvSpaceRequest) {
if (null == bindInvSpaceRequest) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
invProductDetailService.bindInvSpace(bindInvSpaceRequest);
return ResultVOUtils.success();
}
/**
*
*
* @param bindInvSpaceRequest
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("spms/inv/products/checkCodeSpace")
public BaseResponse checkCodeSpace(@RequestBody BindInvSpaceRequest bindInvSpaceRequest) {
if (null == bindInvSpaceRequest || StrUtil.isBlank(bindInvSpaceRequest.getInvSpaceCode()) || StrUtil.isBlank(bindInvSpaceRequest.getInvWarehouseCode())
|| StrUtil.isBlank(bindInvSpaceRequest.getInvSpaceCode()) || StrUtil.isBlank(bindInvSpaceRequest.getCode())) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return invProductDetailService.checkCodeSpace(bindInvSpaceRequest);
}
}

@ -49,4 +49,14 @@ public interface InvSpaceDao {
* @return
*/
List<InvSpace> selectSpaceCodeList(FilterInvSpaceRequest filterInvSpaceRequest);
/**
*
*
* @param code
* @param invStorageCode
* @param invWarehouseCode
* @return
*/
String selectNameByCode(@Param("invStorageCode") String invStorageCode, @Param("invWarehouseCode") String invWarehouseCode, @Param("code") String code);
}

@ -1,8 +1,10 @@
package com.glxp.api.admin.dao.inventory;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.api.admin.req.inventory.BindInvSpaceRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.api.admin.res.inventory.InvProductDetailJoinResponse;
import com.glxp.api.admin.res.inventory.InvProductDetailPlaceResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -38,4 +40,36 @@ public interface InvProductDetailDao {
boolean deleteByOrderId(@Param("orderIdFk") String orderIdFk);
boolean deleteByOrderIdAndCode(@Param("orderId") String orderId, @Param("code") String code);
/**
*
*
* @param filterInvProductDetailRequest
* @return
*/
List<InvProductDetailPlaceResponse> selectPlacementDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest);
/**
* ID
*
* @param bindInvSpaceRequest
* @return
*/
List<Integer> selectInvProductDetailIds(BindInvSpaceRequest bindInvSpaceRequest);
/**
*
*
* @param ids
* @param invSpaceCode
*/
void batchBindSpace(@Param("ids") List<Integer> ids, @Param("invSpaceCode") String invSpaceCode);
/**
*
*
* @param bindInvSpaceRequest
* @return
*/
InvProductDetailEntity selectByInvAndCode(BindInvSpaceRequest bindInvSpaceRequest);
}

@ -25,4 +25,5 @@ public class InvProductDetailEntity {
private String originCode;
private String invStorageCode;
private String invWarehouseCode;
private String invSpaceCode;
}

@ -0,0 +1,44 @@
package com.glxp.api.admin.req.inventory;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
*
*/
@Data
public class BindInvSpaceRequest {
/**
*
*/
@NotBlank(message = "请选择仓库")
private String invStorageCode;
/**
*
*/
@NotBlank(message = "请选择分库")
private String invWarehouseCode;
/**
*
*/
@NotBlank(message = "请选择货位")
private String invSpaceCode;
/**
*
*/
private String code;
/**
*
*/
@NotEmpty(message = "请扫描货物")
private List<String> codeArray;
}

@ -29,6 +29,7 @@ public class FilterInvProductDetailRequest extends ListPageRequest {
private String invStorageCode;
private String invWarehouseCode;
private String invSpaceCode;
private List<String> invCodes;
}

@ -0,0 +1,52 @@
package com.glxp.api.admin.res.inventory;
import lombok.Data;
@Data
public class InvProductDetailPlaceResponse {
private Integer id;
private String code;
private String productIdFk;
private String productName;
private String ggxh;
private String customerId;
private String mainAction;
private String batchNo;
private String productionDate;
private String expireDate;
/**
*
*/
private String zczbhhzbapzbh;
/**
*
*/
private String ylqxzcrbarmc;
/**
*
*/
private String invStorageCode;
/**
*
*/
private String invWarehouseCode;
/**
*
*/
private String invSpaceCode;
private String invStorageName;
private String invWarehouseName;
private String invSpaceName;
}

@ -2,8 +2,11 @@ package com.glxp.api.admin.service.inventory;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.api.admin.req.inventory.BindInvSpaceRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.api.admin.res.inventory.InvProductDetailJoinResponse;
import com.glxp.api.admin.res.inventory.InvProductDetailPlaceResponse;
import com.glxp.api.common.res.BaseResponse;
import java.util.List;
@ -36,4 +39,27 @@ public interface InvProductDetailService {
InvProductDetailEntity statInvPreInDetail(String code);
int vailStockCount(String code);
/**
*
*
* @param filterInvProductDetailRequest
* @return
*/
List<InvProductDetailPlaceResponse> getPlacementDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest);
/**
*
*
* @param bindInvSpaceRequest
*/
void bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest);
/**
*
*
* @param bindInvSpaceRequest
* @return
*/
BaseResponse checkCodeSpace(BindInvSpaceRequest bindInvSpaceRequest);
}

@ -4,13 +4,19 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.constant.ConstantType;
import com.glxp.api.admin.dao.business.InvSpaceDao;
import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.api.admin.req.inventory.BindInvSpaceRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.api.admin.res.inventory.InvProductDetailJoinResponse;
import com.glxp.api.admin.res.inventory.InvProductDetailPlaceResponse;
import com.glxp.api.admin.service.inventory.InvProductDetailService;
import com.glxp.api.admin.util.FilterUdiUtils;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -23,6 +29,8 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
@Resource
private InvProductDetailDao invProductDetailDao;
@Resource
private InvSpaceDao invSpaceDao;
@Override
public List<InvProductDetailEntity> findByCode(String code) {
@ -165,4 +173,39 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
return count;
}
@Override
public List<InvProductDetailPlaceResponse> getPlacementDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest) {
if (null == filterInvProductDetailRequest) {
return Collections.emptyList();
}
if (null != filterInvProductDetailRequest.getPage() && null != filterInvProductDetailRequest.getLimit()) {
PageHelper.offsetPage((filterInvProductDetailRequest.getPage() - 1) * filterInvProductDetailRequest.getLimit(), filterInvProductDetailRequest.getLimit());
}
List<InvProductDetailPlaceResponse> list = invProductDetailDao.selectPlacementDetailList(filterInvProductDetailRequest);
return list;
}
@Override
public void bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest) {
List<Integer> ids = invProductDetailDao.selectInvProductDetailIds(bindInvSpaceRequest);
if (CollUtil.isNotEmpty(ids)) {
invProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode());
}
}
@Override
public BaseResponse checkCodeSpace(BindInvSpaceRequest bindInvSpaceRequest) {
InvProductDetailEntity invProductDetailEntity = invProductDetailDao.selectByInvAndCode(bindInvSpaceRequest);
if (null == invProductDetailEntity) {
return ResultVOUtils.error(ResultEnum.DATA_ERROR, "此货物非当前仓库物品,无法绑定货位");
}
if (StrUtil.isNotEmpty(invProductDetailEntity.getInvSpaceCode()) && !bindInvSpaceRequest.getInvSpaceCode().equals(invProductDetailEntity.getInvSpaceCode())) {
String invSpaceName = invSpaceDao.selectNameByCode(invProductDetailEntity.getInvStorageCode(), invProductDetailEntity.getInvWarehouseCode(), invProductDetailEntity.getInvSpaceCode());
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "此货物已绑定 " + invSpaceName + " 货位,是否重新绑定?");
}
return ResultVOUtils.success();
}
}

@ -324,4 +324,12 @@
</if>
</where>
</select>
<select id="selectNameByCode" resultType="java.lang.String">
select name
from inv_space
where invStorageCode = #{invStorageCode}
and invWarehouseCode = #{invWarehouseCode}
and code = #{code}
</select>
</mapper>

@ -2,10 +2,10 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.glxp.api.admin.dao.inventory.InvProductDetailDao">
<select id="filterInvProductDetail" parameterType="com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest"
resultType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity">
SELECT * FROM inv_product_detail
SELECT *
FROM inv_product_detail
<where>
<if test="productIdFk != '' and productIdFk != null">
AND productIdFk = #{productIdFk}
@ -27,7 +27,7 @@
AND purchaseType = #{purchaseType}
</if>
<if test="batchNo != '' and batchNo != null and batchNo!='empty'">
<if test="batchNo != '' and batchNo != null and batchNo != 'empty'">
AND batchNo = #{batchNo}
</if>
<if test="batchNo == 'empty'">
@ -51,6 +51,9 @@
<if test="invWarehouseCode != '' and invWarehouseCode != null">
AND invWarehouseCode = #{invWarehouseCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
@ -58,8 +61,9 @@
</select>
<select id="filterJoinInvProduct" parameterType="com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest"
resultType="com.glxp.api.admin.res.inventory.InvProductDetailJoinResponse">
SELECT inv_product_detail.* ,io_order.fromCorp,io_order.fromCorpId FROM inv_product_detail
inner join io_order on inv_product_detail.orderIdFk = io_order.id
SELECT inv_product_detail.*, io_order.fromCorp, io_order.fromCorpId
FROM inv_product_detail
inner join io_order on inv_product_detail.orderIdFk = io_order.id
<where>
<if test="productIdFk != '' and productIdFk != null">
AND productIdFk = #{productIdFk}
@ -81,7 +85,7 @@
AND purchaseType = #{purchaseType}
</if>
<if test="batchNo != '' and batchNo != null and batchNo!='empty'">
<if test="batchNo != '' and batchNo != null and batchNo != 'empty'">
AND batchNo = #{batchNo}
</if>
<if test="batchNo == 'empty'">
@ -106,6 +110,9 @@
<if test="invWarehouseCode != '' and invWarehouseCode != null">
AND invWarehouseCode = #{invWarehouseCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
</where>
</select>
<insert id="insertInvProductDetail" keyProperty="id"
@ -114,31 +121,32 @@
(code, productIdFk, orderIdFk, customerId, mainAction, `action`, `count`, updateTime,
purchaseType, batchNo, productionDate, expireDate, unitFk, stockIdFk, supId, originCode,
invStorageCode,
invWarehouseCode)
invWarehouseCode,
invSpaceCode)
values (#{code},
#{productIdFk}, #{orderIdFk},
#{customerId}, #{mainAction}, #{action}, #{count}, #{updateTime},
#{purchaseType}, #{batchNo}, #{productionDate}, #{expireDate}, #{unitFk}, #{stockIdFk}, #{supId},
#{originCode}, #{invStorageCode}, #{invWarehouseCode})
#{originCode}, #{invStorageCode}, #{invWarehouseCode}, #{invSpaceCode})
</insert>
<insert id="insertInvProductDetails" keyProperty="id"
parameterType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity">
insert INTO inv_product_detail
(code, productIdFk, orderIdFk, customerId, mainAction, `action`, `count`, updateTime,
purchaseType, batchNo, productionDate, expireDate, unitFk, stockIdFk, supId, originCode,
invStorageCode,
invWarehouseCode)
purchaseType, batchNo, productionDate, expireDate, unitFk, stockIdFk, supId, originCode,
invStorageCode,
invWarehouseCode, invSpaceCode)
values
<foreach collection="invProductDetailEntitys" item="item" index="index"
separator=",">
(#{item.code},
#{item.productIdFk}, #{item.orderIdFk},
#{item.customerId}, #{item.mainAction}, #{item.action}, #{item.count}, #{item.updateTime},
#{item.purchaseType}, #{item.batchNo}, #{item.productionDate}, #{item.expireDate},
#{item.unitFk}, #{item.stockIdFk},
#{item.supId}, #{item.originCode}, #{item.invStorageCode}, #{item.invWarehouseCode})
#{item.productIdFk}, #{item.orderIdFk},
#{item.customerId}, #{item.mainAction}, #{item.action}, #{item.count}, #{item.updateTime},
#{item.purchaseType}, #{item.batchNo}, #{item.productionDate}, #{item.expireDate},
#{item.unitFk}, #{item.stockIdFk},
#{item.supId}, #{item.originCode}, #{item.invStorageCode}, #{item.invWarehouseCode}, #{item.invSpaceCode})
</foreach>
</insert>
@ -155,8 +163,8 @@
<if test="productIdFk != '' and productIdFk != null">
AND productIdFk = #{productIdFk}
</if>
<if test="batchNo != '' and batchNo != null and batchNo!='empty'">
AND inv_product_detail.batchNo like concat('%',#{batchNo},'%')
<if test="batchNo != '' and batchNo != null and batchNo != 'empty'">
AND inv_product_detail.batchNo like concat('%', #{batchNo}, '%')
</if>
<if test="batchNo == 'empty'">
AND batchNo is NULL
@ -168,34 +176,69 @@
AND supId = #{supId}
</if>
</where>
</delete>
<update id="updateInvProductDetail" parameterType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity">
UPDATE inv_product_detail
<trim prefix="set" suffixOverrides=",">
<if test="code != null">code=#{code},</if>
<if test="productIdFk != null">productIdFk=#{productIdFk},</if>
<if test="customerId != null">customerId=#{customerId},</if>
<if test="mainAction != null">mainAction=#{mainAction},</if>
<if test="action != null">`action`=#{action},</if>
<if test="count != null">`count`=#{count},</if>
<if test="unitFk != null">unitFk=#{unitFk},</if>
<if test="purchaseType != null">purchaseType=#{purchaseType},</if>
<if test="batchNo != null">batchNo=#{batchNo},</if>
<if test="productionDate != null">productionDate=#{productionDate},</if>
<if test="expireDate != null">expireDate=#{expireDate},</if>
<if test="stockIdFk != null">stockIdFk=#{stockIdFk},</if>
<if test="supId != null">supId=#{supId},</if>
<if test="originCode != null">originCode=#{originCode},</if>
<if test="invStorageCode != null">invStorageCode=#{invStorageCode},</if>
<if test="invWarehouseCode != null">invWarehouseCode=#{invWarehouseCode},</if>
<if test="code != null">
code=#{code},
</if>
<if test="productIdFk != null">
productIdFk=#{productIdFk},
</if>
<if test="customerId != null">
customerId=#{customerId},
</if>
<if test="mainAction != null">
mainAction=#{mainAction},
</if>
<if test="action != null">
`action`=#{action},
</if>
<if test="count != null">
`count`=#{count},
</if>
<if test="unitFk != null">
unitFk=#{unitFk},
</if>
<if test="purchaseType != null">
purchaseType=#{purchaseType},
</if>
<if test="batchNo != null">
batchNo=#{batchNo},
</if>
<if test="productionDate != null">
productionDate=#{productionDate},
</if>
<if test="expireDate != null">
expireDate=#{expireDate},
</if>
<if test="stockIdFk != null">
stockIdFk=#{stockIdFk},
</if>
<if test="supId != null">
supId=#{supId},
</if>
<if test="originCode != null">
originCode=#{originCode},
</if>
<if test="invStorageCode != null">
invStorageCode=#{invStorageCode},
</if>
<if test="invWarehouseCode != null">
invWarehouseCode=#{invWarehouseCode},
</if>
<if test="invSpaceCode != null != null">
invSpaceCode=#{invSpaceCode},
</if>
</trim>
WHERE id = #{id}
</update>
<select id="statCount" parameterType="com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest"
resultType="java.lang.Integer">
SELECT count(0) FROM inv_product_detail
SELECT count(0)
FROM inv_product_detail
<where>
<if test="productIdFk != '' and productIdFk != null">
AND productIdFk = #{productIdFk}
@ -234,14 +277,13 @@
#{id}
</foreach>
</if>
</where>
</select>
<select id="isExit" parameterType="com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest"
resultType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity">
SELECT * FROM inv_product_detail
SELECT *
FROM inv_product_detail
<where>
<if test="productIdFk != '' and productIdFk != null">
AND productIdFk = #{productIdFk}
@ -275,7 +317,6 @@
</if>
</where>
limit 1
</select>
<delete id="deleteByOrderId">
@ -291,4 +332,63 @@
and code = #{code}
</delete>
<select id="selectPlacementDetailList" resultType="com.glxp.api.admin.res.inventory.InvProductDetailPlaceResponse">
select pd.id,
pd.code,
pd.productIdFk,
pd.batchNo,
pd.productionDate,
pd.expireDate,
bp.ggxh,
bp.cpmctymc as procutName,
bp.zczbhhzbapzbh,
bp.ylqxzcrbarmc,
inv_warehouse.name as invStorageName,
inv_warehouse_sub.name as invWarehouseName,
inv_space.name as invSpaceName
from inv_product_detail pd
left join basic_udirel bu on pd.productIdFk = bu.id
left join basic_products bp on bp.uuid = bu.uuid
left join inv_warehouse on pd.invStorageCode = inv_warehouse.code
left join inv_warehouse_sub on pd.invWarehouseCode = inv_warehouse_sub.code
left join inv_space on pd.invSpaceCode = inv_space.code
<where>
invSpaceCode != null
and invSpaceCode != ''
<if test="invStorageCode != null and invStorageCode != ''">
AND pd.invStorageCode = #{invStorageCode}
</if>
<if test="invWarehouseCode != null and invWarehouseCode != ''">
AND pd.invWarehouseCode = #{invWarehouseCode}
</if>
</where>
</select>
<select id="selectInvProductDetailIds" resultType="java.lang.Integer">
select id
from inv_product_detail
where invStorageCode = #{invStorageCode}
and invWarehouseCode = #{invWarehouseCode}
and code in
<foreach collection="codeArray" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<update id="batchBindSpace">
update inv_product_detail
set invSpaceCode = #{invSpaceCode}
where id in
<foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</update>
<select id="selectByInvAndCode" resultType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity">
select *
from inv_product_detail
where invStorageCode = #{invStorageCode}
and invWarehouseCode = #{invWarehouseCode}
and code = #{code}
</select>
</mapper>

@ -67,3 +67,6 @@ CREATE TABLE `inv_space` (
SET FOREIGN_KEY_CHECKS = 1;
# 库存详情表添加货位号字段
ALTER TABLE `udiwms`.`inv_product_detail`
ADD COLUMN `invSpaceCode` varchar(255) NULL COMMENT '货位号' AFTER `invWarehouseCode`;

Loading…
Cancel
Save