任务、案件任务状态管理,code format

master
yaxin 4 months ago
parent 0aa8469ed8
commit 3d22bb579c

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

@ -1,29 +1,41 @@
package com.supervision.police.service; package com.supervision.police.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.police.domain.NotePrompt;
import com.supervision.police.domain.TaskCaseRecord; import com.supervision.police.domain.TaskCaseRecord;
import com.supervision.police.domain.TaskRecord; import com.supervision.police.domain.TaskRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.police.dto.TaskInfoDTO; import com.supervision.police.dto.TaskInfoDTO;
import com.supervision.police.dto.taskRecord.TaskRecordVo; import com.supervision.police.dto.taskRecord.TaskRecordVo;
import com.supervision.police.vo.TaskInfoReqVO; import com.supervision.police.vo.TaskInfoReqVO;
import java.util.List; import java.util.List;
/** /**
* @author dxy * @author dxy
* @description task_recordService * @description task_recordService
* @createDate 2024-12-24 14:44:43 * @createDate 2024-12-24 14:44:43
*/ */
public interface TaskRecordService extends IService<TaskRecord> { public interface TaskRecordService extends IService<TaskRecord> {
void executePromptExtractTask(TaskRecordVo taskRecordVo); void executePromptExtractTask(TaskRecordVo taskRecordVo);
void graphExtract(NotePrompt prompt, String caseId, String executeId);
/**
*
*
* @param evidenceId id
*/
void structureExtract(String evidenceId);
IPage<TaskInfoDTO> queryTaskList(TaskInfoReqVO taskInfoReqVO, Integer page, Integer size); IPage<TaskInfoDTO> queryTaskList(TaskInfoReqVO taskInfoReqVO, Integer page, Integer size);
/** /**
* *
*
* @param status * @param status
* @return true false * @return true false
*/ */
@ -31,23 +43,25 @@ public interface TaskRecordService extends IService<TaskRecord> {
/** /**
* *
*
* @param status * @param status
* @return true false * @return true false
*/ */
Boolean taskStatusDeleteEnabled(String status); Boolean taskStatusDeleteEnabled(String status);
void cancelTask(List<String> taskIds); void cancelTask(List<String> taskIds);
void deleteTask(List<String> taskIds); void deleteTask(List<String> taskIds);
/** /**
* *
* @param taskId id *
* @param taskId id
* @param executeId id * @param executeId id
*/ */
void completeTask(String taskId,String executeId,boolean isSuccess); void completeTask(String taskId, String executeId, boolean isSuccess);
String determineStatus(List<TaskCaseRecord> taskCaseRecords); String determineStatus(List<TaskCaseRecord> taskCaseRecords);

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.constant.DataStatus;
import com.supervision.neo4j.service.Neo4jService;
import com.supervision.police.domain.*; import com.supervision.police.domain.*;
import com.supervision.police.dto.TaskInfoDTO; import com.supervision.police.dto.TaskInfoDTO;
import com.supervision.police.dto.taskRecord.TaskRecordVo; import com.supervision.police.dto.taskRecord.TaskRecordVo;
@ -24,7 +25,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.ArrayList;
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_GRAPH_REASONING;
import static com.supervision.common.constant.NotePromptConstants.TYPE_STRUCTURAL_REASONING; import static com.supervision.common.constant.NotePromptConstants.TYPE_STRUCTURAL_REASONING;
@ -53,6 +57,12 @@ public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRec
private final XxlJobService xxlJobService; private final XxlJobService xxlJobService;
private final ExtractTripleInfoService extractTripleInfoService;
private final Neo4jService neo4jService;
private final TripleInfoService tripleInfoService;
@Override @Override
public void executePromptExtractTask(TaskRecordVo taskRecordVo) { public void executePromptExtractTask(TaskRecordVo taskRecordVo) {
//保存任务记录 //保存任务记录
@ -82,6 +92,22 @@ public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRec
} }
} }
@Override
public void graphExtract(NotePrompt prompt, String caseId, String executeId) {
List<TripleInfo> tripleInfos = extractTripleInfoService.extractTripleInfo(prompt, caseId, executeId);
for (TripleInfo tripleInfo : tripleInfos) {
neo4jService.saveTripleInfo(tripleInfo);
}
if (CollUtil.isNotEmpty(tripleInfos)) {
tripleInfoService.updateNeo4jFlag(tripleInfos.stream().map(TripleInfo::getId).toList(), "1");
}
}
@Override
public void structureExtract(String evidenceId) {
caseEvidenceService.evidenceAnalysis(evidenceId);
}
/** /**
* ID * ID
* *
@ -213,17 +239,17 @@ public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRec
@Override @Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class) @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public void completeTask(String taskId, String executeId,boolean isSuccess) { public void completeTask(String taskId, String executeId, boolean isSuccess) {
if (StrUtil.isEmpty(taskId)){ if (StrUtil.isEmpty(taskId)) {
log.info("completeTask:任务ID为空"); log.info("completeTask:任务ID为空");
return; return;
} }
if (StrUtil.isEmpty(executeId)){ if (StrUtil.isEmpty(executeId)) {
log.info("completeTask:执行ID为空"); log.info("completeTask:执行ID为空");
return; return;
} }
TaskRecord taskRecord = super.getById(taskId); TaskRecord taskRecord = super.getById(taskId);
if (null == taskRecord){ if (null == taskRecord) {
log.info("completeTask:任务不存在任务ID:【{}】", taskId); log.info("completeTask:任务不存在任务ID:【{}】", taskId);
return; return;
} }
@ -231,19 +257,19 @@ public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRec
TaskCaseRecord taskCaseRecord = taskCaseRecordService.updateStatus(taskId, executeId, isSuccess); TaskCaseRecord taskCaseRecord = taskCaseRecordService.updateStatus(taskId, executeId, isSuccess);
log.info("completeTask:任务ID:【{}】执行ID:【{}】,任务状态:【{}】", taskId, executeId, taskCaseRecord.getStatus()); log.info("completeTask:任务ID:【{}】执行ID:【{}】,任务状态:【{}】", taskId, executeId, taskCaseRecord.getStatus());
// 校验总体任务是否是取消中 // 校验总体任务是否是取消中
if (StrUtil.equalsAny(taskRecord.getStatus(),TASK_STATUS_CANCELLING,TASK_STATUS_CANCELED)){ if (StrUtil.equalsAny(taskRecord.getStatus(), TASK_STATUS_CANCELLING, TASK_STATUS_CANCELED)) {
log.info("completeTask:任务状态为取消中,任务状态更新即将更新为【{}】任务ID: 【{}】", taskId,taskRecord.getStatus()); log.info("completeTask:任务状态为取消中,任务状态更新即将更新为【{}】任务ID: 【{}】", taskId, taskRecord.getStatus());
Boolean success = taskCaseRecordService.updateStatus(taskId, List.of(TASK_STATUS_WAITING,TASK_STATUS_PROCESSING), TASK_STATUS_CANCELED); Boolean success = taskCaseRecordService.updateStatus(taskId, List.of(TASK_STATUS_WAITING, TASK_STATUS_PROCESSING), TASK_STATUS_CANCELED);
log.info("completeTask:任务状态更新完成,task_case数据任务状态【{}】变动任务ID: 【{}】", taskId, success?"产生":"无"); log.info("completeTask:任务状态更新完成,task_case数据任务状态【{}】变动任务ID: 【{}】", taskId, success ? "产生" : "无");
taskRecord.setStatus(TASK_STATUS_CANCELED); taskRecord.setStatus(TASK_STATUS_CANCELED);
this.updateById(taskRecord); this.updateById(taskRecord);
return; return;
} }
if (StrUtil.equalsAny(taskRecord.getStatus(),TASK_STATUS_WAITING,TASK_STATUS_PROCESSING)){ if (StrUtil.equalsAny(taskRecord.getStatus(), TASK_STATUS_WAITING, TASK_STATUS_PROCESSING)) {
List<TaskCaseRecord> taskCaseRecords = taskCaseRecordService.queryByTaskId(taskId); List<TaskCaseRecord> taskCaseRecords = taskCaseRecordService.queryByTaskId(taskId);
String taskStatus = this.determineStatus(taskCaseRecords); String taskStatus = this.determineStatus(taskCaseRecords);
log.info("completeTask:任务ID:【{}】,初始任务状态:【{}】,计算后任务状态:【{}】", taskId, taskCaseRecord.getStatus(),taskStatus); log.info("completeTask:任务ID:【{}】,初始任务状态:【{}】,计算后任务状态:【{}】", taskId, taskCaseRecord.getStatus(), taskStatus);
if (!StrUtil.equals(taskStatus,taskRecord.getStatus())){ if (!StrUtil.equals(taskStatus, taskRecord.getStatus())) {
taskRecord.setStatus(taskStatus); taskRecord.setStatus(taskStatus);
super.updateById(taskRecord); super.updateById(taskRecord);
} }
@ -252,7 +278,7 @@ public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRec
@Override @Override
public String determineStatus(List<TaskCaseRecord> taskCaseRecords) { public String determineStatus(List<TaskCaseRecord> taskCaseRecords) {
if (CollUtil.isEmpty(taskCaseRecords)){ if (CollUtil.isEmpty(taskCaseRecords)) {
return TASK_STATUS_SUCCESS; return TASK_STATUS_SUCCESS;
} }
@ -263,7 +289,6 @@ public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRec
} }
} }

Loading…
Cancel
Save