1. 添加案件批处理功能

jinan_dev
xueqingkun 4 months ago
parent f136c64ed5
commit 5aac77ec1b

@ -10,7 +10,6 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
@RestController
@ -25,7 +24,7 @@ public class ModelController {
@PostMapping("/analyseCase")
@Operation(summary = "分析指标")
public R<?> analyseCase(@RequestBody AnalyseCaseDTO analyseCaseDTO) {
return modelService.analyseCase(analyseCaseDTO);
return modelService.analyseCaseWrapper(analyseCaseDTO);
}
@GetMapping("/caseScoreDetail")

@ -0,0 +1,44 @@
package com.supervision.police.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.common.domain.R;
import com.supervision.police.dto.CaseProcessDTO;
import com.supervision.police.service.MroService;
import com.supervision.police.vo.CaseProcessReqVO;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @ClassName MroController
* @Description MaintenanceRepair and Operations
* @Date 2024/12/23 15:09
**/
@RestController
@RequestMapping("/mro")
@RequiredArgsConstructor
public class MroController {
private final MroService mroService;
@Operation(summary = "查询案件列表")
@PostMapping("/caseList")
public R<IPage<CaseProcessDTO>> queryCaseList(@RequestBody CaseProcessReqVO caseProcessReqVO,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "20") Integer size) {
IPage<CaseProcessDTO> list = mroService.queryCaseList(caseProcessReqVO, page, size);
return R.ok(list);
}
@Operation(summary = "案件一键分析")
@PostMapping("/caseAnalysis")
public R<String> analysisCase(@RequestBody List<String> caseIds) {
mroService.analysisCase(caseIds);
return R.ok();
}
}

@ -0,0 +1,50 @@
package com.supervision.police.dto;
import cn.hutool.core.util.StrUtil;
import com.supervision.police.domain.ModelCase;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class CaseProcessDTO {
private String caseId;
private String caseName;
/**
* 0: 1 2 3
*/
private String analysisStatus;
/**
*
*/
private LocalDateTime analysisSuccessTime;
/**
* 1: 2 3:
*/
private String identifyResult;
/**
* 0 1
*/
private String enableAnalyse;
public CaseProcessDTO() {
}
public CaseProcessDTO(ModelCase modelCase) {
if (null == modelCase){
return;
}
this.caseId = modelCase.getId();
this.caseName = modelCase.getCaseName();
this.analysisStatus = StrUtil.toString(modelCase.getCaseAnalysisStatus());
this.analysisSuccessTime = modelCase.getCaseAnalysisSuccessTime();
this.identifyResult = modelCase.getIdentifyResult();
}
}

