From 01128d293e6796a03bc79bbcbeea389962652759 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 23 Jun 2026 10:04:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=89=80=E6=9C=89=E7=9A=84list?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E5=8E=9F=E6=96=99=E5=8E=9A?= =?UTF-8?q?=E5=BA=A6=E4=BB=A5=E5=8F=8A=E5=AF=BC=E5=87=BA=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8E=9F=E6=96=99=E5=8E=9A=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 WmsMaterialCoilAllExportVo 和 WmsMaterialCoilExportVo 中新增原料厚度字段 - 更新控制器中的列配置映射,添加原料厚度显示 - 实现批量查询热轧卷板原料厚度映射功能 - 重构原料厚度填充逻辑为通用方法,支持多种 VO 类型 - 在多个导出功能中集成原料厚度数据回填 - 更新 .gitignore 添加 *.json 文件忽略规则 - 优化数据库查询性能,减少重复查询操作 --- .gitignore | 3 +- .../controller/WmsMaterialCoilController.java | 1 + .../domain/vo/WmsMaterialCoilAllExportVo.java | 6 ++ .../domain/vo/WmsMaterialCoilExportVo.java | 6 ++ .../impl/WmsMaterialCoilServiceImpl.java | 80 +++++++++++++++---- 5 files changed, 80 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 69aac756..609afbed 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,5 @@ nbdist/ /tables/ *.local.* *.py -*.pyc \ No newline at end of file +*.pyc +*.json diff --git a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java index 953b30e1..361dc355 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -207,6 +207,7 @@ public class WmsMaterialCoilController extends BaseController { columns.put("theoreticalThickness", "理论厚度"); columns.put("scheduleThickness", "排产厚度"); columns.put("theoreticalLength", "理论长度"); + columns.put("rawMaterialThickness", "原料厚度"); columns.put("chromePlateCoilNo", "镀铬卷号"); return R.ok(columns); } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java index 969b162d..0c0ef5ca 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java @@ -221,4 +221,10 @@ public class WmsMaterialCoilAllExportVo { */ @ExcelProperty(value = "合同编号") private String contractNo; + + /** + * 原料厚度(从热轧卷板原料规格中提取) + */ + @ExcelProperty(value = "原料厚度") + private String rawMaterialThickness; } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java index 6b1b1f3a..41408ad5 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java @@ -239,4 +239,10 @@ public class WmsMaterialCoilExportVo { */ @ExcelProperty(value = "合同编号") private String contractNo; + + /** + * 原料厚度(从热轧卷板原料规格中提取) + */ + @ExcelProperty(value = "原料厚度") + private String rawMaterialThickness; } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index cb60840b..e2d28f94 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -597,6 +597,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { fillBindInfoForPage(bindRecords); fillPageCommonFields(bindRecords); + fillRawMaterialThickness(bindRecords); Page bindResult = new Page<>(result.getCurrent(), result.getSize(), result.getTotal()); bindResult.setRecords(bindRecords); @@ -618,6 +619,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 填充通用字段(昵称等) fillPageCommonFields(records); + fillRawMaterialThickness(records); // 批量填充订单关联信息 fillOrderRelForPage(records); @@ -639,6 +641,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 填充通用字段(昵称等) fillPageCommonFields(records); + fillRawMaterialThickness(records); // 批量查询每个钢卷的最新一条改判记录 List latestRejudges = @@ -792,25 +795,27 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } /** - * 批量填充原料厚度:根据入场卷号查询热轧卷板原料的规格,提取*前面的数字作为厚度 - *

逻辑:同一个 enterCoilNo 下,找 parent_coil_id 为空、itemType=raw_material、 - * 且关联的 wms_raw_material.raw_material_name 包含"热轧卷板"的记录, - * 取 specification 中 * 前面的数字(如 0.1*1000 → 0.1)

+ * 批量查询热轧卷板原料厚度映射:入场卷号 → 厚度 + *

根据入场卷号列表,查 parent_coil_id 为空、itemType=raw_material、 + * 且 raw_material_name 包含"热轧卷板"的记录,取 specification 中 * 前面的数字

+ * + * @param enterCoilNos 入场卷号集合 + * @return enterCoilNo → 厚度 的映射(如 "25100001" → "0.1") */ - private void fillRawMaterialThickness(List records) { - List enterCoilNos = records.stream() - .map(WmsMaterialCoilVo::getEnterCoilNo) + private Map buildRawMaterialThicknessMap(Collection enterCoilNos) { + if (enterCoilNos == null || enterCoilNos.isEmpty()) { + return Collections.emptyMap(); + } + List distinctNos = enterCoilNos.stream() .filter(StringUtils::isNotBlank) .distinct() .collect(Collectors.toList()); - - if (enterCoilNos.isEmpty()) { - return; + if (distinctNos.isEmpty()) { + return Collections.emptyMap(); } - - List> rawList = baseMapper.selectRawMaterialThicknessByEnterCoilNos(enterCoilNos); + List> rawList = baseMapper.selectRawMaterialThicknessByEnterCoilNos(distinctNos); if (rawList == null || rawList.isEmpty()) { - return; + return Collections.emptyMap(); } // 构建 enterCoilNo → 厚度 的映射 @@ -825,8 +830,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } } + return thickMap; + } + + /** + * 批量填充原料厚度到 WmsMaterialCoilVo 列表 + */ + private void fillRawMaterialThickness(List records) { + List enterCoilNos = records.stream() + .map(WmsMaterialCoilVo::getEnterCoilNo) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + + Map thickMap = buildRawMaterialThicknessMap(enterCoilNos); - // 回填到每条记录 for (WmsMaterialCoilVo vo : records) { String thickness = thickMap.get(vo.getEnterCoilNo()); if (thickness != null) { @@ -835,6 +852,27 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } + /** + * 通用原料厚度回填(适用于非 WmsMaterialCoilVo 子类的导出 VO) + */ + private void fillRawMaterialThicknessForExport(List list, + java.util.function.Function enterCoilNoGetter, + java.util.function.BiConsumer thicknessSetter) { + List enterCoilNos = list.stream() + .map(enterCoilNoGetter) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + + Map thickMap = buildRawMaterialThicknessMap(enterCoilNos); + + for (T item : list) { + String thickness = thickMap.get(enterCoilNoGetter.apply(item)); + if (thickness != null) { + thicknessSetter.accept(item, thickness); + } + } + } + /** * 统计筛选条件下的全量汇总数据(高性能:只查sum/count) */ @@ -3736,6 +3774,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { vo.setActualWarehouseName(null); } }); + fillRawMaterialThicknessForExport(wmsMaterialCoilExportVos, + WmsMaterialCoilExportVo::getEnterCoilNo, WmsMaterialCoilExportVo::setRawMaterialThickness); return wmsMaterialCoilExportVos; } /** @@ -3766,6 +3806,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } + fillRawMaterialThicknessForExport(exportVoList, + WmsMaterialCoilAllExportVo::getEnterCoilNo, WmsMaterialCoilAllExportVo::setRawMaterialThickness); return exportVoList; } /** @@ -3805,6 +3847,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { vo.setActualWarehouseName(null); } }); + fillRawMaterialThicknessForExport(wmsMaterialCoilDeliveryExportVos, + WmsMaterialCoilDeliveryExportVo::getEnterCoilNo, WmsMaterialCoilDeliveryExportVo::setRawMaterialThickness); return wmsMaterialCoilDeliveryExportVos; } @@ -3839,7 +3883,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (coilIds.isEmpty()) { return Collections.emptyList(); } - return baseMapper.selectAnnealExportListByCoilIds(coilIds); + List list = baseMapper.selectAnnealExportListByCoilIds(coilIds); + fillRawMaterialThicknessForExport(list, + WmsMaterialCoilAnnealExportVo::getEnterCoilNo, WmsMaterialCoilAnnealExportVo::setRawMaterialThickness); + return list; } private List parseCsvLongs(String csv) { @@ -6131,6 +6178,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { throw new RuntimeException("未找到符合条件的钢卷数据"); } + // 1.1 填充原料厚度 + fillRawMaterialThickness(coilList); + // 2. 收集所有钢卷ID List coilIds = coilList.stream() .map(WmsMaterialCoilVo::getCoilId)