支持图片占位符

This commit is contained in:
2025-07-31 14:23:59 +08:00
parent f797479515
commit 41269572c7
2 changed files with 63 additions and 0 deletions

View File

@@ -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<SourceEntity> imageSourceList = sourceMapper.listImageSourcesByFaceId(faceId);
if (!imageSourceList.isEmpty()) {
// 将图片source按设备ID分组并添加到sourcesMap中
Map<String, List<SourceEntity>> 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<SourceEntity> imageSourceList = sourceMapper.listImageSourcesByFaceId(faceId);
if (!imageSourceList.isEmpty()) {
// 将图片source按设备ID分组并添加到sourcesMap中
Map<String, List<SourceEntity>> 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);