From 4b01e4cf82bc53c0d7f3c6e868168c3067c864f6 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 27 Sep 2025 13:45:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(task):=E4=BC=98=E5=8C=96=E4=BA=BA=E8=84=B8?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E4=BB=BB=E5=8A=A1=E4=B8=AD=E7=9A=84=E6=A0=B7?= =?UTF-8?q?=E6=9C=AC=E6=8E=92=E5=BA=8F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入HashMap以支持按ID顺序排序人脸样本列表 - 在筛选前对搜索结果按分数降序排序 - 简化设备照片限制逻辑,去除冗余的时间排序步骤 - 提升匹配准确性和处理效率 --- .../basic/service/task/impl/TaskFaceServiceImpl.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java index e1241f6c..8e38d1e4 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java @@ -49,6 +49,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -251,11 +252,18 @@ public class TaskFaceServiceImpl implements TaskFaceService { .anyMatch(record -> record.getScore() > _lowThreshold); respVo.setLowThreshold(isLowThreshold); allFaceSampleIds = records.stream() + .sorted(Comparator.comparing(SearchFaceResultItem::getScore).reversed()) .map(SearchFaceResultItem::getExtData) .filter(StringUtils::isNumeric) .map(Long::valueOf) .collect(Collectors.toList()); List allFaceSampleList = faceSampleMapper.listByIds(allFaceSampleIds); + // 按照allFaceSampleIds的顺序对allFaceSampleList进行排序 + Map idIndexMap = new HashMap<>(); + for (int i = 0; i < allFaceSampleIds.size(); i++) { + idIndexMap.put(allFaceSampleIds.get(i), i); + } + allFaceSampleList.sort(Comparator.comparing(sample -> idIndexMap.get(sample.getId()))); acceptFaceSampleIds = applySampleFilters(acceptFaceSampleIds, allFaceSampleList, scenicConfig); List collect = new ArrayList<>(); for (SearchFaceResultItem item : records) { @@ -515,9 +523,8 @@ public class TaskFaceServiceImpl implements TaskFaceService { log.debug("设备照片限制:设备ID={}, 无限制,保留{}张照片", deviceId, deviceSampleIds.size()); } else { - // 按创建时间倒序排序,取前N张 + // 取前N张 List limitedSamples = deviceSamples.stream() - .sorted(Comparator.comparing(FaceSampleEntity::getCreateAt).reversed()) .limit(limitPhoto) .collect(Collectors.toList());