You've already forked FrameTour-BE
feat(face):优化视频切分任务筛选逻辑
- 按设备ID分组并按创建时间倒序排序 - 根据设备配置限制视频数量 - 修复日志中原始
This commit is contained in:
@@ -81,6 +81,7 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.ycwl.basic.constant.FaceConstant.FACE_LOW_THRESHOLD_PFX;
|
||||
import static com.ycwl.basic.constant.FaceConstant.FACE_RECOGNITION_COUNT_PFX;
|
||||
@@ -490,7 +491,21 @@ public class FaceServiceImpl implements FaceService {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return sourceEntities.stream().map(sourceEntity -> {
|
||||
List<SourceEntity> filteredSourceEntities = sourceEntities.stream()
|
||||
.sorted(Comparator.comparing(SourceEntity::getCreateTime).reversed())
|
||||
.collect(Collectors.groupingBy(SourceEntity::getDeviceId))
|
||||
.entrySet()
|
||||
.stream().flatMap(entry -> {
|
||||
DeviceConfigManager configManager = deviceRepository.getDeviceConfigManager(entry.getKey());
|
||||
if (configManager.getInteger("limit_video", 0) > 0) {
|
||||
return Stream.concat(
|
||||
entry.getValue().stream().filter(item -> item.getType() == 2),
|
||||
entry.getValue().stream().filter(item -> item.getType() == 1).limit(Math.min(entry.getValue().size(), configManager.getInteger("limit_video", 0)))
|
||||
);
|
||||
}
|
||||
return entry.getValue().stream();
|
||||
}).toList();
|
||||
return filteredSourceEntities.stream().map(sourceEntity -> {
|
||||
DeviceConfigManager deviceConfig = deviceRepository.getDeviceConfigManager(sourceEntity.getDeviceId());
|
||||
MemberSourceEntity memberSourceEntity = new MemberSourceEntity();
|
||||
memberSourceEntity.setScenicId(face.getScenicId());
|
||||
@@ -645,7 +660,7 @@ public class FaceServiceImpl implements FaceService {
|
||||
return entry.getValue().stream();
|
||||
}).toList()
|
||||
.stream().map(FaceSampleEntity::getId).toList();
|
||||
log.info("视频切分任务: faceId={}, 原始数量={}, 筛选后数量={}", faceId, sampleListIds.size(), faceSampleIds.size());
|
||||
log.info("视频切分任务: faceId={}, 原始数量={}, 筛选后数量={}", faceId, faceSampleList.size(), faceSampleIds.size());
|
||||
log.debug("视频重切逻辑:视频数量 {}, 照片数量 {}", videoCount, photoCount);
|
||||
|
||||
// 只有照片数量大于视频数量时才创建重切任务
|
||||
|
Reference in New Issue
Block a user