From f7da9c67c01b0f81d6489a4e6f27eef1ee5a3038 Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Fri, 1 Nov 2024 13:36:38 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E8=AF=81=E6=8D=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CaseEvidenceController.java | 8 ++ .../police/service/CaseEvidenceService.java | 6 ++ .../service/impl/CaseEvidenceServiceImpl.java | 94 ++++++++++++++++++- .../service/impl/ModelIndexServiceImpl.java | 2 + .../police/service/impl/ModelServiceImpl.java | 5 + .../demo/FuHsiApplicationTests.java | 5 + 6 files changed, 119 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/supervision/police/controller/CaseEvidenceController.java b/src/main/java/com/supervision/police/controller/CaseEvidenceController.java index 89eaca0..b95b1ea 100644 --- a/src/main/java/com/supervision/police/controller/CaseEvidenceController.java +++ b/src/main/java/com/supervision/police/controller/CaseEvidenceController.java @@ -185,4 +185,12 @@ public class CaseEvidenceController { String directoryName = caseEvidenceService.generateDirectoryName(caseId,categoryId,provider); return R.ok(directoryName); } + + @Operation(summary = "查询证据详情-结果以树的方式展示") + @GetMapping("/fresh") + public R generateDirectoryName() { + caseEvidenceService.refreshCaseEvidence(); + return R.ok("success"); + } + } diff --git a/src/main/java/com/supervision/police/service/CaseEvidenceService.java b/src/main/java/com/supervision/police/service/CaseEvidenceService.java index c801d95..6ed4af0 100644 --- a/src/main/java/com/supervision/police/service/CaseEvidenceService.java +++ b/src/main/java/com/supervision/police/service/CaseEvidenceService.java @@ -90,6 +90,12 @@ public interface CaseEvidenceService extends IService { */ void initCaseEvidenceDirectory(String caseId,String caseType); + /** + * 刷新案件证据数据 + * 由于添加了证据分类的功能,所以需要把存量数据按照现有规则重新调整 + */ + void refreshCaseEvidence(); + /** * 更新案件证据目录 * @param evidenceDirectory 目录信息 diff --git a/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java b/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java index 87b8de2..2486761 100644 --- a/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java @@ -21,7 +21,6 @@ import com.supervision.police.vo.VerifyEvidenceReqVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.aop.framework.AopContext; -import org.springframework.aop.support.AopUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Async; @@ -404,6 +403,99 @@ public class CaseEvidenceServiceImpl extends ServiceImpl list = modelCaseService.list(); + List allEvidence = super.list(); + List allFile = evidenceFileService.list(); + + Map catagroyMap = Map.of("1", "1",/** 书证**/ + "2", "3",/** 物证**/ + "3", "",/** 供述**/ + "4", "2",/** 电子证据**/ + "5", "4",/** 鉴定意见**/ + "6", "",/** 证人证言**/ + "7", "5",/** 视听资料**/ + "8", "6"/** 勘验笔录**/); + + Set findCaseIdSet = evidenceDirectoryService.list().stream().map(EvidenceDirectory::getCaseId).collect(Collectors.toSet()); + + for (ModelCase modelCase : list) { + String caseType = modelCase.getCaseType(); + String id = modelCase.getId(); + if (findCaseIdSet.contains(id)){ + // 已经初始化一次的数据,不进行二次处理 + continue; + } + // 开始初始化 + initCaseEvidenceDirectory(id, caseType); + EvidenceDirectoryDTO rootDirectory = new EvidenceDirectoryDTO(listDirectoryTree(id)); + + List evidenceList = allEvidence.stream().filter(ce -> StrUtil.equals(ce.getCaseId(), id)).toList(); + for (CaseEvidence caseEvidence : evidenceList) { + String directoryId = caseEvidence.getDirectoryId(); + if (StrUtil.isNotEmpty(directoryId)){ + log.warn("证据id:{},证据名:{},已经存在目录id:{},不进行目录绑定操作",caseEvidence.getId(),caseEvidence.getEvidenceName(),directoryId); + continue; + } + + if (StrUtil.equalsAny(caseEvidence.getEvidenceType(), "3","6")){ + log.warn("证据id:{},证据名:{},证据类型为【{}】,清除无用数据",caseEvidence.getId(),caseEvidence.getEvidenceName(),caseEvidence.getEvidenceType()); + super.removeById(caseEvidence.getId()); + continue; + } + if (!catagroyMap.containsKey(caseEvidence.getEvidenceType())){ + log.warn("证据id:{},证据名:{},证据类型为【{}】,没有对应的目录,请检查目录配置",caseEvidence.getId(),caseEvidence.getEvidenceName(),caseEvidence.getEvidenceType()); + continue; + } + + if (StrUtil.isEmpty(caseEvidence.getEvidenceType())){ + log.warn("证据id:{},证据名:{},证据类型不能为空,默认为书证",caseEvidence.getId(),caseEvidence.getEvidenceName()); + caseEvidence.setEvidenceType("1"); + } + EvidenceDirectoryDTO topDirectory = findTopDirectory(rootDirectory, catagroyMap.get(caseEvidence.getEvidenceType())); + if (null == topDirectory){ + log.warn("证据id:{},证据名:{},证据类型为【{}】,在根目录下没有对应的目录,请检查目录配置",caseEvidence.getId(),caseEvidence.getEvidenceName(),caseEvidence.getEvidenceType()); + continue; + } + caseEvidence.setDirectoryId(topDirectory.getId()); + caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_SUCCESS); + super.updateById(caseEvidence); + + List files = allFile.stream().filter(ef -> StrUtil.equals(ef.getEvidenceId(), caseEvidence.getId())).peek(ef -> ef.setDirectoryId(caseEvidence.getDirectoryId())).toList(); + Map minioFileMap = minioService.listMinioFile(files.stream().map(EvidenceFile::getFileId).toList()).stream().collect(Collectors.toMap(MinioFile::getId, Function.identity())); + for (EvidenceFile file : files) { + evidenceFileService.updateById(file); + MinioFile minioFile = minioFileMap.get(file.getFileId()); + if (null == minioFile){ + log.warn("证据id:{},证据名:{},文件id:{}不存在minio上传信息", caseEvidence.getId(),caseEvidence.getEvidenceName(),file.getFileId()); + continue; + } + fileOcrProcessService.multipleTypeOcrProcess(List.of(file.getFileId()),minioFile.getFileType()); + } + + } + } + + } + + private EvidenceDirectoryDTO findTopDirectory(EvidenceDirectoryDTO rootDirectory, String categoryId) { + if (StrUtil.equals(rootDirectory.getCategoryId(), categoryId)){ + return rootDirectory; + } + if (CollUtil.isNotEmpty(rootDirectory.getChild())){ + for (EvidenceDirectoryDTO child : rootDirectory.getChild()) { + EvidenceDirectoryDTO directory = findTopDirectory(child, categoryId); + if (directory != null){ + return directory; + } + } + } + return null; + } + @Override public Boolean updateDirectory(EvidenceDirectory evidenceDirectory) { diff --git a/src/main/java/com/supervision/police/service/impl/ModelIndexServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ModelIndexServiceImpl.java index 299c191..25a6aae 100644 --- a/src/main/java/com/supervision/police/service/impl/ModelIndexServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ModelIndexServiceImpl.java @@ -135,6 +135,8 @@ public class ModelIndexServiceImpl extends ServiceImpl analyseCase(AnalyseCaseDTO analyseCaseDTO) { @@ -555,6 +557,9 @@ public class ModelServiceImpl implements ModelService { modelIndexResultMapper, modelIndexMapper, modelAtomicResultMapper); caseScoreDetailBuilder.loadCaseScoreDetail(caseId); + List evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId); + List evidenceCategoryDTOS = evidenceCategoryService.listCategoryTree(caseScoreDetailBuilder.getCaseType()); + caseScoreDetailBuilder.setEvidence(new EvidenceDirectoryDTO(evidenceDirectoryDTOS), new EvidenceCategoryDTO(evidenceCategoryDTOS)); return caseScoreDetailBuilder.build(); } diff --git a/src/test/java/com/supervision/demo/FuHsiApplicationTests.java b/src/test/java/com/supervision/demo/FuHsiApplicationTests.java index e8650e6..c5b051c 100644 --- a/src/test/java/com/supervision/demo/FuHsiApplicationTests.java +++ b/src/test/java/com/supervision/demo/FuHsiApplicationTests.java @@ -326,4 +326,9 @@ public class FuHsiApplicationTests { private String result; private long time; } + @Test + void refreshCaseEvidenceTest() { + caseEvidenceService.refreshCaseEvidence(); + System.out.println("执行完成"); + } }