|
|
|
@ -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<CaseEvidenceMapper, Cas
|
|
|
|
|
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
|
|
|
|
|
public Boolean updateDirectory(EvidenceDirectory evidenceDirectory) {
|
|
|
|
|
|
|
|
|
|