From 5aac77ec1b91ebdc8c58b6f8c01c840e87598c7a Mon Sep 17 00:00:00 2001 From: xueqingkun <xueqingkun@126.com> Date: Wed, 25 Dec 2024 14:35:42 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0=E6=A1=88=E4=BB=B6?= =?UTF-8?q?=E6=89=B9=E5=A4=84=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../police/controller/ModelController.java | 3 +- .../police/controller/MroController.java | 44 +++++++++++ .../police/dto/CaseProcessDTO.java | 50 ++++++++++++ .../police/service/ModelService.java | 2 + .../police/service/MroService.java | 13 ++++ .../police/service/TaskCaseRecordService.java | 8 +- .../police/service/impl/ChatServiceImpl.java | 6 +- .../police/service/impl/ModelServiceImpl.java | 19 +++++ .../police/service/impl/MroServiceImpl.java | 76 +++++++++++++++++++ .../impl/TaskCaseRecordServiceImpl.java | 9 ++- .../police/vo/CaseProcessReqVO.java | 29 +++++++ 11 files changed, 250 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/supervision/police/controller/MroController.java create mode 100644 src/main/java/com/supervision/police/dto/CaseProcessDTO.java create mode 100644 src/main/java/com/supervision/police/service/MroService.java create mode 100644 src/main/java/com/supervision/police/service/impl/MroServiceImpl.java create mode 100644 src/main/java/com/supervision/police/vo/CaseProcessReqVO.java diff --git a/src/main/java/com/supervision/police/controller/ModelController.java b/src/main/java/com/supervision/police/controller/ModelController.java index d635431..bd8d8ed 100644 --- a/src/main/java/com/supervision/police/controller/ModelController.java +++ b/src/main/java/com/supervision/police/controller/ModelController.java @@ -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") diff --git a/src/main/java/com/supervision/police/controller/MroController.java b/src/main/java/com/supervision/police/controller/MroController.java new file mode 100644 index 0000000..628a827 --- /dev/null +++ b/src/main/java/com/supervision/police/controller/MroController.java @@ -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 Maintenance、Repair 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(); + } + +} diff --git a/src/main/java/com/supervision/police/dto/CaseProcessDTO.java b/src/main/java/com/supervision/police/dto/CaseProcessDTO.java new file mode 100644 index 0000000..70e356b --- /dev/null +++ b/src/main/java/com/supervision/police/dto/CaseProcessDTO.java @@ -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(); + } +} diff --git a/src/main/java/com/supervision/police/service/ModelService.java b/src/main/java/com/supervision/police/service/ModelService.java index b160fe1..7017638 100644 --- a/src/main/java/com/supervision/police/service/ModelService.java +++ b/src/main/java/com/supervision/police/service/ModelService.java @@ -11,6 +11,8 @@ public interface ModelService { R<?> analyseCase(AnalyseCaseDTO analyseCaseDTO); + R<?> analyseCaseWrapper(AnalyseCaseDTO analyseCaseDTO); + /** * 获取案件详情 diff --git a/src/main/java/com/supervision/police/service/MroService.java b/src/main/java/com/supervision/police/service/MroService.java new file mode 100644 index 0000000..65e734f --- /dev/null +++ b/src/main/java/com/supervision/police/service/MroService.java @@ -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); +} diff --git a/src/main/java/com/supervision/police/service/TaskCaseRecordService.java b/src/main/java/com/supervision/police/service/TaskCaseRecordService.java index c252aa5..9e31396 100644 --- a/src/main/java/com/supervision/police/service/TaskCaseRecordService.java +++ b/src/main/java/com/supervision/police/service/TaskCaseRecordService.java @@ -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(); } diff --git a/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java index 657db4c..34e110d 100644 --- a/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java @@ -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; diff --git a/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java index 09738dc..280a0ad 100644 --- a/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java @@ -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) { diff --git a/src/main/java/com/supervision/police/service/impl/MroServiceImpl.java b/src/main/java/com/supervision/police/service/impl/MroServiceImpl.java new file mode 100644 index 0000000..87d7a26 --- /dev/null +++ b/src/main/java/com/supervision/police/service/impl/MroServiceImpl.java @@ -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); + } + } + +} diff --git a/src/main/java/com/supervision/police/service/impl/TaskCaseRecordServiceImpl.java b/src/main/java/com/supervision/police/service/impl/TaskCaseRecordServiceImpl.java index e25badd..4e9540e 100644 --- a/src/main/java/com/supervision/police/service/impl/TaskCaseRecordServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/TaskCaseRecordServiceImpl.java @@ -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_record】的数据库操作Service实现 @@ -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(); + } } diff --git a/src/main/java/com/supervision/police/vo/CaseProcessReqVO.java b/src/main/java/com/supervision/police/vo/CaseProcessReqVO.java new file mode 100644 index 0000000..3739d04 --- /dev/null +++ b/src/main/java/com/supervision/police/vo/CaseProcessReqVO.java @@ -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; +}