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

jinan_dev
yaxin 4 months ago committed by longbao
parent a5611ec313
commit 37ed83a12a

@ -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("未知的任务类型");

@ -1,29 +1,41 @@
package com.supervision.police.service;
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.TaskRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.police.dto.TaskInfoDTO;
import com.supervision.police.dto.taskRecord.TaskRecordVo;
import com.supervision.police.vo.TaskInfoReqVO;
import java.util.List;
/**
* @author dxy
* @description task_recordService
* @createDate 2024-12-24 14:44:43
*/
* @author dxy
* @description task_recordService
* @createDate 2024-12-24 14:44:43
*/
public interface TaskRecordService extends IService<TaskRecord> {
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);
/**
*
*
* @param status
* @return true false
*/
@ -31,23 +43,25 @@ public interface TaskRecordService extends IService<TaskRecord> {
/**
*
*
* @param status
* @return true false
*/
Boolean taskStatusDeleteEnabled(String status);
void cancelTask(List<String> taskIds);
void cancelTask(List<String> taskIds);
void deleteTask(List<String> taskIds);
/**
*
* @param taskId id
*
* @param taskId 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);

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

Loading…
Cancel
Save