From cd5bca19f6dc42e10f11b26cb865956cd84bc760 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 8 Apr 2026 14:18:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor(wms):=20=E4=BC=98=E5=8C=96=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E4=B8=8D=E5=8C=B9=E9=85=8D=E6=95=B0=E6=8D=AE=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WmsMaterialCoilMapper中新增selectMismatchedItemCoils方法用于查询itemId和itemType不匹配的钢卷 - 在WmsMaterialCoilMapper.xml中添加对应的SQL查询语句,使用子查询直接筛选不匹配的数据 - 重构WmsMaterialCoilServiceImpl中的queryMismatchedItemCoils方法,改用SQL子查询替代原来的多次数据库查询 - 移除原有的批量验证逻辑,直接通过数据库层面进行数据校验 - 优化性能,减少不必要的数据库访问次数 - 使用批量填充方式处理关联对象信息 --- .../com/klp/mapper/WmsMaterialCoilMapper.java | 6 ++ .../impl/WmsMaterialCoilServiceImpl.java | 79 +++---------------- .../mapper/klp/WmsMaterialCoilMapper.xml | 15 ++++ 3 files changed, 33 insertions(+), 67 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 96fc3270..f2e71842 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java @@ -91,5 +91,11 @@ List selectDeliveryExportListByCoilIds(@Param(" List selectCoilTrimStatistics(); List selectCategoryWidthStatistics(); + + /** + * 查询itemId和itemType不匹配的钢卷 + * @return 不匹配的钢卷列表 + */ + List selectMismatchedItemCoils(); } 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 f9825c4f..3354fd6a 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 @@ -4922,75 +4922,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { */ @Override public List queryMismatchedItemCoils() { - // 查询所有钢卷 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(WmsMaterialCoil::getDelFlag, 0); - queryWrapper.isNotNull(WmsMaterialCoil::getItemId); - queryWrapper.isNotNull(WmsMaterialCoil::getItemType); - List allCoils = baseMapper.selectList(queryWrapper); - - if (allCoils == null || allCoils.isEmpty()) { + // 用SQL子查询直接找出itemId和itemType不匹配的钢卷 + List mismatchedCoils = baseMapper.selectMismatchedItemCoils(); + + if (mismatchedCoils == null || mismatchedCoils.isEmpty()) { return new ArrayList<>(); } - - // 收集所有需要校验的itemId,按itemType分组 - Set rawMaterialIds = new HashSet<>(); - Set productIds = new HashSet<>(); - - for (WmsMaterialCoil coil : allCoils) { - if ("raw_material".equals(coil.getItemType())) { - rawMaterialIds.add(coil.getItemId()); - } else if ("product".equals(coil.getItemType())) { - productIds.add(coil.getItemId()); - } - } - - // 批量查询原材料和产品,找出存在的ID - Set existingRawMaterialIds = new HashSet<>(); - if (!rawMaterialIds.isEmpty()) { - List rawMaterials = rawMaterialMapper.selectBatchIds(rawMaterialIds); - existingRawMaterialIds = rawMaterials.stream() - .map(WmsRawMaterial::getRawMaterialId) - .collect(Collectors.toSet()); - } - - Set existingProductIds = new HashSet<>(); - if (!productIds.isEmpty()) { - List products = productMapper.selectBatchIds(productIds); - existingProductIds = products.stream() - .map(WmsProduct::getProductId) - .collect(Collectors.toSet()); - } - - // 筛选出不匹配的钢卷 - List mismatchedCoils = new ArrayList<>(); - for (WmsMaterialCoil coil : allCoils) { - boolean isMismatched = false; - - if ("raw_material".equals(coil.getItemType())) { - // 检查原材料ID是否存在 - if (!existingRawMaterialIds.contains(coil.getItemId())) { - isMismatched = true; - } - } else if ("product".equals(coil.getItemType())) { - // 检查产品ID是否存在 - if (!existingProductIds.contains(coil.getItemId())) { - isMismatched = true; - } - } else { - // itemType不是预期值,也视为不匹配 - isMismatched = true; - } - - if (isMismatched) { - // 转换为Vo并填充关联信息 - WmsMaterialCoilVo vo = BeanUtil.toBean(coil, WmsMaterialCoilVo.class); - fillRelatedObjects(vo); - mismatchedCoils.add(vo); - } - } - - return mismatchedCoils; + + // 批量填充关联信息 + List voList = mismatchedCoils.stream() + .map(coil -> BeanUtil.toBean(coil, WmsMaterialCoilVo.class)) + .collect(Collectors.toList()); + fillRelatedObjectsBatch(voList); + + return voList; } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index 07a10221..5850a0b6 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -881,5 +881,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY category, isTrimmed, width + + +