You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fu-hsi-service/src/main/java/com/supervision/job/XxlJobTask.java

106 lines
4.2 KiB
Java

package com.supervision.job;
import com.alibaba.fastjson.JSON;
import com.supervision.police.domain.NotePrompt;
import com.supervision.police.domain.TaskCaseRecord;
import com.supervision.police.domain.TaskRecord;
import com.supervision.police.service.*;
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.Map;
import static com.supervision.common.constant.NotePromptConstants.TYPE_GRAPH_REASONING;
import static com.supervision.common.constant.NotePromptConstants.TYPE_STRUCTURAL_REASONING;
import static com.supervision.common.constant.TaskRecordConstants.*;
@Slf4j
@Component
@RequiredArgsConstructor
public class XxlJobTask {
private CaseEvidenceService caseEvidenceService;
private TaskRecordService taskRecordService;
private TaskCaseRecordService taskCaseRecordService;
private ModelCaseService modelCaseService;
private NotePromptService notePromptService;
/**
*
*/
@XxlJob("evidenceAnalysis")
public void evidenceAnalysis() {
String param = XxlJobHelper.getJobParam();
log.info("【证据解析】任务开始。ID: 【{}】", param);
try {
caseEvidenceService.evidenceAnalysis(param);
} catch (Exception e) {
log.error("任务执行失败", e);
} finally {
log.info("任务执行完成");
}
}
/**
*
*/
@XxlJob("extractTask")
public void extractEvidenceByTask() {
Map<String, String> map = JSON.parseObject(XxlJobHelper.getJobParam(), Map.class);
log.info("【提取任务】任务开始。参数: 【{}】", map.toString());
String taskId = map.get("taskId");
String caseId = map.get("caseId");
String promptId = map.get("promptId");
NotePrompt prompt = notePromptService.getById(promptId);
boolean executable = true;
try {
TaskRecord taskRecord = taskRecordService.getById(taskId);
switch (taskRecord.getStatus()) {
case TASK_STATUS_WAITING:
log.info("任务状态为等待中任务状态更新为处理中任务ID: 【{}】", taskId);
taskRecord.setStatus(TASK_STATUS_PROCESSING);
taskRecordService.updateById(taskRecord);
break;
case TASK_STATUS_CANCELLING:
log.info("任务状态为取消中任务状态更新为已取消任务ID: 【{}】", taskId);
taskRecord.setStatus(TASK_STATUS_CANCELED);
taskRecordService.updateById(taskRecord);
executable = false;
break;
case TASK_STATUS_CANCELED:
log.info("任务状态为已取消任务不可执行任务ID: 【{}】", taskId);
executable = false;
break;
default:
break;
}
if (executable) {
TaskCaseRecord taskCaseRecord = taskCaseRecordService.lambdaQuery().eq(TaskCaseRecord::getCaseId, caseId).eq(TaskCaseRecord::getTaskRecordId, taskId).one();
if (TASK_STATUS_WAITING.equals(taskCaseRecord.getStatus())) {
log.info("任务状态为等待中任务状态更新为处理中任务案件ID: 【{}】", taskCaseRecord.getId());
taskCaseRecord.setStatus(TASK_STATUS_PROCESSING);
taskCaseRecordService.updateById(taskCaseRecord);
}
switch (prompt.getType()) {
case TYPE_GRAPH_REASONING:
// TODO: 笔录处理
break;
case TYPE_STRUCTURAL_REASONING:
// TODO: 证据处理
break;
default:
log.error("未知的任务类型");
break;
}
}
} catch (Exception e) {
log.error("任务执行失败", e);
} finally {
log.info("【提取任务】任务结束。");
}
}
}