@ -11,6 +11,8 @@ public interface ModelService {
R<?> analyseCase(AnalyseCaseDTO analyseCaseDTO);
R<?> analyseCaseWrapper(AnalyseCaseDTO analyseCaseDTO);
/**
*

@ -0,0 +1,13 @@
package com.supervision.police.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.police.dto.CaseProcessDTO;
import com.supervision.police.vo.CaseProcessReqVO;
import java.util.List;
public interface MroService {
IPage<CaseProcessDTO> queryCaseList(CaseProcessReqVO caseProcessReqVO, Integer page, Integer size);
void analysisCase(List<String> caseIds);
}

@ -2,7 +2,7 @@ package com.supervision.police.service;
import com.supervision.police.domain.TaskCaseRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.police.dto.taskRecord.TaskRecordVo;
import java.util.List;
/**
* @author dxy
@ -11,4 +11,10 @@ import com.supervision.police.dto.taskRecord.TaskRecordVo;
*/
public interface TaskCaseRecordService extends IService<TaskCaseRecord> {
/**
*
* @return
*/
List<TaskCaseRecord> queryProcessingTaskList();
}

@ -133,7 +133,7 @@ public class ChatServiceImpl implements ChatService {
log.info("案件【{}】尚未执行模型分析,现在开始执行", modelCase.getCaseName());
AnalyseCaseDTO analyseCaseDTO = new AnalyseCaseDTO();
analyseCaseDTO.setCaseId(caseId);
modelService.analyseCase(analyseCaseDTO);
modelService.analyseCaseWrapper(analyseCaseDTO);
}
answerMap = JSON.parseObject(JSON.toJSONString(modelService.caseScoreDetail(caseId)), Map.class);
} else if (INTENT_TYPE_TEXT_CASE_OVERVIEW.equals(query)) {
@ -283,7 +283,7 @@ public class ChatServiceImpl implements ChatService {
log.info("案件【{}】尚未执行模型分析,现在开始执行", modelCase.getCaseName());
AnalyseCaseDTO analyseCaseDTO = new AnalyseCaseDTO();
analyseCaseDTO.setCaseId(caseId);
modelService.analyseCase(analyseCaseDTO);
modelService.analyseCaseWrapper(analyseCaseDTO);
}
indexDetailPage = modelCaseService.getIndexDetail(indexResultQuery, 1, 1);
if (!indexDetailPage.getRecords().isEmpty()) {
@ -341,7 +341,7 @@ public class ChatServiceImpl implements ChatService {
log.info("案件【{}】尚未执行模型分析,现在开始执行", modelCase.getCaseName());
AnalyseCaseDTO analyseCaseDTO = new AnalyseCaseDTO();
analyseCaseDTO.setCaseId(caseId);
modelService.analyseCase(analyseCaseDTO);
modelService.analyseCaseWrapper(analyseCaseDTO);
}
answerMap = JSON.parseObject(JSON.toJSONString(modelService.caseScoreDetail(caseId)), Map.class);
break;

@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.deepoove.poi.XWPFTemplate;
import com.supervision.common.constant.Constants;
import com.supervision.common.constant.IndexRuleConstants;
import com.supervision.common.domain.R;
import com.supervision.common.utils.StringUtils;
@ -34,6 +35,7 @@ import lombok.extern.slf4j.Slf4j;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Result;
import org.neo4j.driver.Session;
import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
@ -253,6 +255,23 @@ public class ModelServiceImpl implements ModelService {
return R.ok();
}
@Override
public R<?> analyseCaseWrapper(AnalyseCaseDTO analyseCaseDTO) {
Assert.notEmpty(analyseCaseDTO.getCaseId(), "案件ID不能为空");
caseStatusManageService.whenAnalyseCaseStart(analyseCaseDTO.getCaseId());
try {
ModelService modelService = (ModelService) AopContext.currentProxy();
R<?> result =modelService.analyseCase(analyseCaseDTO);
if (Constants.SUCCESS != result.getCode()){
caseStatusManageService.whenAnalyseCaseFail(analyseCaseDTO.getCaseId());
}
return result;
} catch (Exception e) {
caseStatusManageService.whenAnalyseCaseFail(analyseCaseDTO.getCaseId());
return R.fail(e.getMessage());
}
}
private void removeAtomicResultWithNoReference(String modelIndexId, List<ModelIndexAtomicRelation> modelIndexAtomicRelations,
List<ModelAtomicResult> modelAtomicResultList) {

@ -0,0 +1,76 @@
package com.supervision.police.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.police.domain.ModelCase;
import com.supervision.police.domain.TaskCaseRecord;
import com.supervision.police.dto.AnalyseCaseDTO;
import com.supervision.police.dto.CaseProcessDTO;
import com.supervision.police.service.ModelCaseService;
import com.supervision.police.service.ModelService;
import com.supervision.police.service.MroService;
import com.supervision.police.service.TaskCaseRecordService;
import com.supervision.police.vo.CaseProcessReqVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Slf4j
@Service
@RequiredArgsConstructor
public class MroServiceImpl implements MroService {
private final ModelCaseService modelCaseService;
private final ModelService modelService;
private final TaskCaseRecordService caseRecordService;
@Override
public IPage<CaseProcessDTO> queryCaseList(CaseProcessReqVO caseProcessReqVO, Integer page, Integer size) {
Page<ModelCase> paged = modelCaseService.lambdaQuery()
.like(StrUtil.isNotEmpty(caseProcessReqVO.getCaseName()), ModelCase::getCaseName, caseProcessReqVO.getCaseName())
.in(CollUtil.isNotEmpty(caseProcessReqVO.getIdentifyResult()), ModelCase::getIdentifyResult, caseProcessReqVO.getIdentifyResult())
.in(CollUtil.isNotEmpty(caseProcessReqVO.getAnalysisStatus()), ModelCase::getCaseAnalysisStatus, caseProcessReqVO.getAnalysisStatus())
.orderBy(true, StrUtil.equalsIgnoreCase(caseProcessReqVO.getSort(), "asc"), ModelCase::getCaseAnalysisSuccessTime)
.page(Page.of(page, size));
final Set<String> processCaseIds = new HashSet<>();
if (!paged.getRecords().isEmpty()){
caseRecordService.queryProcessingTaskList().stream().map(TaskCaseRecord::getCaseId).forEach(processCaseIds::add);
}
return paged.convert(r->{
CaseProcessDTO caseProcessDTO = new CaseProcessDTO(r);
caseProcessDTO.setEnableAnalyse(processCaseIds.contains(r.getId()) ? "0" : "1");
return caseProcessDTO;
});
}
@Override
public void analysisCase(List<String> caseIds) {
Assert.notEmpty(caseIds, "案件id不能为空!");
List<ModelCase> modelCases = modelCaseService.listByIds(caseIds);
Assert.notEmpty(modelCases, "案件不存在!");
for (ModelCase modelCase : modelCases) {
int caseAnalysisStatus = modelCase.getCaseAnalysisStatus();
if (1 == caseAnalysisStatus) {
log.info("案件【{}】正在分析中,跳过", modelCase.getCaseName());
continue;
}
AnalyseCaseDTO analyseCaseDTO = new AnalyseCaseDTO();
analyseCaseDTO.setCaseId(modelCase.getId());
modelService.analyseCaseWrapper(analyseCaseDTO);
}
}
}

@ -3,13 +3,12 @@ package com.supervision.police.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.common.constant.TaskRecordConstants;
import com.supervision.police.domain.TaskCaseRecord;
import com.supervision.police.domain.TaskRecord;
import com.supervision.police.dto.taskRecord.TaskRecordVo;
import com.supervision.police.service.TaskCaseRecordService;
import com.supervision.police.mapper.TaskCaseRecordMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author dxy
* @description task_case_recordService
@ -18,6 +17,10 @@ import org.springframework.stereotype.Service;
@Service
public class TaskCaseRecordServiceImpl extends ServiceImpl<TaskCaseRecordMapper, TaskCaseRecord>
implements TaskCaseRecordService{
@Override
public List<TaskCaseRecord> queryProcessingTaskList() {
return super.lambdaQuery().eq(TaskCaseRecord::getStatus, TaskRecordConstants.TASK_STATUS_PROCESSING).list();
}
}

@ -0,0 +1,29 @@
package com.supervision.police.vo;
import lombok.Data;
import java.util.List;
@Data
public class CaseProcessReqVO {
/**
*
*/
private String caseName;
/**
*
*/
private List<String> identifyResult;
/**
*
*/
private List<String> analysisStatus;
/**
* asc/desc
*/
private String sort;
}
Loading…
Cancel
Save