From 6091d41df90b6cf9f09fa56e6d9794c73a2ffa74 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 26 Sep 2025 16:36:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(face):=E4=BC=98=E5=8C=96=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=88=87=E5=88=86=E4=BB=BB=E5=8A=A1=E7=AD=9B=E9=80=89=E9=80=BB?= =?UTF-8?q?=E8=BE=91=20-=20=E6=8C=89=E8=AE=BE=E5=A4=87ID=E5=88=86=E7=BB=84?= =?UTF-8?q?=E5=B9=B6=E6=8C=89=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4=E5=80=92?= =?UTF-8?q?=E5=BA=8F=E6=8E=92=E5=BA=8F=20-=20=E6=A0=B9=E6=8D=AE=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E9=85=8D=E7=BD=AE=E9=99=90=E5=88=B6=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=95=B0=E9=87=8F=20-=20=E4=BF=AE=E5=A4=8D=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=B8=AD=E5=8E=9F=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/pc/impl/FaceServiceImpl.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java index a4023f88..9000df11 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java @@ -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 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); // 只有照片数量大于视频数量时才创建重切任务