From 416202360b73fab13a7651303b8f90b7eb439bcc Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 22 Jun 2026 18:04:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(material):=20=E6=B7=BB=E5=8A=A0=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E5=8E=9F=E6=96=99=E5=8E=9A=E5=BA=A6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8F=90=E5=8F=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 WmsMaterialCoilMapper.selectRawMaterialThicknessByEnterCoilNos 方法 - 添加 MyBatis 映射查询热轧卷板原料规格 - 在 WmsMaterialCoilServiceImpl 中实现 fillRawMaterialThickness 方法 - 自动从规格字段提取 * 前的数字作为厚度值 - 在 WmsMaterialCoilVo 中新增 rawMaterialThickness 字段 - 分页查询时自动填充原料厚度信息 --- .../com/klp/domain/vo/WmsMaterialCoilVo.java | 5 +++ .../com/klp/mapper/WmsMaterialCoilMapper.java | 8 ++++ .../impl/WmsMaterialCoilServiceImpl.java | 45 +++++++++++++++++++ .../mapper/klp/WmsMaterialCoilMapper.xml | 17 +++++++ 4 files changed, 75 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java index bef7e52b..790c121f 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java @@ -364,5 +364,10 @@ public class WmsMaterialCoilVo extends BaseEntity { * 合同编号 */ private String contractNo; + + /** + * 原料厚度(从热轧卷板原料的规格中提取*前面的数字,如 0.1*1000 → 0.1) + */ + private String rawMaterialThickness; } diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java index c3753533..e8b5e8dc 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java @@ -172,5 +172,13 @@ public interface WmsMaterialCoilMapper extends BaseMapperPlus selectByParentCoilIds(@Param("coilIds") java.util.Collection coilIds); + /** + * 根据入场钢卷号列表批量查询热轧卷板原料的规格 + * 用于提取原料厚度:同一个入场卷号下,parent_coil_id 为空且 item_type='raw_material' 且 raw_material_name 包含"热轧卷板" + * + * @param enterCoilNos 入场钢卷号列表 + * @return 列表,每项包含 enterCoilNo 和 specification + */ + List> selectRawMaterialThicknessByEnterCoilNos(@Param("enterCoilNos") java.util.Collection enterCoilNos); } 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 988d41d6..cb60840b 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 @@ -577,6 +577,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { return TableDataInfo.build(result); } fillPageCommonFields(records); + fillRawMaterialThickness(records); return TableDataInfo.build(result); } @@ -790,6 +791,50 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } + /** + * 批量填充原料厚度:根据入场卷号查询热轧卷板原料的规格,提取*前面的数字作为厚度 + *

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

+ */ + private void fillRawMaterialThickness(List records) { + List enterCoilNos = records.stream() + .map(WmsMaterialCoilVo::getEnterCoilNo) + .filter(StringUtils::isNotBlank) + .distinct() + .collect(Collectors.toList()); + + if (enterCoilNos.isEmpty()) { + return; + } + + List> rawList = baseMapper.selectRawMaterialThicknessByEnterCoilNos(enterCoilNos); + if (rawList == null || rawList.isEmpty()) { + return; + } + + // 构建 enterCoilNo → 厚度 的映射 + Map thickMap = new HashMap<>(); + for (Map row : rawList) { + String enterCoilNo = row.get("enterCoilNo"); + String spec = row.get("specification"); + if (StringUtils.isNotBlank(enterCoilNo) && StringUtils.isNotBlank(spec)) { + int starIdx = spec.indexOf('*'); + if (starIdx > 0) { + thickMap.put(enterCoilNo, spec.substring(0, starIdx)); + } + } + } + + // 回填到每条记录 + for (WmsMaterialCoilVo vo : records) { + String thickness = thickMap.get(vo.getEnterCoilNo()); + if (thickness != null) { + vo.setRawMaterialThickness(thickness); + } + } + } + /** * 统计筛选条件下的全量汇总数据(高性能:只查sum/count) */ diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index 1a09e8d5..3316e77f 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -1122,5 +1122,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + +