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 @@ + +