From 3c69971c6c67149ef5ee23d305f41db188b7b5ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 16 Mar 2026 12:24:45 +0800 Subject: [PATCH] =?UTF-8?q?PDA=E4=B8=8A=E6=9E=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=BF=AE=E6=94=B91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockReceiptOrderApplicationService.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java index daad3e047..ceeaaf8b4 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -540,23 +540,23 @@ public class StockReceiptOrderApplicationService { } // 只有当获取到值时才更新attributeValue(避免覆盖已有的值) if (fieldValue != null) { - // 扩展属性1-4:优先使用 material_more_detail 的值(按 material_detail_unique_id 存储,每个明细独立) - // 避免从 ReceiptMaterialDetailPO 反射取值(主项/子项可能共用 in_unique_id,导致取到同一 in_material_detail 的错误值) + // 子项(level=2)与主项共用 in_unique_id,ReceiptMaterialDetailPO 反射取值会得到 in_material_detail 的值,覆盖子项真实数据 + // 故 batch_ref_no、invoice_no、sheet_ref_no、box_pallet_no、ext_attr 等均优先用 material_more_detail + boolean isChild = receiptMaterialDetailPO.getLevel() != null && receiptMaterialDetailPO.getLevel() == 2; boolean isExtAttr = usedFieldName != null && ( "ext_attr_1".equalsIgnoreCase(usedFieldName) || "extAttr1".equals(usedFieldName) || "ext_attr_2".equalsIgnoreCase(usedFieldName) || "extAttr2".equals(usedFieldName) || "ext_attr_3".equalsIgnoreCase(usedFieldName) || "extAttr3".equals(usedFieldName) || "ext_attr_4".equalsIgnoreCase(usedFieldName) || "extAttr4".equals(usedFieldName)); - if (isExtAttr) { - // 扩展属性:优先从 material_more_detail 表查询(按 material_detail_unique_id + batch_detail_id) + boolean preferMaterialMoreDetail = isExtAttr || isChild; + if (preferMaterialMoreDetail) { String attrFromDb = getExtAttrFromMaterialMoreDetail(receiptMaterialDetailPO.getUniqueId(), batchDetailFeignPO.getBatchDetailId()); if (StringUtils.isNotBlank(attrFromDb)) { materialMoreDetailPO.setAttributeValue(attrFromDb); - log.debug("扩展属性 batchDetailId={}, 使用 material_more_detail 的值={}", + log.debug("批次属性 batchDetailId={}, 使用 material_more_detail 的值={}", materialMoreDetailPO.getBatchDetailId(), attrFromDb); } else if (StringUtils.isNotBlank(materialMoreDetailPO.getAttributeValue())) { - // 已有值(来自 queryListChildren 的 merge)则保留 - log.debug("扩展属性 batchDetailId={}, 保留已有值={}", + log.debug("批次属性 batchDetailId={}, 保留已有值={}", materialMoreDetailPO.getBatchDetailId(), materialMoreDetailPO.getAttributeValue()); } else { materialMoreDetailPO.setAttributeValue(fieldValue);