refactor(task): 优化人脸识别时间范围逻辑

- 修改了景区场景下的人脸识别时间范围计算方式
- 从 acceptFaceSampleIds 中筛选出在指定时间范围内的样本
- 优化了代码结构,提高了可读性和可维护性
This commit is contained in:
2025-09-08 20:51:50 +08:00
parent 7d171b5003
commit 48eff52a47

View File

@@ -45,6 +45,7 @@ import com.aliyuncs.IAcsClient;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -222,13 +223,18 @@ public class TaskFaceServiceImpl implements TaskFaceService {
if (StringUtils.isNumeric(dbName)) { // 景区
allFaceSampleList = faceSampleMapper.listByIds(allFaceSampleIds);
if (!acceptFaceSampleIds.isEmpty()) {
Long firstFaceSampleId = acceptFaceSampleIds.getFirst();
Optional<FaceSampleEntity> firstFaceSample = allFaceSampleList.stream().filter(faceSample -> faceSample.getId().equals(firstFaceSampleId)).findAny();
List<Long> finalAcceptFaceSampleIds = acceptFaceSampleIds;
Optional<FaceSampleEntity> firstFaceSample = allFaceSampleList.stream()
.filter(faceSample -> finalAcceptFaceSampleIds.contains(faceSample.getId()))
.sorted(Comparator.comparing(FaceSampleEntity::getCreateAt).reversed())
.findAny();
// Long firstFaceSampleId = acceptFaceSampleIds.getFirst();
// Optional<FaceSampleEntity> firstFaceSample = allFaceSampleList.stream().filter(faceSample -> faceSample.getId().equals(firstFaceSampleId)).findAny();
if (firstFaceSample.isPresent()) {
if (tourMinutes > 0) {
List<FaceSampleEntity> acceptFaceSampleList = faceSampleMapper.listByIds(acceptFaceSampleIds);
Date startDate = DateUtil.offsetMinute(firstFaceSample.get().getCreateAt(), -tourMinutes/2);
Date endDate = DateUtil.offsetMinute(firstFaceSample.get().getCreateAt(), tourMinutes/2);
Date startDate = DateUtil.offsetMinute(firstFaceSample.get().getCreateAt(), -tourMinutes);
Date endDate = DateUtil.offsetMinute(firstFaceSample.get().getCreateAt(), 0);
acceptFaceSampleIds = acceptFaceSampleList.stream()
.filter(faceSample -> faceSample.getCreateAt().after(startDate) && faceSample.getCreateAt().before(endDate))
.map(FaceSampleEntity::getId)
@@ -238,7 +244,7 @@ public class TaskFaceServiceImpl implements TaskFaceService {
log.info("时间范围逻辑:景区未限制");
}
} else {
log.info("时间范围逻辑:最高匹配ID:{},未找到", firstFaceSampleId);
log.info("时间范围逻辑:最高匹配ID:{},未找到", "--");
}
}
}