diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java index 924bf806f..6003a6070 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java @@ -445,6 +445,17 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl children = receiptMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(children)) { + updateInMaterialDetailFromAttributeOption(children, batchFieldNameCache); + } + continue; + } + List materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList(); if (CollectionUtils.isEmpty(materialMoreDetailList)) { // 处理子项 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java index 41cacc98b..95b0c3310 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java @@ -69,9 +69,12 @@ public class ShelfMaterialDetailImpl extends ServiceImpl shelfMaterialDetailPOList = shelfMaterialDetailMapper.queryList(shelfMaterialDetailDO); //回显带上更多属性值(批次标签):根据物料绑定的批次属性动态显示,与收货一致 + // material_more_detail 存储时使用收货明细的 unique_id,上架明细需用 receipt_unique_id 查询 shelfMaterialDetailPOList.forEach(shelfMaterialDetailPO -> { MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); - materialMoreDetailDO.setMaterialDetailUniqueId(shelfMaterialDetailPO.getUniqueId()); + Long materialDetailUniqueIdForQuery = shelfMaterialDetailPO.getReceiptUniqueId() != null + ? shelfMaterialDetailPO.getReceiptUniqueId() : shelfMaterialDetailPO.getUniqueId(); + materialMoreDetailDO.setMaterialDetailUniqueId(materialDetailUniqueIdForQuery); List materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO); if (CollectionUtils.isEmpty(materialMoreDetailList)) { AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(shelfMaterialDetailPO.getMaterialBaseInfoId()); @@ -92,7 +95,9 @@ public class ShelfMaterialDetailImpl extends ServiceImpl children = getChildren(materialDetailPO.getUniqueId(), shelfMaterialDetailPOList, 2); children.forEach(childrenDetailPO -> { MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); - materialMoreDetailDO.setMaterialDetailUniqueId(childrenDetailPO.getUniqueId()); + Long materialDetailUniqueIdForQuery = childrenDetailPO.getReceiptUniqueId() != null + ? childrenDetailPO.getReceiptUniqueId() : childrenDetailPO.getUniqueId(); + materialMoreDetailDO.setMaterialDetailUniqueId(materialDetailUniqueIdForQuery); List materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO); if (CollectionUtils.isEmpty(materialMoreDetailList)) { AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(childrenDetailPO.getMaterialBaseInfoId()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/service/StockOutTaskOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/service/StockOutTaskOrderDomainService.java index bfd73e3f9..2b81e2753 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/service/StockOutTaskOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/service/StockOutTaskOrderDomainService.java @@ -306,8 +306,16 @@ public class StockOutTaskOrderDomainService { if (ObjectUtil.isNull(materialInventoryOldDb)){ throw new ServiceException("物料原库位下的物料库存不存在,不能进行出库"); } - if (materialInventoryOldDb.getInventoryQuantity().compareTo(actualQuantity) < 0){ - throw new ServiceException("物料原库位下的物料库存不足,不能进行出库"); + BigDecimal invQty = materialInventoryOldDb.getInventoryQuantity() != null ? materialInventoryOldDb.getInventoryQuantity() : BigDecimal.ZERO; + if (invQty.compareTo(actualQuantity) < 0){ + String hint = ""; + if (invQty.compareTo(BigDecimal.ZERO) == 0 && materialInventoryOldDb.getFreezeQuantity() != null + && materialInventoryOldDb.getFreezeQuantity().compareTo(BigDecimal.ZERO) > 0) { + hint = String.format("(该库位库存为0,冻结数量=%s,可能需先解冻)", materialInventoryOldDb.getFreezeQuantity()); + } else { + hint = String.format("库位库存=%s,拣货数量=%s", invQty, actualQuantity); + } + throw new ServiceException("物料原库位下的物料库存不足,不能进行出库。" + hint + ",物料=" + taskPickingMaterialDetailDO.getMaterialName() + ",库位=" + taskPickingMaterialDetailDO.getStorageLocationCode()); } //原库位 MaterialInventoryDO materialInventoryDOOld = new MaterialInventoryDO();