From 221e5cda75650603a9d3901791df9439a3d9b5ba Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 28 Jan 2026 11:50:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E4=BC=98=E5=8C=96=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E9=87=8D=E5=A4=8D=E5=8D=B7=E5=8F=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=80=9F=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WmsMaterialCoilMapper中新增selectDuplicateEnterCoilNoList和selectDuplicateCurrentCoilNoList方法 - 在WmsMaterialCoilMapper.xml中实现两个SQL查询,分别查找重复入场卷号和当前卷号的钢卷信息 - 优化WmsMaterialCoilServiceImpl中的getDuplicateCoilGroups方法,使用新的数据库查询替代原有流式处理 - 移除不再使用的toVoBasic私有方法和相关VO转换逻辑 - 直接返回完整的WmsMaterialCoilVo对象,减少数据转换步骤 --- .../com/klp/mapper/WmsMaterialCoilMapper.java | 14 +++ .../impl/WmsMaterialCoilServiceImpl.java | 71 +++++------- .../mapper/klp/WmsMaterialCoilMapper.xml | 102 ++++++++++++++++++ 3 files changed, 142 insertions(+), 45 deletions(-) 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 ac823082..36397d25 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java @@ -54,6 +54,20 @@ public interface WmsMaterialCoilMapper extends BaseMapperPlus selectExportList(@Param("ew")QueryWrapper lqw); + /** + * 查询重复入场卷号的钢卷信息 + * + * @return 重复入场卷号的钢卷列表 + */ + List selectDuplicateEnterCoilNoList(); + + /** + * 查询重复当前卷号的钢卷信息 + * + * @return 重复当前卷号的钢卷列表 + */ + List selectDuplicateCurrentCoilNoList(); + /** * 更新钢卷发货撤回:将发货时间置空,状态改为指定值 * 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 fb7b7a69..96725f70 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 @@ -618,69 +618,50 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { @Override public Map getDuplicateCoilGroups() { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(WmsMaterialCoil::getDataType, 1); - lqw.eq(WmsMaterialCoil::getDelFlag, 0); - List all = baseMapper.selectList(lqw); + // 使用优化的数据库查询方法,直接获取重复入场卷号的钢卷信息 + List enterDuplicates = baseMapper.selectDuplicateEnterCoilNoList(); - Map> enterGrouped = all.stream() + // 使用优化的数据库查询方法,直接获取重复当前卷号的钢卷信息 + List currentDuplicates = baseMapper.selectDuplicateCurrentCoilNoList(); + + // 按入场卷号分组重复项 + Map> enterGrouped = enterDuplicates.stream() .filter(e -> StringUtils.isNotBlank(e.getEnterCoilNo())) - .collect(Collectors.groupingBy(WmsMaterialCoil::getEnterCoilNo)); - Map> currentGrouped = all.stream() + .collect(Collectors.groupingBy(WmsMaterialCoilVo::getEnterCoilNo)); + + // 按当前卷号分组重复项 + Map> currentGrouped = currentDuplicates.stream() .filter(e -> StringUtils.isNotBlank(e.getCurrentCoilNo())) - .collect(Collectors.groupingBy(WmsMaterialCoil::getCurrentCoilNo)); + .collect(Collectors.groupingBy(WmsMaterialCoilVo::getCurrentCoilNo)); + // 构建入场卷号重复组 List> enterGroups = enterGrouped.entrySet().stream() - .filter(en -> en.getValue() != null && en.getValue().size() > 1) - .map(en -> { - List vos = en.getValue().stream().map(this::toVoBasic).collect(Collectors.toList()); - Map m = new HashMap<>(); - m.put("enterCoilNo", en.getKey()); - m.put("coils", vos); - return m; + .filter(entry -> entry.getValue() != null && entry.getValue().size() > 1) + .map(entry -> { + Map group = new HashMap<>(); + group.put("enterCoilNo", entry.getKey()); + group.put("coils", entry.getValue()); + return group; }) .collect(Collectors.toList()); + // 构建当前卷号重复组 List> currentGroups = currentGrouped.entrySet().stream() - .filter(en -> en.getValue() != null && en.getValue().size() > 1) - .map(en -> { - List vos = en.getValue().stream().map(this::toVoBasic).collect(Collectors.toList()); - Map m = new HashMap<>(); - m.put("currentCoilNo", en.getKey()); - m.put("coils", vos); - return m; + .filter(entry -> entry.getValue() != null && entry.getValue().size() > 1) + .map(entry -> { + Map group = new HashMap<>(); + group.put("currentCoilNo", entry.getKey()); + group.put("coils", entry.getValue()); + return group; }) .collect(Collectors.toList()); - // 可选:批量填充关联对象信息 - List allVos = new ArrayList<>(); - for (Map g : enterGroups) { - Object list = g.get("coils"); - if (list instanceof List) { - allVos.addAll((List) list); - } - } - for (Map g : currentGroups) { - Object list = g.get("coils"); - if (list instanceof List) { - allVos.addAll((List) list); - } - } - if (!allVos.isEmpty()) { - fillRelatedObjectsBatch(allVos); - } - Map result = new HashMap<>(); result.put("enterGroups", enterGroups); result.put("currentGroups", currentGroups); return result; } - private WmsMaterialCoilVo toVoBasic(WmsMaterialCoil e) { - WmsMaterialCoilVo vo = new WmsMaterialCoilVo(); - BeanUtils.copyProperties(e, vo); - return vo; - } /** * 构建 OR 连接的 LIKE 子句,使用 MyBatis-Plus apply 的 {index} 占位符并将参数加入 args。 diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index 4915f40f..45bc206a 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -441,6 +441,108 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.customSqlSegment} + + + + + + UPDATE wms_material_coil