优化是否能生成判断逻辑

This commit is contained in:
2025-01-11 16:13:19 +08:00
parent ad9e91cd7a
commit 0d2c92e8e1
18 changed files with 150 additions and 77 deletions

View File

@ -1,11 +1,13 @@
package com.ycwl.basic.task;
import com.ycwl.basic.biz.TemplateBiz;
import com.ycwl.basic.mapper.DeviceMapper;
import com.ycwl.basic.mapper.FaceMapper;
import com.ycwl.basic.mapper.FaceSampleMapper;
import com.ycwl.basic.mapper.ScenicMapper;
import com.ycwl.basic.mapper.TemplateMapper;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
@ -45,6 +47,8 @@ public class DynamicTaskGenerator {
private TaskService taskService;
@Autowired
private DeviceMapper deviceMapper;
@Autowired
private TemplateBiz templateBiz;
@Scheduled(cron = "0 0 * * * ?")
public void dynamicTask() {
@ -77,27 +81,6 @@ public class DynamicTaskGenerator {
continue;
}
}
Integer minimalPlaceholderFill = templateConfig.getMinimalPlaceholderFill();
int maxPlaceholder = 0;
List<String> placeholderList = new ArrayList<>();
if (minimalPlaceholderFill == null) {
minimalPlaceholderFill = 0;
}
List<TemplateRespVO> subTemplateList = templateMapper.getByPid(template.getId());
for (TemplateRespVO subTemplate : subTemplateList) {
if (subTemplate.getIsPlaceholder() == 1) {
placeholderList.add(subTemplate.getSourceUrl());
}
}
if (minimalPlaceholderFill == 0) {
for (TemplateRespVO subTemplate : subTemplateList) {
maxPlaceholder += 1;
if (subTemplate.getIsPlaceholder() == 1) {
minimalPlaceholderFill += 1;
}
}
}
log.info("当前模板{}启用默认,最小占位素材:{}", template.getName(), minimalPlaceholderFill);
// 查找人脸样本
List<FaceRespVO> list = faceMapper.listByScenicIdAndNotFinished(scenic.getId());
for (FaceRespVO face : list) {
@ -122,23 +105,12 @@ public class DynamicTaskGenerator {
continue;
}
}
List<FaceSampleRespVO> faceSampleList = faceSampleMapper.listByIds(searchFace.getSampleListIds());
int matchedPlaceholder = 0;
for (FaceSampleRespVO faceSample : faceSampleList) {
if (placeholderList.contains(faceSample.getDeviceId().toString())) {
matchedPlaceholder += 1;
}
}
if (matchedPlaceholder >= maxPlaceholder) {
log.info("当前人脸样本{}已超过最大占位素材{},自动创建任务", face.getFaceUrl(), maxPlaceholder);
taskService.createRenderTask(scenic.getId(), template.getId(), face.getId());
faceMapper.finishedJourney(face.getId());
} else if (matchedPlaceholder >= minimalPlaceholderFill) {
log.info("当前人脸样本{}已超过最小占位素材{},自动创建任务", face.getFaceUrl(), minimalPlaceholderFill);
if (templateBiz.determineTemplateCanGenerate(template.getId(), face.getId())) {
log.info("当前人脸样本{}已超过最小占位素材,自动创建任务", face.getFaceUrl());
taskService.createRenderTask(scenic.getId(), template.getId(), face.getId());
faceMapper.finishedJourney(face.getId());
} else {
log.info("当前人脸样本{}未超过最小占位素材{},未达到自动生成条件", face.getFaceUrl(), minimalPlaceholderFill);
log.info("当前人脸样本{}未超过最小占位素材,未达到自动生成条件", face.getFaceUrl());
}
}
}