From 0c91ea98c724f04056ee8a6c8804684574e6db47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Sat, 28 Feb 2026 14:37:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=85=8D=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/OutMaterialDetailImpl.java | 81 ++++++++++++++++++- 1 file changed, 77 insertions(+), 4 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java index aa701969d..9dd9655cf 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java @@ -542,6 +542,7 @@ public class OutMaterialDetailImpl extends ServiceImpl materialDetailDOChildList = outMaterialDetailDO.getChildren(); + BigDecimal childAllocationQuantity = BigDecimal.ZERO; if (!CollectionUtils.isEmpty(materialDetailDOChildList)){ for (OutMaterialDetailDO outMaterialDetailDOChild : materialDetailDOChildList){ OutMaterialDetail outMaterialDetailChildDb = materialDetailMap.get(outMaterialDetailDOChild.getMaterialDetailId()); @@ -596,6 +597,7 @@ public class OutMaterialDetailImpl extends ServiceImpl children = outMaterialDetail.getChildren(); + if (!CollectionUtils.isEmpty(children)) { + childrenqxfp(children,outOrderNumber,loginUser); + } + } + } + + + private synchronized void childrenqxfp(List outMaterialDetailList,String outOrderNumber,LoginUser loginUser) { + StockOutOrder stockOutOrder = stockOutOrderMapper.selectOne(new QueryWrapper().lambda().eq(StockOutOrder::getOutOrderNumber, outOrderNumber)); + for (OutMaterialDetailDO outMaterialDetail : outMaterialDetailList) { + Long materialInventoryId = outMaterialDetail.getMaterialInventoryId(); + BigDecimal allocationQuantity = outMaterialDetail.getActualQuantity(); + MaterialInventory materialInventoryPO = materialInventoryMapper.selectById(materialInventoryId); + if (materialInventoryPO != null) { + //更新库存数量 + //可用数量 + BigDecimal oldAllocationQuantity = materialInventoryPO.getAllocationQuantity(); + //冻结数量 + BigDecimal oldFreezeQuantity = materialInventoryPO.getFreezeQuantity(); + //分配后可用数量 + BigDecimal newAllocationQuantity = oldAllocationQuantity.add(allocationQuantity); + //分配后冻结数量 + BigDecimal newFreezeQuantity = oldFreezeQuantity.subtract(allocationQuantity); + materialInventoryPO.setAllocationQuantity(newAllocationQuantity); + materialInventoryPO.setFreezeQuantity(newFreezeQuantity); materialInventoryMapper.updateById(materialInventoryPO); @@ -724,7 +798,6 @@ public class OutMaterialDetailImpl extends ServiceImpl