|
|
|
@ -1,19 +1,20 @@
|
|
|
|
|
package com.supervision.job;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.supervision.common.constant.XxlJobConstants;
|
|
|
|
|
import com.supervision.neo4j.service.Neo4jService;
|
|
|
|
|
import com.supervision.police.domain.NotePrompt;
|
|
|
|
|
import com.supervision.police.domain.TaskCaseRecord;
|
|
|
|
|
import com.supervision.police.domain.TaskRecord;
|
|
|
|
|
import com.supervision.police.domain.TripleInfo;
|
|
|
|
|
import com.supervision.police.service.*;
|
|
|
|
|
import com.supervision.police.service.CaseEvidenceService;
|
|
|
|
|
import com.supervision.police.service.NotePromptService;
|
|
|
|
|
import com.supervision.police.service.TaskCaseRecordService;
|
|
|
|
|
import com.supervision.police.service.TaskRecordService;
|
|
|
|
|
import com.xxl.job.core.context.XxlJobHelper;
|
|
|
|
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
@ -32,16 +33,8 @@ public class XxlJobTask {
|
|
|
|
|
|
|
|
|
|
private final TaskCaseRecordService taskCaseRecordService;
|
|
|
|
|
|
|
|
|
|
private final ModelCaseService modelCaseService;
|
|
|
|
|
|
|
|
|
|
private final NotePromptService notePromptService;
|
|
|
|
|
|
|
|
|
|
private final ExtractTripleInfoService extractTripleInfoService;
|
|
|
|
|
|
|
|
|
|
private final Neo4jService neo4jService;
|
|
|
|
|
|
|
|
|
|
private final TripleInfoService tripleInfoService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 睡觉通知
|
|
|
|
|
*/
|
|
|
|
@ -70,6 +63,7 @@ public class XxlJobTask {
|
|
|
|
|
String taskId = map.get("taskId");
|
|
|
|
|
String caseId = map.get("caseId");
|
|
|
|
|
String promptId = map.get("promptId");
|
|
|
|
|
String executeId = map.get("executeId");
|
|
|
|
|
NotePrompt prompt = notePromptService.getById(promptId);
|
|
|
|
|
boolean executable = true;
|
|
|
|
|
TaskRecord taskRecord = taskRecordService.getById(taskId);
|
|
|
|
@ -87,6 +81,7 @@ public class XxlJobTask {
|
|
|
|
|
break;
|
|
|
|
|
case TASK_STATUS_CANCELED:
|
|
|
|
|
log.info("任务状态为已取消,任务不可执行,任务ID: 【{}】", taskId);
|
|
|
|
|
taskCaseRecordService.updateStatus(taskId, List.of(TASK_STATUS_WAITING, TASK_STATUS_PROCESSING), TASK_STATUS_CANCELED);
|
|
|
|
|
executable = false;
|
|
|
|
|
break;
|
|
|
|
|
case TASK_STATUS_FAIL:
|
|
|
|
@ -106,17 +101,11 @@ public class XxlJobTask {
|
|
|
|
|
switch (prompt.getType()) {
|
|
|
|
|
case TYPE_GRAPH_REASONING:
|
|
|
|
|
log.info("【图推理】任务开始。任务ID: 【{}】", taskId);
|
|
|
|
|
List<TripleInfo> tripleInfos = extractTripleInfoService.extractTripleInfo(prompt, caseId, map.get("executeId"));
|
|
|
|
|
for (TripleInfo tripleInfo : tripleInfos) {
|
|
|
|
|
neo4jService.saveTripleInfo(tripleInfo);
|
|
|
|
|
}
|
|
|
|
|
if (CollUtil.isNotEmpty(tripleInfos)){
|
|
|
|
|
tripleInfoService.updateNeo4jFlag(tripleInfos.stream().map(TripleInfo::getId).toList(), "1");
|
|
|
|
|
}
|
|
|
|
|
taskRecordService.graphExtract(prompt, caseId, executeId);
|
|
|
|
|
break;
|
|
|
|
|
case TYPE_STRUCTURAL_REASONING:
|
|
|
|
|
log.info("【结构推理】任务开始。任务ID: 【{}】", taskId);
|
|
|
|
|
// TODO: 证据处理
|
|
|
|
|
taskRecordService.structureExtract(executeId);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
log.error("未知的任务类型");
|
|
|
|
|