1. 添加刷新证据功能

topo_dev
xueqingkun 6 months ago
parent aaf2f8245c
commit f7da9c67c0

@ -185,4 +185,12 @@ public class CaseEvidenceController {
String directoryName = caseEvidenceService.generateDirectoryName(caseId,categoryId,provider); String directoryName = caseEvidenceService.generateDirectoryName(caseId,categoryId,provider);
return R.ok(directoryName); return R.ok(directoryName);
} }
@Operation(summary = "查询证据详情-结果以树的方式展示")
@GetMapping("/fresh")
public R<String> generateDirectoryName() {
caseEvidenceService.refreshCaseEvidence();
return R.ok("success");
}
} }

@ -90,6 +90,12 @@ public interface CaseEvidenceService extends IService<CaseEvidence> {
*/ */
void initCaseEvidenceDirectory(String caseId,String caseType); void initCaseEvidenceDirectory(String caseId,String caseType);
/**
*
*
*/
void refreshCaseEvidence();
/** /**
* *
* @param evidenceDirectory * @param evidenceDirectory

@ -21,7 +21,6 @@ import com.supervision.police.vo.VerifyEvidenceReqVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
import org.springframework.aop.support.AopUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
@ -404,6 +403,99 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
initCaseEvidenceDirectory(evidenceCategoryDTOS, caseId, null); initCaseEvidenceDirectory(evidenceCategoryDTOS, caseId, null);
} }
@Override
@Transactional(rollbackFor = Exception.class, transactionManager = "dataSourceTransactionManager")
public void refreshCaseEvidence() {
List<ModelCase> list = modelCaseService.list();
List<CaseEvidence> allEvidence = super.list();
List<EvidenceFile> allFile = evidenceFileService.list();
Map<String, String> catagroyMap = Map.of("1", "1",/** 书证**/
"2", "3",/** 物证**/
"3", "",/** 供述**/
"4", "2",/** 电子证据**/
"5", "4",/** 鉴定意见**/
"6", "",/** 证人证言**/
"7", "5",/** 视听资料**/
"8", "6"/** 勘验笔录**/);
Set<String> 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<CaseEvidence> 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<EvidenceFile> files = allFile.stream().filter(ef -> StrUtil.equals(ef.getEvidenceId(), caseEvidence.getId())).peek(ef -> ef.setDirectoryId(caseEvidence.getDirectoryId())).toList();
Map<String, MinioFile> 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 @Override
public Boolean updateDirectory(EvidenceDirectory evidenceDirectory) { public Boolean updateDirectory(EvidenceDirectory evidenceDirectory) {

@ -135,6 +135,8 @@ public class ModelIndexServiceImpl extends ServiceImpl<ModelIndexMapper, ModelIn
i = modelIndexMapper.insert(modelIndex); i = modelIndexMapper.insert(modelIndex);
modelIndexAtomicRelationService.saveByModelIndex(modelIndex); modelIndexAtomicRelationService.saveByModelIndex(modelIndex);
} else { } else {
ModelIndex dbModelIndex = super.getById(modelIndex.getId());
modelIndex.setJudgeLogic(dbModelIndex.getJudgeLogic());// 保持原来判断逻辑不变
i = modelIndexMapper.updateById(modelIndex); i = modelIndexMapper.updateById(modelIndex);
modelIndexAtomicRelationService.updateByModelIndex(modelIndex); modelIndexAtomicRelationService.updateByModelIndex(modelIndex);
} }

@ -89,6 +89,8 @@ public class ModelServiceImpl implements ModelService {
@Autowired @Autowired
private EvidenceDirectoryService evidenceDirectoryService; private EvidenceDirectoryService evidenceDirectoryService;
private final EvidenceCategoryService evidenceCategoryService;
@Override @Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class) @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public R<?> analyseCase(AnalyseCaseDTO analyseCaseDTO) { public R<?> analyseCase(AnalyseCaseDTO analyseCaseDTO) {
@ -555,6 +557,9 @@ public class ModelServiceImpl implements ModelService {
modelIndexResultMapper, modelIndexMapper, modelAtomicResultMapper); modelIndexResultMapper, modelIndexMapper, modelAtomicResultMapper);
caseScoreDetailBuilder.loadCaseScoreDetail(caseId); caseScoreDetailBuilder.loadCaseScoreDetail(caseId);
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId);
List<EvidenceCategoryDTO> evidenceCategoryDTOS = evidenceCategoryService.listCategoryTree(caseScoreDetailBuilder.getCaseType());
caseScoreDetailBuilder.setEvidence(new EvidenceDirectoryDTO(evidenceDirectoryDTOS), new EvidenceCategoryDTO(evidenceCategoryDTOS));
return caseScoreDetailBuilder.build(); return caseScoreDetailBuilder.build();
} }

@ -326,4 +326,9 @@ public class FuHsiApplicationTests {
private String result; private String result;
private long time; private long time;
} }
@Test
void refreshCaseEvidenceTest() {
caseEvidenceService.refreshCaseEvidence();
System.out.println("执行完成");
}
} }

Loading…
Cancel
Save