From a9074513480f07be151208bd4f6574eb22835d6f Mon Sep 17 00:00:00 2001 From: x_z Date: Thu, 22 Dec 2022 17:41:27 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=BB=BA=E6=89=AB?= =?UTF-8?q?=E7=A0=81=E5=8D=95=E6=8D=AE=E6=A0=A1=E9=AA=8C=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E4=B8=8D=E5=8C=85=E5=90=AB=E5=BD=93=E5=89=8D=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E4=BF=A1=E6=81=AF=E5=AF=BC=E8=87=B4=E8=B6=85?= =?UTF-8?q?=E5=87=BA=E6=9C=AA=E6=8F=90=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/inout/WareHouseController.java | 8 ++++++- .../inventory/InvProductsController.java | 2 +- .../inventory/InvProductDetailService.java | 2 +- .../impl/InvMAOrderDetailServiceImpl.java | 22 +++++++++++++------ .../impl/InvProductDetailServiceImpl.java | 5 ++++- 5 files changed, 28 insertions(+), 11 deletions(-) diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java index e65a8617..0f9ea0e5 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java @@ -755,9 +755,15 @@ public class WareHouseController { return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); } } else { - int count = invProductDetailService.vailStockCount(code); + int count = invProductDetailService.vailStockCount(code, addOrderRequest.getInvStorageCode(), addOrderRequest.getInvWarehouseCode(), null); if (count <= 0) { return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); + } else { + //查询此单据已扫描的条码数量 + WarehouseEntity warehouse = codesTempService.findByUnique(addOrderRequest.getOrderId(), addOrderRequest.getCode()); + if (null != warehouse && warehouse.getCount() > count) { + return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); + } } } } diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java index 9e1240d5..1cced17a 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java @@ -431,7 +431,7 @@ public class InvProductsController { @AuthRuleAnnotation("") @GetMapping("spms/inv/products/vailInvCount") public BaseResponse vailInvCount(FilterInvProductDetailRequest filterInvProductDetailRequest) { - int count = invProductDetailService.vailStockCount(filterInvProductDetailRequest.getCode()); + int count = invProductDetailService.vailStockCount(filterInvProductDetailRequest.getCode(), filterInvProductDetailRequest.getInvStorageCode(), filterInvProductDetailRequest.getInvWarehouseCode(), filterInvProductDetailRequest.getInvSpaceCode()); return ResultVOUtils.success(count); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvProductDetailService.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvProductDetailService.java index c34abdfe..4d785eb6 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvProductDetailService.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/InvProductDetailService.java @@ -38,7 +38,7 @@ public interface InvProductDetailService { InvProductDetailEntity statInvPreInDetail(String code); - int vailStockCount(String code); + int vailStockCount(String code, String invStorageCode, String invWarehouseCode, String invSpaceCode); /** * 查询货物摆放数据列表 diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderDetailServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderDetailServiceImpl.java index 8ba65104..2bbea5bc 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderDetailServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvMAOrderDetailServiceImpl.java @@ -145,15 +145,23 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService { codeList.forEach(code -> codeMap.put(code, 0)); //计算当前在库存中的码明细 for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { - Integer count = codeMap.get(invProductDetailEntity.getOriginCode()); - if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { - //出库 - count = count - 1; + UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getOriginCode()); + if (StrUtil.isNotBlank(udi.getSerialNo())) { + //有序列号产品,根据产品数量计算即可 + Integer count = codeMap.get(invProductDetailEntity.getOriginCode()); + if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { + //出库 + count = count - 1; + } else { + //入库 + count = count + 1; + } + codeMap.put(invProductDetailEntity.getOriginCode(), count); } else { - //入库 - count = count + 1; + //无序列号产品条码,直接查询库存,使用此库存信息计算出养护数量 + int count = invProductEntity.getInCount() - invProductEntity.getOutCount(); + codeMap.put(invProductDetailEntity.getOriginCode(), count); } - codeMap.put(invProductDetailEntity.getOriginCode(), count); } //根据库存中的码明细,生成库存养护记录详情 diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvProductDetailServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvProductDetailServiceImpl.java index fcc5e7df..bb109dfa 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvProductDetailServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inventory/impl/InvProductDetailServiceImpl.java @@ -141,12 +141,15 @@ public class InvProductDetailServiceImpl implements InvProductDetailService { @Override - public int vailStockCount(String code) { + public int vailStockCount(String code, String invStorageCode, String invWarehouseCode, String invSpaceCode) { if (StrUtil.isEmpty(code)) { return 0; } FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); filterInvProductDetailRequest.setOriginCode(code); + filterInvProductDetailRequest.setInvStorageCode(invStorageCode); + filterInvProductDetailRequest.setInvWarehouseCode(invWarehouseCode); + filterInvProductDetailRequest.setInvSpaceCode(invSpaceCode); List datas = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); if (CollUtil.isEmpty(datas)) { filterInvProductDetailRequest.setOriginCode(null);