From 41269572c76895a1ff55ddb1fc5da076d51c8f30 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 31 Jul 2025 14:23:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=9B=BE=E7=89=87=E5=8D=A0?= =?UTF-8?q?=E4=BD=8D=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/impl/TaskTaskServiceImpl.java | 57 +++++++++++++++++++ src/main/resources/mapper/SourceMapper.xml | 6 ++ 2 files changed, 63 insertions(+) diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index 0bffb14..ffb7e49 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -60,6 +60,7 @@ import com.ycwl.basic.utils.VideoReUploader; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.util.Strings; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -257,6 +258,34 @@ public class TaskTaskServiceImpl implements TaskService { } else { log.info("task callback: 模板占位符有重复,templateId: {}", templateId); } + + // 处理以P开头的templatePlaceHolder,添加type=2的source + boolean hasPPlaceholder = templatePlaceholder.stream().anyMatch(placeholder -> placeholder.startsWith("P")); + if (hasPPlaceholder) { + List imageSourceList = sourceMapper.listImageSourcesByFaceId(faceId); + if (!imageSourceList.isEmpty()) { + // 将图片source按设备ID分组并添加到sourcesMap中 + Map> imageSourceMap = imageSourceList.stream() + .peek(item -> item.setUrl(item.getUrl())) // 图片使用url字段 + .filter(item -> item.getDeviceId() != null) + .filter(item -> { + DeviceEntity device = deviceRepository.getDevice(item.getDeviceId()); + if (device == null) { + return false; + } + return Integer.valueOf(1).equals(device.getStatus()); + }) + .collect(Collectors.groupingBy(item -> Strings.concat("P", item.getDeviceId().toString()))); + + // 合并到现有的sourcesMap中 + imageSourceMap.forEach((key, value) -> { + sourcesMap.merge(key, value, (existing, replacement) -> { + existing.addAll(replacement); + return existing; + }); + }); + } + } TaskReqQuery taskReqQuery = new TaskReqQuery(); taskReqQuery.setFaceId(faceId); taskReqQuery.setTemplateId(templateId); @@ -469,6 +498,34 @@ public class TaskTaskServiceImpl implements TaskService { } else { log.info("task callback: 模板占位符有重复,templateId: {}", templateId); } + + // 处理以P开头的templatePlaceHolder,添加type=2的source + boolean hasPPlaceholder = templatePlaceholder.stream().anyMatch(placeholder -> placeholder.startsWith("P")); + if (hasPPlaceholder) { + List imageSourceList = sourceMapper.listImageSourcesByFaceId(faceId); + if (!imageSourceList.isEmpty()) { + // 将图片source按设备ID分组并添加到sourcesMap中 + Map> imageSourceMap = imageSourceList.stream() + .peek(item -> item.setUrl(item.getUrl())) // 图片使用url字段 + .filter(item -> item.getDeviceId() != null) + .filter(item -> { + DeviceEntity device = deviceRepository.getDevice(item.getDeviceId()); + if (device == null) { + return false; + } + return Integer.valueOf(1).equals(device.getStatus()); + }) + .collect(Collectors.groupingBy(item -> Strings.concat("P", item.getDeviceId().toString()))); + + // 合并到现有的sourcesMap中 + imageSourceMap.forEach((key, value) -> { + sourcesMap.merge(key, value, (existing, replacement) -> { + existing.addAll(replacement); + return existing; + }); + }); + } + } TaskReqQuery taskReqQuery = new TaskReqQuery(); taskReqQuery.setFaceId(faceId); taskReqQuery.setTemplateId(templateId); diff --git a/src/main/resources/mapper/SourceMapper.xml b/src/main/resources/mapper/SourceMapper.xml index e3043ce..9f28e85 100644 --- a/src/main/resources/mapper/SourceMapper.xml +++ b/src/main/resources/mapper/SourceMapper.xml @@ -248,4 +248,10 @@ set member_id = #{memberId} where face_id = #{faceId} +