diff --git a/src/main/java/com/ycwl/basic/face/pipeline/helper/PuzzleGenerationOrchestrator.java b/src/main/java/com/ycwl/basic/face/pipeline/helper/PuzzleGenerationOrchestrator.java index 6682bce1..0d02ee8a 100644 --- a/src/main/java/com/ycwl/basic/face/pipeline/helper/PuzzleGenerationOrchestrator.java +++ b/src/main/java/com/ycwl/basic/face/pipeline/helper/PuzzleGenerationOrchestrator.java @@ -2,6 +2,7 @@ package com.ycwl.basic.face.pipeline.helper; import cn.hutool.core.date.DateUtil; import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO; +import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.puzzle.dto.PuzzleGenerateRequest; import com.ycwl.basic.puzzle.dto.PuzzleGenerateResponse; import com.ycwl.basic.puzzle.dto.PuzzleTemplateDTO; @@ -44,6 +45,9 @@ public class PuzzleGenerationOrchestrator { @Autowired private ScenicRepository scenicRepository; + @Autowired + private SourceMapper sourceMapper; + /** * 异步生成景区所有启用的拼图模板 * @@ -74,6 +78,11 @@ public class PuzzleGenerationOrchestrator { // 3. 准备公共动态数据 Map baseDynamicData = buildBaseDynamicData(faceId, faceUrl, scenicBasic); + // 4. 设置dateStr为图片素材的最大创建时间 + Date maxCreateTime = sourceMapper.getMaxCreateTimeByFaceId(faceId); + baseDynamicData.put("dateStr", DateUtil.format( + maxCreateTime != null ? maxCreateTime : new Date(), "yyyy.MM.dd")); + // 4. 使用虚拟线程池并行生成所有模板 java.util.concurrent.atomic.AtomicInteger successCount = new java.util.concurrent.atomic.AtomicInteger(0); java.util.concurrent.atomic.AtomicInteger failCount = new java.util.concurrent.atomic.AtomicInteger(0); @@ -121,7 +130,6 @@ public class PuzzleGenerationOrchestrator { baseDynamicData.put("faceId", String.valueOf(faceId)); baseDynamicData.put("scenicName", scenicBasic.getName()); baseDynamicData.put("scenicText", scenicBasic.getName()); - baseDynamicData.put("dateStr", DateUtil.format(new Date(), "yyyy.MM.dd")); return baseDynamicData; } diff --git a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java index 5411b9d0..2ff2c7b1 100644 --- a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java @@ -143,6 +143,13 @@ public interface SourceMapper { */ List getDeviceIdsByFaceId(Long faceId); + /** + * 获取faceId关联的图片素材的最大创建时间 + * @param faceId 人脸ID + * @return 最大创建时间,无记录时返回null + */ + Date getMaxCreateTimeByFaceId(Long faceId); + /** * 根据faceId和设备ID获取source * @param faceId 人脸ID diff --git a/src/main/java/com/ycwl/basic/puzzle/util/PuzzleDuplicationDetector.java b/src/main/java/com/ycwl/basic/puzzle/util/PuzzleDuplicationDetector.java index 802d555e..2464553f 100644 --- a/src/main/java/com/ycwl/basic/puzzle/util/PuzzleDuplicationDetector.java +++ b/src/main/java/com/ycwl/basic/puzzle/util/PuzzleDuplicationDetector.java @@ -25,7 +25,7 @@ import java.util.stream.Collectors; @Component @RequiredArgsConstructor public class PuzzleDuplicationDetector { - private final Set skippedElementKeys = Set.of("dateStr"); + private final Set skippedElementKeys = Set.of(); private final PuzzleGenerationRecordMapper recordMapper; /** diff --git a/src/main/java/com/ycwl/basic/service/pc/orchestrator/FaceMatchingOrchestrator.java b/src/main/java/com/ycwl/basic/service/pc/orchestrator/FaceMatchingOrchestrator.java index 7c0f12a0..fce5dddf 100644 --- a/src/main/java/com/ycwl/basic/service/pc/orchestrator/FaceMatchingOrchestrator.java +++ b/src/main/java/com/ycwl/basic/service/pc/orchestrator/FaceMatchingOrchestrator.java @@ -405,7 +405,9 @@ public class FaceMatchingOrchestrator { baseDynamicData.put("faceId", String.valueOf(faceId)); baseDynamicData.put("scenicName", scenicBasic.getName()); baseDynamicData.put("scenicText", scenicBasic.getName()); - baseDynamicData.put("dateStr", DateUtil.format(new Date(), "yyyy.MM.dd")); + Date maxCreateTime = sourceMapper.getMaxCreateTimeByFaceId(faceId); + baseDynamicData.put("dateStr", DateUtil.format( + maxCreateTime != null ? maxCreateTime : new Date(), "yyyy.MM.dd")); templateList .forEach(template -> { diff --git a/src/main/resources/mapper/SourceMapper.xml b/src/main/resources/mapper/SourceMapper.xml index 572f9e0f..687c069e 100644 --- a/src/main/resources/mapper/SourceMapper.xml +++ b/src/main/resources/mapper/SourceMapper.xml @@ -464,6 +464,15 @@ ORDER BY s.device_id ASC + +