|
|
|
@ -2,6 +2,8 @@ package com.supervision.police.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.date.TimeInterval;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
@ -413,7 +415,6 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class, transactionManager = "dataSourceTransactionManager")
|
|
|
|
|
public void refreshCaseEvidence() {
|
|
|
|
|
log.info("开始初始化案件的证据目录。=========>>>>");
|
|
|
|
|
|
|
|
|
@ -430,60 +431,82 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
"7", "5",/*视听资料*/
|
|
|
|
|
"8", "6"/*勘验笔录*/);
|
|
|
|
|
|
|
|
|
|
TimeInterval interval = DateUtil.timer();
|
|
|
|
|
interval.start();
|
|
|
|
|
int successCount = 0;
|
|
|
|
|
int errorCount = 0;
|
|
|
|
|
int index = 0;
|
|
|
|
|
for (ModelCase modelCase : list) {
|
|
|
|
|
String caseType = modelCase.getCaseType();
|
|
|
|
|
String id = modelCase.getId();
|
|
|
|
|
// 开始初始化
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
interval.start(modelCase.getId());
|
|
|
|
|
log.info("开始初始化案件【{}】的目录。", modelCase.getCaseName());
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
((CaseEvidenceService) AopContext.currentProxy()).doReplaceEvidence(modelCase, allEvidence, catagroyMap, allFile);
|
|
|
|
|
successCount++;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("案件{}的目录初始化失败。案件id:{}", modelCase.getCaseName(), modelCase.getId(),e);
|
|
|
|
|
errorCount++;
|
|
|
|
|
}
|
|
|
|
|
index += 1;
|
|
|
|
|
log.info("案件【{}】的目录初始化完成。耗时:{}秒,占总体进度:{}%", modelCase.getCaseName(),interval.intervalSecond(modelCase.getId()),index/(list.size()*1.0)*100);
|
|
|
|
|
}
|
|
|
|
|
log.info("<<<<=======初始化案件的证据目录完成。案件总条数:{},总耗时:{}秒,成功个数:{},失败个数:{}", list.size(),interval.intervalSecond(),successCount,errorCount);
|
|
|
|
|
|
|
|
|
|
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());
|
|
|
|
|
@Transactional(rollbackFor = Exception.class, transactionManager = "dataSourceTransactionManager",propagation = Propagation.REQUIRES_NEW)
|
|
|
|
|
public void doReplaceEvidence(ModelCase modelCase, List<CaseEvidence> allEvidence, Map<String, String> catagroyMap, List<EvidenceFile> allFile) {
|
|
|
|
|
String caseType = modelCase.getCaseType();
|
|
|
|
|
String id = modelCase.getId();
|
|
|
|
|
// 开始初始化
|
|
|
|
|
initCaseEvidenceDirectory(id, caseType);
|
|
|
|
|
EvidenceDirectoryDTO rootDirectory = new EvidenceDirectoryDTO(listDirectoryTree(id));
|
|
|
|
|
|
|
|
|
|
List<CaseEvidence> evidenceList = allEvidence.stream().filter(ce -> StrUtil.equals(ce.getCaseId(), id)).toList();
|
|
|
|
|
log.info("案件{}证据总数:{}", modelCase.getCaseName(), evidenceList.size());
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
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());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fileOcrProcessService.multipleTypeOcrProcess(List.of(file.getFileId()),minioFile.getFileType());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
log.info("<<<<=======初始化案件的证据目录完成。案件总条数:{}", list.size());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private EvidenceDirectoryDTO findTopDirectory(EvidenceDirectoryDTO rootDirectory, String categoryId) {
|
|
|
|
|