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);