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());