This commit is contained in:
Jerry Yan 2025-01-27 04:34:22 +08:00
parent 348a3801df
commit 6907615658
2 changed files with 49 additions and 14 deletions

View File

@ -72,6 +72,7 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
@ -111,6 +112,8 @@ public class TaskTaskServiceImpl implements TaskService {
private VideoRepository videoRepository; private VideoRepository videoRepository;
@Autowired @Autowired
private OrderRepository orderRepository; private OrderRepository orderRepository;
private final ReentrantLock lock = new ReentrantLock();
private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) { private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) {
String accessKey = req.getAccessKey(); String accessKey = req.getAccessKey();
@ -166,6 +169,8 @@ public class TaskTaskServiceImpl implements TaskService {
} else { } else {
updTemplateList = templateRepository.getAllEnabledTemplateList(); updTemplateList = templateRepository.getAllEnabledTemplateList();
} }
try {
if (lock.tryLock(2, TimeUnit.SECONDS)) {
List<TaskRespVO> taskList = taskMapper.selectNotRunning(); List<TaskRespVO> taskList = taskMapper.selectNotRunning();
resp.setTasks(taskList); resp.setTasks(taskList);
resp.setTemplates(updTemplateList); resp.setTemplates(updTemplateList);
@ -173,6 +178,9 @@ public class TaskTaskServiceImpl implements TaskService {
taskMapper.assignToWorker(task.getId(), worker.getId()); taskMapper.assignToWorker(task.getId(), worker.getId());
videoTaskRepository.clearTaskCache(task.getId()); videoTaskRepository.clearTaskCache(task.getId());
}); });
}
} catch (InterruptedException ignored) {
}
// return Task // return Task
return resp; return resp;
} }

View File

@ -5,6 +5,7 @@ import com.ycwl.basic.biz.TemplateBiz;
import com.ycwl.basic.mapper.FaceMapper; import com.ycwl.basic.mapper.FaceMapper;
import com.ycwl.basic.mapper.FaceSampleMapper; import com.ycwl.basic.mapper.FaceSampleMapper;
import com.ycwl.basic.mapper.TemplateMapper; import com.ycwl.basic.mapper.TemplateMapper;
import com.ycwl.basic.model.mobile.scenic.content.ContentPageVO;
import com.ycwl.basic.model.pc.face.req.FaceReqQuery; import com.ycwl.basic.model.pc.face.req.FaceReqQuery;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO; import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.model.task.resp.SearchFaceRespVo; import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
@ -28,21 +29,47 @@ public class VideoTaskGenerator {
@Autowired @Autowired
private TaskFaceService taskFaceService; private TaskFaceService taskFaceService;
@Autowired @Autowired
private ScenicRepository scenicRepository;
@Autowired
private TemplateMapper templateMapper;
@Autowired
private TemplateBiz templateBiz; private TemplateBiz templateBiz;
@Autowired @Autowired
private FaceSampleMapper faceSampleMapper;
@Autowired
private TaskTaskServiceImpl taskTaskService; private TaskTaskServiceImpl taskTaskService;
@Autowired
private TemplateMapper templateMapper;
// TODO: 可配置现在赶时间暂时写死
@Scheduled(cron = "0 0 18 * * *") @Scheduled(cron = "0 0 18 * * *")
public void generateVideoTask() { public void generateVideoTask() {
// 指定获取指定日期的未完成人脸样本并生成任务 // 指定获取指定日期的未完成人脸样本并生成任务
Long scenicId = 3946669713328836608L; Long scenicId = 3946669713328836608L;
Long templateId = 3947461229940969472L; List<ContentPageVO> contentList = templateMapper.listFor(scenicId);
if (contentList.isEmpty()) {
return;
}
Long templateId = contentList.get(0).getTemplateId();
FaceReqQuery query = new FaceReqQuery();
query.setScenicId(scenicId);
query.setStartTime(DateUtil.beginOfDay(new Date()));
query.setEndTime(DateUtil.endOfDay(new Date()));
List<FaceRespVO> list = faceMapper.list(query);
list.stream().parallel().forEach(face -> {
taskFaceService.searchFace(face.getId());
boolean canAutoGenerate = templateBiz.determineTemplateCanAutoGenerate(templateId, face.getId(), false);
if (canAutoGenerate) {
taskTaskService.autoCreateTaskByFaceId(face.getId());
}
});
}
@Scheduled(cron = "0 30 4 * * *")
public void generateVideoTaskZTJQ() {
// 指定获取指定日期的未完成人脸样本并生成任务
Long scenicId = 3930324797233434624L;
List<ContentPageVO> contentList = templateMapper.listFor(scenicId);
if (contentList.isEmpty()) {
return;
}
Long templateId = contentList.get(0).getTemplateId();
FaceReqQuery query = new FaceReqQuery(); FaceReqQuery query = new FaceReqQuery();
query.setScenicId(scenicId); query.setScenicId(scenicId);
query.setStartTime(DateUtil.beginOfDay(new Date())); query.setStartTime(DateUtil.beginOfDay(new Date()));