From 4daa5a86378368bd462a06e26b66c894287eeea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A1=BE=E5=90=9B=E7=A6=B9?= <2673609096@qq.com> Date: Mon, 15 Sep 2025 12:44:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BA=AF=E6=BA=90=E7=A0=81=E5=88=86=E7=BB=84?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TraceabilityCodeMapper.java | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/traceabilitycode/TraceabilityCodeMapper.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/traceabilitycode/TraceabilityCodeMapper.java index de4b964a..228eb88a 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/traceabilitycode/TraceabilityCodeMapper.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/traceabilitycode/TraceabilityCodeMapper.java @@ -8,8 +8,7 @@ import cn.iocoder.yudao.module.farm.dal.dataobject.traceabilitycode.Traceability import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -108,8 +107,34 @@ public interface TraceabilityCodeMapper extends BaseMapperX return new PageResult<>(Collections.emptyList(), 0L); } + // 按CodeOutBatch去重,确保每个批次只保留一条记录(保留最新的) + Map uniqueBatchMap = latestRecords.stream() + .filter(record -> record.getCodeOutBatch() != null) // 过滤掉批次为空的记录 + .collect(Collectors.toMap( + TraceabilityCodeDO::getCodeOutBatch, + record -> record, + (existing, replacement) -> { + // 如果存在重复批次,保留创建时间更新的记录 + if (replacement.getCreateTime() != null && existing.getCreateTime() != null) { + return replacement.getCreateTime().isAfter(existing.getCreateTime()) ? replacement : existing; + } + return existing.getCreateTime() != null ? existing : replacement; + } + )); + + // 转换为去重后的列表 + List uniqueRecords = new ArrayList<>(uniqueBatchMap.values()); + + // 按创建时间倒序排序 + uniqueRecords.sort((a, b) -> { + if (a.getCreateTime() == null && b.getCreateTime() == null) return 0; + if (a.getCreateTime() == null) return 1; + if (b.getCreateTime() == null) return -1; + return b.getCreateTime().compareTo(a.getCreateTime()); + }); + // 提取ID列表 - List ids = latestRecords.stream() + List ids = uniqueRecords.stream() .map(TraceabilityCodeDO::getId) .collect(Collectors.toList());