创建任务触发xxl-job task外层逻辑

jinan_dev
yaxin 4 months ago
parent 5aac77ec1b
commit a48d5a7ef1

@ -19,7 +19,4 @@ public class TaskRecordConstants {
public static final String TASK_STATUS_CANCELED = "3";
public static final String TASK_STATUS_SUCCESS = "4";
public static final String TASK_STATUS_FAIL = "5";
// 任务提取方式
public static final String TASK_EXTRACT_RECORD = "record";
public static final String TASK_EXTRACT_EVIDENCE = "evidence";
}

@ -1,17 +1,31 @@
package com.supervision.job;
import com.supervision.police.service.CaseEvidenceService;
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.beans.factory.annotation.Autowired;
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 {
@Autowired
private CaseEvidenceService caseEvidenceService;
private TaskRecordService taskRecordService;
private TaskCaseRecordService taskCaseRecordService;
private ModelCaseService modelCaseService;
private NotePromptService notePromptService;
/**
*
@ -30,34 +44,61 @@ public class XxlJobTask {
}
/**
*
*
*/
@XxlJob("extractEvidenceByTask")
@XxlJob("extractTask")
public void extractEvidenceByTask() {
String param = XxlJobHelper.getJobParam();
log.info("【证据解析】任务开始。ID: 【{}】", param);
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 {
caseEvidenceService.evidenceAnalysis(param);
} catch (Exception e) {
log.error("任务执行失败", e);
} finally {
log.info("任务执行完成");
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;
}
}
/**
*
*/
@XxlJob("extractRecordByTask")
public void extractRecordByTask() {
String param = XxlJobHelper.getJobParam();
log.info("【证据解析】任务开始。ID: 【{}】", param);
try {
caseEvidenceService.evidenceAnalysis(param);
} catch (Exception e) {
log.error("任务执行失败", e);
} finally {
log.info("任务执行完成");
log.info("【提取任务】任务结束。");
}
}

@ -60,11 +60,6 @@ public class TaskCaseRecord implements Serializable {
*/
private Date updateTime;
/**
* record evidence
*/
private String recordOrEvidence;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

@ -26,6 +26,11 @@ public class TaskRecord implements Serializable {
*/
private String name;
/**
* ID
*/
private String promptId;
/**
* ID
*/
@ -41,11 +46,6 @@ public class TaskRecord implements Serializable {
*/
private String evidenceId;
/**
* record evidence
*/
private String recordOrEvidence;
/**
* 0 1 2 3
*/

@ -7,7 +7,7 @@ public class TaskRecordVo {
private String caseId;
private String recordId;
private String evidenceId;
private String recordOrEvidence;
private String promptId;
private String type;
private String status;
}

@ -1,16 +1,27 @@
package com.supervision.police.service.impl;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.common.constant.TaskRecordConstants;
import com.supervision.constant.DataStatus;
import com.supervision.police.domain.ModelCase;
import com.supervision.police.domain.NotePrompt;
import com.supervision.police.domain.NoteRecord;
import com.supervision.police.domain.TaskRecord;
import com.supervision.police.dto.taskRecord.TaskRecordVo;
import com.supervision.police.service.TaskCaseRecordService;
import com.supervision.police.service.TaskRecordService;
import com.supervision.police.mapper.TaskRecordMapper;
import com.supervision.police.service.*;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.supervision.common.constant.NotePromptConstants.TYPE_GRAPH_REASONING;
import static com.supervision.common.constant.NotePromptConstants.TYPE_STRUCTURAL_REASONING;
/**
* @author dxy
* @description task_recordService
@ -22,14 +33,39 @@ public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRec
implements TaskRecordService {
final TaskCaseRecordService taskCaseRecordService;
final ModelCaseService modelCaseService;
final NoteRecordService noteRecordService;
final CaseEvidenceService caseEvidenceService;
final NotePromptService notePromptService;
final XxlJobService xxlJobService;
@Override
public void executePromptExtractTask(TaskRecordVo taskRecordVo) {
TaskRecord taskRecord = new TaskRecord();
BeanUtils.copyProperties(taskRecordVo, taskRecord);
save(taskRecord);
NotePrompt prompt = notePromptService.getById(taskRecordVo.getPromptId());
switch (taskRecord.getType()) {
case TaskRecordConstants.TASK_TYPE_ALL_CASE:
if (TYPE_GRAPH_REASONING.equals(prompt.getType())) {
//笔录
List<ModelCase> modelCases = modelCaseService.lambdaQuery().eq(ModelCase::getDataStatus, DataStatus.AVAILABLE.getCode()).list();
for (ModelCase modelCase : modelCases) {
List<NoteRecord> noteRecords = noteRecordService.lambdaQuery().eq(NoteRecord::getCaseId, modelCase.getId()).list();
for (NoteRecord noteRecord : noteRecords) {
Map<String, String> params = new HashMap<>();
params.put("taskId", taskRecord.getId());
params.put("caseId", modelCase.getId());
params.put("executeId", noteRecord.getId());
params.put("promptId", taskRecordVo.getPromptId());
//map转String作为参数
xxlJobService.executeTaskByJobHandler("extractRecordByTask", new JSONObject(params).toString());
}
}
} else if (TYPE_STRUCTURAL_REASONING.equals(prompt.getType())) {
//证据
}
break;
case TaskRecordConstants.TASK_TYPE_SPECIFIED_CASE:
break;

Loading…
Cancel
Save