From 6b1097bcb861cecb760889ea574f4ea44cb37c49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Thu, 12 Mar 2026 19:36:17 +0800 Subject: [PATCH] =?UTF-8?q?PC=E6=94=B6=E8=B4=A7=E7=94=9F=E6=88=90=E4=B8=8A?= =?UTF-8?q?=E6=9E=B6=E7=9A=84=E6=89=B9=E6=AC=A1=E5=B1=9E=E6=80=A7=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/ReceiptMaterialDetailImpl.java | 11 +++++++++++ .../persistence/ShelfMaterialDetailImpl.java | 9 +++++++-- .../service/StockOutTaskOrderDomainService.java | 12 ++++++++++-- 3 files changed, 28 insertions(+), 4 deletions(-) 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();