From 5fec54ac63c366f13dcee0a2c4c2e23976f44f14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Fri, 31 Jul 2026 16:41:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockInOrderApplicationService.java | 68 ++++++++++++++++++- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java index 117efb435..f07aca537 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java @@ -545,9 +545,71 @@ public class StockInOrderApplicationService { info.setKhdm(userNcCode); List materialDetailList = info.getMaterialDetailList(); if (materialDetailList != null && !materialDetailList.isEmpty()) { - for (InMaterialDetailPO inMaterialDetailPO : materialDetailList) { - // TODO: 设置物料详情信息 - inMaterialDetailPO.setKhdm(userNcCode); + // 收集所有有效的物料基础信息ID + Set materialBaseInfoIdSet = new HashSet<>(); + for (InMaterialDetailPO detail : materialDetailList) { + if (detail.getMaterialBaseInfoId() != null && detail.getMaterialBaseInfoId() > 0) { + materialBaseInfoIdSet.add(detail.getMaterialBaseInfoId()); + } + } + + // 批量查询物料基础信息,try-catch保护,防止没有ID时NPE + Map materialBaseInfoMap = new HashMap<>(); + for (Long materialBaseInfoId : materialBaseInfoIdSet) { + try { + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(materialBaseInfoId); + if (materialBaseInfoPO != null) { + materialBaseInfoMap.put(materialBaseInfoId, materialBaseInfoPO); + } + } catch (Exception e) { + log.warn("获取物料基础信息失败,物料基础信息ID:{},错误:{}", materialBaseInfoId, e.getMessage()); + } + } + + // 填充明细的物料字段(物料编码、抄码、条码、单位等) + Long shipperId = info.getShipperId(); + for (InMaterialDetailPO detail : materialDetailList) { + detail.setKhdm(userNcCode); + Long materialBaseInfoId = detail.getMaterialBaseInfoId(); + MaterialBaseInfoPO materialBaseInfoPO = null; + + if (materialBaseInfoId != null && materialBaseInfoId > 0) { + materialBaseInfoPO = materialBaseInfoMap.get(materialBaseInfoId); + } + // 兜底:ID=0时用物料名称反查 + if (materialBaseInfoPO == null && StringUtils.isNotBlank(detail.getMaterialName())) { + try { + MaterialBaseInfoDO queryDO = new MaterialBaseInfoDO(); + queryDO.setMaterialName(detail.getMaterialName().trim()); + if (shipperId != null && shipperId > 0) { + queryDO.setShipperId(shipperId); + } + List list = materialBaseInfoService.queryList(queryDO); + if (list != null && !list.isEmpty()) { + materialBaseInfoPO = list.get(0); + } + } catch (Exception e) { + log.warn("兜底反查物料失败,物料名:{}", detail.getMaterialName()); + } + } + + if (materialBaseInfoPO != null) { + if (StringUtils.isBlank(detail.getMaterialCode())) { + detail.setMaterialCode(materialBaseInfoPO.getMaterialCode()); + } + if (StringUtils.isBlank(detail.getBarCode())) { + detail.setBarCode(materialBaseInfoPO.getBarCode()); + } + if (StringUtils.isBlank(detail.getUnitCode())) { + detail.setUnitCode(materialBaseInfoPO.getUnitCode()); + } + if (StringUtils.isBlank(detail.getUnitName())) { + detail.setUnitName(materialBaseInfoPO.getUnitName()); + } + detail.setPackId(materialBaseInfoPO.getPackId()); + detail.setPackCode(materialBaseInfoPO.getPackCode()); + detail.setPackName(materialBaseInfoPO.getPackName()); + } } info.setMaterialDetailList(materialDetailList); }