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