|
|
|
@ -5,6 +5,7 @@ import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
|
|
|
@ -183,56 +184,79 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
// 三级目录查询证据文件
|
|
|
|
|
List<CaseEvidence> list = this.lambdaQuery().eq(CaseEvidence::getDirectoryId, directoryId).list();
|
|
|
|
|
if (CollUtil.isNotEmpty(list)) {
|
|
|
|
|
Page<EvidenceFileDTO> page = evidenceFileService.pageListFileInfo(
|
|
|
|
|
list.stream().map(CaseEvidence::getId).toList(), Page.of(pageNum, pageSize));
|
|
|
|
|
caseEvidencePage = page.convert(file -> {
|
|
|
|
|
CaseEvidence caseEvidence = new CaseEvidence();
|
|
|
|
|
caseEvidence.setId(file.getEvidenceId());
|
|
|
|
|
caseEvidence.setCaseId(caseId);
|
|
|
|
|
caseEvidence.setEvidenceName(file.getFileName());
|
|
|
|
|
caseEvidence.setEvidenceType(CollUtil.getFirst(list).getEvidenceType());
|
|
|
|
|
caseEvidence.setProvider(CollUtil.getFirst(list).getProvider());
|
|
|
|
|
caseEvidence.setDirectoryId(directoryId);
|
|
|
|
|
return caseEvidence;
|
|
|
|
|
});
|
|
|
|
|
caseEvidencePage.setTotal(page.getTotal());
|
|
|
|
|
caseEvidencePage.setSize(page.getSize());
|
|
|
|
|
caseEvidencePage.setCurrent(page.getCurrent());
|
|
|
|
|
}
|
|
|
|
|
Map<String, CaseEvidence> caseEvidenceMap = list.stream().collect(Collectors.toMap(CaseEvidence::getId, Function.identity()));
|
|
|
|
|
if (CollUtil.isNotEmpty(list)) {
|
|
|
|
|
Page<EvidenceFileDTO> page = evidenceFileService.pageListFileInfo(
|
|
|
|
|
list.stream().map(CaseEvidence::getId).toList(), Page.of(pageNum, pageSize));
|
|
|
|
|
caseEvidencePage = page.convert(file -> {
|
|
|
|
|
CaseEvidence caseEvidence = new CaseEvidence();
|
|
|
|
|
caseEvidence.setId(file.getEvidenceId());
|
|
|
|
|
caseEvidence.setCaseId(caseId);
|
|
|
|
|
caseEvidence.setEvidenceName(file.getFileName());
|
|
|
|
|
caseEvidence.setEvidenceType(CollUtil.getFirst(list).getEvidenceType());
|
|
|
|
|
caseEvidence.setProvider(CollUtil.getFirst(list).getProvider());
|
|
|
|
|
caseEvidence.setDirectoryId(directoryId);
|
|
|
|
|
CaseEvidence evidence = caseEvidenceMap.get(file.getEvidenceId());
|
|
|
|
|
if (null != evidence) {
|
|
|
|
|
if (StrUtil.isNotEmpty(evidence.getProcessStatus())) {
|
|
|
|
|
caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_MAPPING.get(evidence.getProcessStatus()));
|
|
|
|
|
}
|
|
|
|
|
caseEvidence.setProvider(evidence.getProvider());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return caseEvidence;
|
|
|
|
|
});
|
|
|
|
|
caseEvidencePage.setTotal(page.getTotal());
|
|
|
|
|
caseEvidencePage.setSize(page.getSize());
|
|
|
|
|
caseEvidencePage.setCurrent(page.getCurrent());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (caseEvidencePage.getTotal() == 0) {
|
|
|
|
|
return PageDTO.of(pageNum, pageSize, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (caseEvidencePage.getTotal() == 0) {
|
|
|
|
|
return PageDTO.of(pageNum, pageSize, 0);
|
|
|
|
|
}
|
|
|
|
|
// 查询文件信息
|
|
|
|
|
List<String> evidenceIds = caseEvidencePage.getRecords().stream().map(CaseEvidence::getId).distinct().toList();
|
|
|
|
|
List<EvidenceFileDTO> fileInfoList = evidenceFileService.listFileInfo(evidenceIds);
|
|
|
|
|
Map<String, List<EvidenceFileDTO>> evidenceFileMap = fileInfoList.stream().collect(Collectors.groupingBy(EvidenceFileDTO::getEvidenceId));
|
|
|
|
|
|
|
|
|
|
// 查询文件信息
|
|
|
|
|
List<String> evidenceIds = caseEvidencePage.getRecords().stream().map(CaseEvidence::getId).distinct().toList();
|
|
|
|
|
List<EvidenceFileDTO> fileInfoList = evidenceFileService.listFileInfo(evidenceIds);
|
|
|
|
|
Map<String, List<EvidenceFileDTO>> evidenceFileMap = fileInfoList.stream().collect(Collectors.groupingBy(EvidenceFileDTO::getEvidenceId));
|
|
|
|
|
List<RecordFileDTO> recordFileDTOS = fileOcrProcessService.queryFileList(fileInfoList.stream().map(EvidenceFileDTO::getFileId).toList());
|
|
|
|
|
|
|
|
|
|
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listDirectoryTree(caseId);
|
|
|
|
|
|
|
|
|
|
List<RecordFileDTO> recordFileDTOS = fileOcrProcessService.queryFileList(fileInfoList.stream().map(EvidenceFileDTO::getFileId).toList());
|
|
|
|
|
|
|
|
|
|
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listDirectoryTree(caseId);
|
|
|
|
|
// 转换分页结果
|
|
|
|
|
//查询字典
|
|
|
|
|
EvidenceDirectoryDTO queryDirectory = evidenceDirectoryService.findDirectoryById(directoryId, evidenceDirectoryDTOS);
|
|
|
|
|
List<ComDictionary> evidenceTypeDic = comDictionaryService.lambdaQuery().eq(ComDictionary::getType, "evidence_type").list();
|
|
|
|
|
return caseEvidencePage.convert(caseEvidence -> {
|
|
|
|
|
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO(caseEvidence, evidenceFileMap.get(caseEvidence.getId()));
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceTypeDesc(
|
|
|
|
|
comDictionaryService.getName(evidenceTypeDic, "evidence_type", caseEvidence.getEvidenceType()));
|
|
|
|
|
caseEvidenceDetailDTO.setContentTypeValue(recordFileDTOS);
|
|
|
|
|
|
|
|
|
|
EvidenceDirectoryDTO directory = evidenceDirectoryService.findDirectoryById(caseEvidence.getDirectoryId(), evidenceDirectoryDTOS);
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceFormatValue(directory, null != queryDirectory && directory.getLevel() == 3);
|
|
|
|
|
return caseEvidenceDetailDTO;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 转换分页结果
|
|
|
|
|
//查询字典
|
|
|
|
|
List<ComDictionary> evidenceTypeDic = comDictionaryService.lambdaQuery().eq(ComDictionary::getType, "evidence_type").list();
|
|
|
|
|
return caseEvidencePage.convert(caseEvidence -> {
|
|
|
|
|
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO(caseEvidence, evidenceFileMap.get(caseEvidence.getId()));
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceTypeDesc(
|
|
|
|
|
comDictionaryService.getName(evidenceTypeDic, "evidence_type", caseEvidence.getEvidenceType()));
|
|
|
|
|
caseEvidenceDetailDTO.setContentTypeValue(recordFileDTOS);
|
|
|
|
|
|
|
|
|
|
EvidenceDirectoryDTO directory = evidenceDirectoryService.findDirectoryById(caseEvidence.getDirectoryId(), evidenceDirectoryDTOS);
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceFormatValue(directory);
|
|
|
|
|
return caseEvidenceDetailDTO;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
private List<String> findAllDirectoryId(String directoryId,List<EvidenceDirectoryDTO> evidenceDirectoryDTOS){
|
|
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(directoryId)){
|
|
|
|
|
Optional<EvidenceDirectoryDTO> first = evidenceDirectoryDTOS.stream().filter(dto -> null != dto.findDirectory(directoryId)).findFirst();
|
|
|
|
|
if (first.isPresent()){
|
|
|
|
|
evidenceDirectoryDTOS = first.get().listAllDirectory();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return evidenceDirectoryDTOS.stream()
|
|
|
|
|
.flatMap(evidenceDirectoryDTO -> evidenceDirectoryDTO.listAllDirectory()
|
|
|
|
|
.stream().map(EvidenceDirectoryDTO::getId)).toList();
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public CaseEvidenceDetailDTO queryEvidenceDetail(String evidenceId) {
|
|
|
|
|
return super.getBaseMapper().queryEvidenceDetail(evidenceId);
|
|
|
|
@ -310,6 +334,12 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void callEvidenceAnalysis(String evidenceId) {
|
|
|
|
|
Assert.notEmpty(evidenceId, "证据ID不能为空");
|
|
|
|
|
xxlJobService.executeTaskByJobHandler("evidenceAnalysis", evidenceId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<EvidenceCategoryDTO> listCategoryTree(String caseType) {
|
|
|
|
|
|
|
|
|
@ -444,9 +474,13 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
((CaseEvidenceService) AopContext.currentProxy()).preSyncSubmitOCR(evidenceFileDTOList);
|
|
|
|
|
|
|
|
|
|
for (CaseEvidenceDetailDTO caseEvidenceDetailDTO : operationalEvidenceList) {
|
|
|
|
|
if (StrUtil.equals(caseEvidenceDetailDTO.getUpdateStatus(), "1")) {
|
|
|
|
|
// 需要分析(ocr识别+标题提取)
|
|
|
|
|
xxlJobService.executeTaskByJobHandler("evidenceAnalysis", caseEvidenceDetailDTO.getId());
|
|
|
|
|
if (StrUtil.equals(caseEvidenceDetailDTO.getUpdateStatus(),"-1")){
|
|
|
|
|
boolean match = caseEvidenceDetailDTO.getFileList().stream().allMatch(file -> StrUtil.equals(file.getUpdateStatus(), "1"));
|
|
|
|
|
if(match){
|
|
|
|
|
// 需要分析(ocr识别+标题提取)
|
|
|
|
|
xxlJobService.executeTaskByJobHandler("evidenceAnalysis", caseEvidenceDetailDTO.getId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -550,7 +584,10 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
List<EvidenceVerifyDTO> value = entry.getValue();
|
|
|
|
|
|
|
|
|
|
// 更新证据属性
|
|
|
|
|
this.lambdaUpdate().eq(CaseEvidence::getId, evidenceId).set(CaseEvidence::getProperty, CollUtil.getFirst(value).getProperties());
|
|
|
|
|
this.lambdaUpdate().eq(CaseEvidence::getId, evidenceId)
|
|
|
|
|
.set(CaseEvidence::getProperty, JSONUtil.toJsonStr(CollUtil.getFirst(value).getProperties()))
|
|
|
|
|
.set(CaseEvidence::getTitle, CollUtil.getFirst(value).getTitle())
|
|
|
|
|
.update();
|
|
|
|
|
|
|
|
|
|
// 修改ocr内容
|
|
|
|
|
for (EvidenceVerifyDTO verifyDTO : value) {
|
|
|
|
@ -582,20 +619,22 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<EvidenceVerifyDTO> collect = evidenceDirectoryList.stream()
|
|
|
|
|
.filter(evidenceDirectoryDTO -> CollUtil.isEmpty(evidenceDirectoryDTO.getFileIdList()))
|
|
|
|
|
.flatMap(evidenceDirectoryDTO -> evidenceDirectoryDTO.getFileInfoList().stream().map(i -> {
|
|
|
|
|
List<EvidenceVerifyDTO> evidenceVerifyDTOS = evidenceDirectoryList.stream()
|
|
|
|
|
.flatMap(evidenceDirectoryDTO -> evidenceDirectoryDTO.listAllFile().stream())
|
|
|
|
|
.map(fileDTO -> {
|
|
|
|
|
EvidenceVerifyDTO evidenceVerifyDTO = new EvidenceVerifyDTO();
|
|
|
|
|
evidenceVerifyDTO.setEvidenceId(i.getEvidenceId());
|
|
|
|
|
evidenceVerifyDTO.setFileId(i.getFileId());
|
|
|
|
|
evidenceVerifyDTO.setOcrText(i.getOcrText());
|
|
|
|
|
if (null != i.getEvidenceInfo()) {
|
|
|
|
|
evidenceVerifyDTO.setProperties(i.getEvidenceInfo().getProperty());
|
|
|
|
|
evidenceVerifyDTO.setEvidenceId(fileDTO.getEvidenceId());
|
|
|
|
|
evidenceVerifyDTO.setFileId(fileDTO.getFileId());
|
|
|
|
|
evidenceVerifyDTO.setOcrText(fileDTO.getOcrText());
|
|
|
|
|
CaseEvidence evidenceInfo = fileDTO.getEvidenceInfo();
|
|
|
|
|
if (null != evidenceInfo) {
|
|
|
|
|
evidenceVerifyDTO.setProperties(evidenceInfo.getProperty());
|
|
|
|
|
evidenceVerifyDTO.setTitle(evidenceInfo.getTitle());
|
|
|
|
|
}
|
|
|
|
|
return evidenceVerifyDTO;
|
|
|
|
|
})).toList();
|
|
|
|
|
}).toList();
|
|
|
|
|
|
|
|
|
|
this.verifyEvidence(collect, verifyEvidenceReqVO.getCaseId(), verifyEvidenceReqVO.getBatchNo());
|
|
|
|
|
this.verifyEvidence(evidenceVerifyDTOS, verifyEvidenceReqVO.getCaseId(), verifyEvidenceReqVO.getBatchNo());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -670,29 +709,40 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Assert.notEmpty(directoryIdList, "目录分类不存在");
|
|
|
|
|
EvidenceDirectoryDTO directory = null;
|
|
|
|
|
EvidenceDirectoryDTO parentDirectory = null;
|
|
|
|
|
for (EvidenceDirectoryDTO evidenceDirectoryDTO : evidenceDirectoryDTOS) {
|
|
|
|
|
directory = evidenceDirectoryDTO.findDirectory(CollUtil.getFirst(directoryIdList));
|
|
|
|
|
if (null != directory) {
|
|
|
|
|
parentDirectory = evidenceDirectoryDTO.findDirectory(CollUtil.getFirst(directoryIdList));
|
|
|
|
|
if (null != parentDirectory){
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Assert.notNull(directory, "目录不存在");
|
|
|
|
|
Assert.notNull(parentDirectory, "目录不存在");
|
|
|
|
|
|
|
|
|
|
long count = evidenceDirectoryService.lambdaQuery().eq(EvidenceDirectory::getParentId, directory.getId())
|
|
|
|
|
long count = evidenceDirectoryService.lambdaQuery().eq(EvidenceDirectory::getParentId, parentDirectory.getId())
|
|
|
|
|
.list().stream()
|
|
|
|
|
.filter(d -> StrUtil.contains(d.getDirectoryName(), evidenceDirectory.getDirectoryName())).count();
|
|
|
|
|
if (count > 0) {
|
|
|
|
|
evidenceDirectory.setDirectoryName(evidenceDirectory.getDirectoryName() + count + 1);
|
|
|
|
|
if (count > 0){
|
|
|
|
|
evidenceDirectory.setDirectoryName(evidenceDirectory.getDirectoryName() + (count + 1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EvidenceDirectory directory1 = new EvidenceDirectory();
|
|
|
|
|
directory1.setCaseId(evidenceDirectory.getCaseId());
|
|
|
|
|
directory1.setCategoryId(evidenceDirectory.getCategoryId());
|
|
|
|
|
directory1.setDirectoryName(evidenceDirectory.getDirectoryName());
|
|
|
|
|
directory1.setParentId(directory.getId());
|
|
|
|
|
evidenceDirectoryService.save(directory1);
|
|
|
|
|
return directory1;
|
|
|
|
|
// 创建目录
|
|
|
|
|
EvidenceDirectory directory = new EvidenceDirectory();
|
|
|
|
|
directory.setCaseId(evidenceDirectory.getCaseId());
|
|
|
|
|
directory.setCategoryId(evidenceDirectory.getCategoryId());
|
|
|
|
|
directory.setDirectoryName(evidenceDirectory.getDirectoryName());
|
|
|
|
|
directory.setParentId(parentDirectory.getId());
|
|
|
|
|
evidenceDirectoryService.save(directory);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 目录创建完成,创建证据
|
|
|
|
|
CaseEvidence caseEvidence = new CaseEvidence();
|
|
|
|
|
caseEvidence.setEvidenceName(evidenceDirectory.getDirectoryName());
|
|
|
|
|
caseEvidence.setEvidenceType(directory.getCategoryId());
|
|
|
|
|
caseEvidence.setCaseId(evidenceDirectory.getCaseId());
|
|
|
|
|
caseEvidence.setDirectoryId(directory.getId());
|
|
|
|
|
caseEvidence.setProvider(evidenceDirectory.getProvider());
|
|
|
|
|
this.save(caseEvidence);
|
|
|
|
|
return directory;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -759,12 +809,11 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
caseEvidenceDetailDTOS.add(caseEvidenceDetailDTO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (directory.getLevel() == 3) {
|
|
|
|
|
if (directory.getLevel() == 3){
|
|
|
|
|
// 不会存在需要创建目录的场景
|
|
|
|
|
CaseEvidence caseEvidence = super.lambdaQuery().eq(CaseEvidence::getDirectoryId, directory.getId()).one();
|
|
|
|
|
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO();
|
|
|
|
|
if (CollUtil.isNotEmpty(directory.getFileInfoList())) {
|
|
|
|
|
String evidenceId = CollUtil.getFirst(directory.getFileInfoList()).getEvidenceId();
|
|
|
|
|
caseEvidenceDetailDTO.setId(evidenceId);
|
|
|
|
|
}
|
|
|
|
|
caseEvidenceDetailDTO.setId(caseEvidence.getId());
|
|
|
|
|
// 证据名为目录名
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceName(evidenceFile.getDirectoryName());
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceType(directory.getCategoryId());
|
|
|
|
|