From 0a0ce35c806a6b079ca0d8e744903db7f8fe3351 Mon Sep 17 00:00:00 2001 From: x_z Date: Tue, 1 Nov 2022 17:50:12 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=AE=8C=E5=96=84=E7=9B=98=E7=82=B9=E5=8D=95?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inventory/InvCountOrderController.java | 14 +++++ .../admin/dao/inventory/InvCountCodesDao.java | 16 +++++ .../dao/inventory/InvCountOrderDetailDao.java | 15 +++++ .../dao/inventory/InvProductDetailDao.java | 11 ++++ .../admin/entity/inventory/InvCountCodes.java | 2 +- .../inventory/FilterInvCountOrderRequest.java | 5 ++ .../inventory/InvCountOrderService.java | 9 +++ .../impl/InvCountOrderServiceImpl.java | 60 +++++++++++++++++++ .../mapper/inventory/InvCountCodesDao.xml | 40 +++++++++---- .../mapper/inventory/InvCountOrderDao.xml | 5 +- .../inventory/InvCountOrderDetailDao.xml | 19 +++++- .../mapper/inventory/InvProductDetailDao.xml | 18 ++++++ 12 files changed, 201 insertions(+), 13 deletions(-) diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvCountOrderController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvCountOrderController.java index 96b49095..beaca94a 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvCountOrderController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvCountOrderController.java @@ -88,4 +88,18 @@ public class InvCountOrderController { return invCountOrderService.submitAudit(id); } + /** + * 更新盘点单据状态 + * + * @param filterInvCountOrderRequest + * @return + */ + @PostMapping("/invCount/order/updateCountOrderStatus") + public BaseResponse updateCountOrderStatus(@RequestBody FilterInvCountOrderRequest filterInvCountOrderRequest) { + if (null == filterInvCountOrderRequest || StrUtil.isBlank(filterInvCountOrderRequest.getId()) || null == filterInvCountOrderRequest.getStatus()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + return invCountOrderService.updateCountOrderStatus(filterInvCountOrderRequest.getId(), filterInvCountOrderRequest.getStatus()); + } + } diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvCountCodesDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvCountCodesDao.java index ef51e503..ea8fd29c 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvCountCodesDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvCountCodesDao.java @@ -65,4 +65,20 @@ public interface InvCountCodesDao { * @return */ Long selectCountByCodeAndOrderId(@Param("code") String code, @Param("orderIdFk") String orderIdFk); + + /** + * 清空盘点单据相关字段 + * + * @param orderId + */ + void resetCountFiledValue(@Param("orderId") String orderId); + + /** + * 根据盘点单号和产品ID查询码表 + * + * @param orderIdFk + * @param productId + * @return + */ + List selectByOrderIdAndProductId(@Param("orderIdFk") String orderIdFk, @Param("productId") String productId); } \ No newline at end of file diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvCountOrderDetailDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvCountOrderDetailDao.java index 1fe89d22..be2b7139 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvCountOrderDetailDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvCountOrderDetailDao.java @@ -74,4 +74,19 @@ public interface InvCountOrderDetailDao { * @return */ InvCountOrderDetail selectByOrderIdAndNameCode(@Param("orderIdFk") String orderIdFk, @Param("nameCode") String nameCode); + + /** + * 查询此盘点单的单据详情 + * + * @param orderId + * @return + */ + List selectByOrderId(@Param("orderId") String orderId); + + /** + * 置空盘点相关字段值 + * + * @param orderId + */ + void resetCountFiledValue(@Param("orderId") String orderId); } \ No newline at end of file diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvProductDetailDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvProductDetailDao.java index a866c73e..1c621b14 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvProductDetailDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvProductDetailDao.java @@ -72,4 +72,15 @@ public interface InvProductDetailDao { * @return */ InvProductDetailEntity selectByInvAndCode(BindInvSpaceRequest bindInvSpaceRequest); + + /** + * 根据仓库,分库,货位码及产品ID查询库存详情条码信息 + * + * @param invStorageCode + * @param invWarehouseCode + * @param invSpaceCode + * @param productId + * @return + */ + List selectCodeByInvCodeAndProductId(@Param("invStorageCode") String invStorageCode, @Param("invWarehouseCode") String invWarehouseCode, @Param("invSpaceCode") String invSpaceCode, @Param("productId") String productId); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/entity/inventory/InvCountCodes.java b/api-admin/src/main/java/com/glxp/api/admin/entity/inventory/InvCountCodes.java index 6dfd98dc..e0b595f3 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/entity/inventory/InvCountCodes.java +++ b/api-admin/src/main/java/com/glxp/api/admin/entity/inventory/InvCountCodes.java @@ -28,6 +28,6 @@ public class InvCountCodes { /** * 条码状态(多码或少码) 0:少 1:多 */ - private Boolean status; + private Integer status; } \ No newline at end of file diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/inventory/FilterInvCountOrderRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/inventory/FilterInvCountOrderRequest.java index 44fdbe14..3c53b8f6 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/req/inventory/FilterInvCountOrderRequest.java +++ b/api-admin/src/main/java/com/glxp/api/admin/req/inventory/FilterInvCountOrderRequest.java @@ -6,6 +6,11 @@ import lombok.Data; @Data public class FilterInvCountOrderRequest extends ListPageRequest { + /** + * id + */ + private String id; + /** * 仓库码 */ diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvCountOrderService.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvCountOrderService.java index cf76574c..a9e7bdce 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvCountOrderService.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvCountOrderService.java @@ -41,4 +41,13 @@ public interface InvCountOrderService { * @return */ BaseResponse submitAudit(String id); + + /** + * 更新盘点单据状态 + * + * @param id + * @param status + * @return + */ + BaseResponse updateCountOrderStatus(String id, Integer status); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvCountOrderServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvCountOrderServiceImpl.java index c9999493..ff004895 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvCountOrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvCountOrderServiceImpl.java @@ -8,8 +8,11 @@ import com.glxp.api.admin.constant.Constant; import com.glxp.api.admin.dao.inventory.InvCountCodesDao; import com.glxp.api.admin.dao.inventory.InvCountOrderDao; import com.glxp.api.admin.dao.inventory.InvCountOrderDetailDao; +import com.glxp.api.admin.dao.inventory.InvProductDetailDao; import com.glxp.api.admin.entity.auth.AuthAdmin; +import com.glxp.api.admin.entity.inventory.InvCountCodes; import com.glxp.api.admin.entity.inventory.InvCountOrder; +import com.glxp.api.admin.entity.inventory.InvCountOrderDetail; import com.glxp.api.admin.req.inventory.FilterInvCountOrderRequest; import com.glxp.api.admin.res.inventory.InvCountOrderResponse; import com.glxp.api.admin.service.auth.CustomerService; @@ -42,6 +45,8 @@ public class InvCountOrderServiceImpl implements InvCountOrderService { private GennerOrderUtils gennerOrderUtils; @Resource private CustomerService customerService; + @Resource + private InvProductDetailDao invProductDetailDao; @Override public List filterList(FilterInvCountOrderRequest filterInvCountOrderRequest) { @@ -74,6 +79,7 @@ public class InvCountOrderServiceImpl implements InvCountOrderService { AuthAdmin user = customerService.getUserBean(); invCountOrder.setCreateUser(user.getUserName()); invCountOrder.setCreateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN)); + invCountOrder.setUpdateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN)); invCountOrderDao.insert(invCountOrder); } else { InvCountOrder oldData = invCountOrderDao.selectByOrderId(invCountOrder.getOrderId()); @@ -105,6 +111,60 @@ public class InvCountOrderServiceImpl implements InvCountOrderService { //更新状态 invCountOrder.setStatus(1); invCountOrder.setUpdateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN)); + //查询单据详情,计算盘点盈亏状态 + List detailList = invCountOrderDetailDao.selectByOrderId(invCountOrder.getOrderId()); + for (InvCountOrderDetail invCountOrderDetail : detailList) { + int diff = invCountOrderDetail.getInvNum() - invCountOrderDetail.getCountNum(); + if (diff > 0) { + invCountOrderDetail.setLossNum(Math.abs(diff)); + invCountOrderDetail.setStatus(0); //盘亏 + } else if (diff < 0) { + invCountOrderDetail.setProfitNum(Math.abs(diff)); + invCountOrderDetail.setStatus(1); //盘盈 + } else { + invCountOrderDetail.setStatus(2); //平 + } + + //查询此产品的条码列表,判断此产品在库存中是多还是少 + List codesList = invCountCodesDao.selectByOrderIdAndProductId(invCountOrderDetail.getOrderIdFk(), invCountOrderDetail.getProductId()); + //查询库存中此产品的码数据,用来判断盘单据条码是多码还是少码 + List invDetailCodes = invProductDetailDao.selectCodeByInvCodeAndProductId(invCountOrder.getInvStorageCode(), invCountOrder.getInvWarehouseCode(), invCountOrder.getInvSpaceCode(), invCountOrderDetail.getProductId()); + for (InvCountCodes invCountCodes : codesList) { + //查询此条码在库存中是否存在 + boolean contains = invDetailCodes.contains(invCountCodes.getCode()); + if (!contains) { + invCountCodes.setStatus(1); + } + } + //批量更新条码信息 + invCountCodesDao.updateBatch(codesList); + } + //更新单据信息 + invCountOrderDao.updateByPrimaryKey(invCountOrder); + //更新单据详情 + invCountOrderDetailDao.updateBatch(detailList); + return ResultVOUtils.success(); + } + + @Override + public BaseResponse updateCountOrderStatus(String id, Integer status) { + InvCountOrder invCountOrder = invCountOrderDao.selectByPrimaryKey(Integer.valueOf(id)); + invCountOrder.setStatus(status); + invCountOrder.setAuditUser(customerService.getUserBean().getUserName()); + invCountOrder.setAuditTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN)); + invCountOrder.setUpdateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN)); + if (status == 0) { + //审核不通过 + //查询盘点单据详情,清空盘盈/盘亏数值 + invCountOrderDetailDao.resetCountFiledValue(invCountOrder.getOrderId()); + //清空条码的状态 + invCountCodesDao.resetCountFiledValue(invCountOrder.getOrderId()); + } else { + //审核通过 + //todo 根据单据详情生成相关单据 + + + } invCountOrderDao.updateByPrimaryKey(invCountOrder); return ResultVOUtils.success(); } diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountCodesDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountCodesDao.xml index e2fe2bfb..f8fe37ac 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountCodesDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountCodesDao.xml @@ -6,7 +6,7 @@ - + @@ -35,7 +35,7 @@ insert into inv_count_codes (orderIdFk, productId, code, `status`) values (#{orderIdFk,jdbcType=VARCHAR}, #{productId,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, - #{status,jdbcType=BOOLEAN}) + #{status,jdbcType=INTEGER}) - #{status,jdbcType=BOOLEAN}, + #{status,jdbcType=INTEGER}, @@ -84,7 +84,7 @@ code = #{code,jdbcType=VARCHAR}, - `status` = #{status,jdbcType=BOOLEAN}, + `status` = #{status,jdbcType=INTEGER}, where id = #{id,jdbcType=INTEGER} @@ -95,7 +95,7 @@ set orderIdFk = #{orderIdFk,jdbcType=VARCHAR}, productId = #{productId,jdbcType=VARCHAR}, code = #{code,jdbcType=VARCHAR}, - `status` = #{status,jdbcType=BOOLEAN} + `status` = #{status,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER} @@ -119,7 +119,7 @@ - when id = #{item.id,jdbcType=INTEGER} then #{item.status,jdbcType=BOOLEAN} + when id = #{item.id,jdbcType=INTEGER} then #{item.status,jdbcType=INTEGER} @@ -135,7 +135,7 @@ values (#{item.orderIdFk,jdbcType=VARCHAR}, #{item.productId,jdbcType=VARCHAR}, #{item.code,jdbcType=VARCHAR}, - #{item.status,jdbcType=BOOLEAN}) + #{item.status,jdbcType=INTEGER}) @@ -163,14 +163,34 @@ + + + update inv_count_codes + set status = null + where orderIdFk = #{orderId} + + + \ No newline at end of file diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountOrderDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountOrderDao.xml index 4ec0b319..9e4adc6d 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountOrderDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountOrderDao.xml @@ -306,6 +306,7 @@ AND co.status = #{status} + order by updateTime desc - select * from inv_count_order where orderId = #{orderId} + select * + from inv_count_order + where orderId = #{orderId} \ No newline at end of file diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountOrderDetailDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountOrderDetailDao.xml index 67171a3f..67fb842b 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountOrderDetailDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvCountOrderDetailDao.xml @@ -322,6 +322,23 @@ + + + + + update inv_count_order_detail + set profitNum = null, + lossNum = null, + status = null + where orderIdFk = #{orderId} + \ No newline at end of file diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDetailDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDetailDao.xml index 77ed1f95..3e7a15e1 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDetailDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDetailDao.xml @@ -391,4 +391,22 @@ and invWarehouseCode = #{invWarehouseCode} and code = #{code} + + \ No newline at end of file