From d71b1c4959173243187006ea8d342764b2488c97 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 6 May 2026 18:05:15 +0800 Subject: [PATCH] =?UTF-8?q?perf(wms):=20=E4=BC=98=E5=8C=96=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E8=B4=A8=E9=87=8F=E6=94=B9=E5=88=A4=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WmsCoilQualityRejudgeMapper中新增原生SQL查询方法selectMapsBySql - 添加对应的XML映射配置执行动态SQL查询 - 将原有的Java端分组逻辑改为数据库端SQL聚合查询 - 使用内连接和子查询直接获取每个钢卷的最新改判原因 - 避免大量数据传输和客户端分组处理,提升查询效率 --- .../mapper/WmsCoilQualityRejudgeMapper.java | 12 ++++++ .../impl/WmsMaterialCoilServiceImpl.java | 41 ++++++++++--------- .../klp/WmsCoilQualityRejudgeMapper.xml | 4 ++ 3 files changed, 37 insertions(+), 20 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsCoilQualityRejudgeMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsCoilQualityRejudgeMapper.java index 38cb425e..2abd3bad 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsCoilQualityRejudgeMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsCoilQualityRejudgeMapper.java @@ -3,6 +3,10 @@ package com.klp.mapper; import com.klp.domain.WmsCoilQualityRejudge; import com.klp.domain.vo.WmsCoilQualityRejudgeVo; import com.klp.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; /** * 钢卷质量改判记录Mapper接口 @@ -12,4 +16,12 @@ import com.klp.common.core.mapper.BaseMapperPlus; */ public interface WmsCoilQualityRejudgeMapper extends BaseMapperPlus { + /** + * 执行原生SQL查询,返回Map列表 + * + * @param sql 原生SQL语句 + * @return Map列表 + */ + List> selectMapsBySql(@Param("sql") String sql); + } 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 9099e510..8bcb3f4c 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 @@ -5318,28 +5318,29 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } - // 4. 批量查询改判原因(最新的一条) + // 4. 批量查询改判原因(最新的一条) - 使用SQL优化 Map rejudgeReasonMap = new HashMap<>(); if (!coilIds.isEmpty()) { - LambdaQueryWrapper rejudgeQuery = new LambdaQueryWrapper<>(); - rejudgeQuery.in(WmsCoilQualityRejudge::getCoilId, coilIds); - rejudgeQuery.eq(WmsCoilQualityRejudge::getDelFlag, "0"); - rejudgeQuery.orderByDesc(WmsCoilQualityRejudge::getCreateTime); - List allRejudges = wmsCoilQualityRejudgeMapper.selectList(rejudgeQuery); - - if (allRejudges != null && !allRejudges.isEmpty()) { - // 按钢卷ID分组,每组取最新的一条 - Map> rejudgeGroupMap = allRejudges.stream() - .collect(Collectors.groupingBy(WmsCoilQualityRejudge::getCoilId)); - - for (Map.Entry> entry : rejudgeGroupMap.entrySet()) { - List rejudges = entry.getValue(); - if (!rejudges.isEmpty()) { - // 由于已按创建时间降序排列,第一条就是最新的 - WmsCoilQualityRejudge latestRejudge = rejudges.get(0); - if (latestRejudge.getRejudgeReason() != null) { - rejudgeReasonMap.put(entry.getKey(), latestRejudge.getRejudgeReason()); - } + // 使用原生SQL查询每个钢卷的最新改判原因,避免Java分组处理 + String coilIdsStr = coilIds.stream().map(String::valueOf).collect(Collectors.joining(",")); + String sql = "SELECT t1.coil_id, t1.rejudge_reason " + + "FROM wms_coil_quality_rejudge t1 " + + "INNER JOIN (" + + " SELECT coil_id, MAX(create_time) as max_time " + + " FROM wms_coil_quality_rejudge " + + " WHERE coil_id IN (" + coilIdsStr + ") " + + " AND del_flag = '0' " + + " GROUP BY coil_id" + + ") t2 ON t1.coil_id = t2.coil_id AND t1.create_time = t2.max_time " + + "WHERE t1.del_flag = '0' AND t1.rejudge_reason IS NOT NULL"; + + List> results = wmsCoilQualityRejudgeMapper.selectMapsBySql(sql); + if (results != null) { + for (Map result : results) { + Long coilId = (Long) result.get("coil_id"); + String rejudgeReason = (String) result.get("rejudge_reason"); + if (coilId != null && rejudgeReason != null) { + rejudgeReasonMap.put(coilId, rejudgeReason); } } } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsCoilQualityRejudgeMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsCoilQualityRejudgeMapper.xml index 93cdf0b3..73e3a317 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsCoilQualityRejudgeMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsCoilQualityRejudgeMapper.xml @@ -18,5 +18,9 @@ + +