创建任务触发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_CANCELED = "3";
public static final String TASK_STATUS_SUCCESS = "4"; public static final String TASK_STATUS_SUCCESS = "4";
public static final String TASK_STATUS_FAIL = "5"; 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; 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.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; 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 @Slf4j
@Component @Component
@RequiredArgsConstructor
public class XxlJobTask { public class XxlJobTask {
@Autowired
private CaseEvidenceService caseEvidenceService; 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() { public void extractEvidenceByTask() {
String param = XxlJobHelper.getJobParam(); Map<String, String> map = JSON.parseObject(XxlJobHelper.getJobParam(), Map.class);
log.info("【证据解析】任务开始。ID: 【{}】", param); 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 { try {
caseEvidenceService.evidenceAnalysis(param); TaskRecord taskRecord = taskRecordService.getById(taskId);
} catch (Exception e) { switch (taskRecord.getStatus()) {
log.error("任务执行失败", e); case TASK_STATUS_WAITING:
} finally { log.info("任务状态为等待中任务状态更新为处理中任务ID: 【{}】", taskId);
log.info("任务执行完成"); 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) { } catch (Exception e) {
log.error("任务执行失败", e); log.error("任务执行失败", e);
} finally { } finally {
log.info("任务执行完成"); log.info("【提取任务】任务结束。");
} }
} }

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

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

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

@ -1,35 +1,71 @@
package com.supervision.police.service.impl; package com.supervision.police.service.impl;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.common.constant.TaskRecordConstants; 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.domain.TaskRecord;
import com.supervision.police.dto.taskRecord.TaskRecordVo; 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.mapper.TaskRecordMapper;
import com.supervision.police.service.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; 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 * @author dxy
* @description task_recordService * @description task_recordService
* @createDate 2024-12-24 14:44:43 * @createDate 2024-12-24 14:44:43
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRecord> public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRecord>
implements TaskRecordService{ implements TaskRecordService {
final TaskCaseRecordService taskCaseRecordService; final TaskCaseRecordService taskCaseRecordService;
final ModelCaseService modelCaseService;
final NoteRecordService noteRecordService;
final CaseEvidenceService caseEvidenceService;
final NotePromptService notePromptService;
final XxlJobService xxlJobService;
@Override @Override
public void executePromptExtractTask(TaskRecordVo taskRecordVo) { public void executePromptExtractTask(TaskRecordVo taskRecordVo) {
TaskRecord taskRecord = new TaskRecord(); TaskRecord taskRecord = new TaskRecord();
BeanUtils.copyProperties(taskRecordVo, taskRecord); BeanUtils.copyProperties(taskRecordVo, taskRecord);
save(taskRecord); save(taskRecord);
NotePrompt prompt = notePromptService.getById(taskRecordVo.getPromptId());
switch (taskRecord.getType()) { switch (taskRecord.getType()) {
case TaskRecordConstants.TASK_TYPE_ALL_CASE: 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; break;
case TaskRecordConstants.TASK_TYPE_SPECIFIED_CASE: case TaskRecordConstants.TASK_TYPE_SPECIFIED_CASE:
break; break;

Loading…
Cancel
Save