|
|
|
@ -21,6 +21,7 @@ import com.supervision.police.mapper.CaseEvidenceMapper;
|
|
|
|
|
import com.supervision.police.vo.EvidenceDirectoryReqVO;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.aop.framework.AopContext;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
|
@ -161,11 +162,48 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
public IPage<CaseEvidenceDetailDTO> pageListEvidence(String caseId, String directoryId,String evidenceName, Integer pageNum, Integer pageSize) {
|
|
|
|
|
|
|
|
|
|
Assert.notEmpty(caseId, "案件id不能为空");
|
|
|
|
|
Page<CaseEvidence> caseEvidencePage = super.lambdaQuery().eq(CaseEvidence::getCaseId, caseId)
|
|
|
|
|
.eq(StrUtil.isNotEmpty(directoryId), CaseEvidence::getDirectoryId, directoryId)
|
|
|
|
|
.like(StrUtil.isNotEmpty(evidenceName), CaseEvidence::getEvidenceName, evidenceName)
|
|
|
|
|
.orderBy(true, false, CaseEvidence::getUpdateTime)
|
|
|
|
|
.page(new Page<>(pageNum, pageSize));
|
|
|
|
|
|
|
|
|
|
List<String> directoryIds = new ArrayList<>();
|
|
|
|
|
if (StrUtil.isNotEmpty(directoryId)){
|
|
|
|
|
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listDirectoryTree(caseId);
|
|
|
|
|
EvidenceDirectoryDTO directory = evidenceDirectoryService.findDirectoryById(directoryId, evidenceDirectoryDTOS);
|
|
|
|
|
if (null != directory){
|
|
|
|
|
if (directory.getLevel() == 1 || directory.getLevel() == 2){
|
|
|
|
|
directoryIds.addAll(directory.listAllFileId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
IPage<CaseEvidence> caseEvidencePage = new Page<>(pageNum, pageSize);
|
|
|
|
|
if (StrUtil.isEmpty(directoryId) || CollUtil.isNotEmpty(directoryIds)){
|
|
|
|
|
// 全部 或者一级目录 或者 二级目录查询证据
|
|
|
|
|
caseEvidencePage = super.lambdaQuery().eq(CaseEvidence::getCaseId, caseId)
|
|
|
|
|
.in(CollUtil.isNotEmpty(directoryIds), CaseEvidence::getDirectoryId, directoryIds)
|
|
|
|
|
.like(StrUtil.isNotEmpty(evidenceName), CaseEvidence::getEvidenceName, evidenceName)
|
|
|
|
|
.orderBy(true, false, CaseEvidence::getUpdateTime)
|
|
|
|
|
.page(new Page<>(pageNum, pageSize));
|
|
|
|
|
}else {
|
|
|
|
|
// 三级目录查询证据文件
|
|
|
|
|
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());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (caseEvidencePage.getTotal() == 0) {
|
|
|
|
|
return PageDTO.of(pageNum, pageSize, 0);
|
|
|
|
@ -284,10 +322,16 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
@Override
|
|
|
|
|
public List<EvidenceDirectoryDTO> listFileTree(String caseId) {
|
|
|
|
|
|
|
|
|
|
return listFileTree(caseId,null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<EvidenceDirectoryDTO> listFileTree(String caseId, String batchNo) {
|
|
|
|
|
Assert.notEmpty(caseId,"案件ID不能为空!");
|
|
|
|
|
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId);
|
|
|
|
|
|
|
|
|
|
evidenceDirectoryService.appendFile(evidenceDirectoryDTOS, evidenceFileService.listFileInfoByCaseId(caseId));
|
|
|
|
|
|
|
|
|
|
evidenceDirectoryService.appendFile(evidenceDirectoryDTOS, evidenceFileService.listFileInfoByCaseIdAndBatchNo(caseId,batchNo));
|
|
|
|
|
|
|
|
|
|
return evidenceDirectoryDTOS;
|
|
|
|
|
}
|
|
|
|
@ -382,8 +426,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
|
|
|
|
|
List<CaseEvidenceDetailDTO> operationalEvidence = findChangedEvidence(oldEvidences, newEvidences);
|
|
|
|
|
|
|
|
|
|
String batchId = updateCaseEvidence(operationalEvidence);
|
|
|
|
|
|
|
|
|
|
String batchId = ((CaseEvidenceService)AopContext.currentProxy()).updateCaseEvidence(operationalEvidence);
|
|
|
|
|
|
|
|
|
|
for (CaseEvidenceDetailDTO caseEvidenceDetailDTO : operationalEvidence) {
|
|
|
|
|
if (StrUtil.equalsAny(caseEvidenceDetailDTO.getUpdateStatus(),"-1","0")){
|
|
|
|
@ -412,6 +455,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
CaseEvidence caseEvidence = evidence.toCaseEvidence();
|
|
|
|
|
caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_UNPROCESSED);
|
|
|
|
|
this.save(caseEvidence);
|
|
|
|
|
evidence.setId(caseEvidence.getId());
|
|
|
|
|
for (EvidenceFileDTO evidenceFileDTO : evidence.getFileList()) {
|
|
|
|
|
if (evidenceFileDTO.getUpdateStatus().equals("1")){
|
|
|
|
|
// 新增
|
|
|
|
@ -453,12 +497,15 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
if (CollUtil.isEmpty(caseEvidenceDetailDTOS)){
|
|
|
|
|
return new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
List<EvidenceProcessDTO> processDTOList = caseEvidenceDetailDTOS.stream().map(EvidenceProcessDTO::new).collect(Collectors.toList());
|
|
|
|
|
List<EvidenceProcessDTO> processDTOList = caseEvidenceDetailDTOS.stream()
|
|
|
|
|
.filter(evidenceDetail->CollUtil.isNotEmpty(evidenceDetail.getFileList()))
|
|
|
|
|
.map(EvidenceProcessDTO::new).collect(Collectors.toList());
|
|
|
|
|
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId);
|
|
|
|
|
List<EvidenceCategory> categoryList = evidenceCategoryService.lambdaQuery().eq(EvidenceCategory::getCaseType, modelCase.getCaseType()).list();
|
|
|
|
|
|
|
|
|
|
for (EvidenceProcessDTO evidenceProcessDTO : processDTOList) {
|
|
|
|
|
evidenceProcessDTO.setTemplateInfo(evidenceDirectoryDTOS, categoryList);
|
|
|
|
|
evidenceProcessDTO.setEvidenceTypeName(categoryList);
|
|
|
|
|
}
|
|
|
|
|
return processDTOList;
|
|
|
|
|
}
|
|
|
|
@ -503,25 +550,27 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<EvidenceDirectoryDTO> evidenceDetails(String caseId, String batchNo) {
|
|
|
|
|
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listFileTree(caseId);
|
|
|
|
|
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listFileTree(caseId,batchNo);
|
|
|
|
|
|
|
|
|
|
List<CaseEvidence> caseEvidenceList = this.lambdaQuery().eq(CaseEvidence::getCaseId, caseId).list();
|
|
|
|
|
List<CategoryPromptDTO> categoryPromptDTOS = evidenceDirectoryService.listCategoryPrompt(caseId);
|
|
|
|
|
|
|
|
|
|
Map<String, CaseEvidence> caseEvidenceMap = caseEvidenceList.stream().collect(Collectors.toMap(CaseEvidence::getId, Function.identity()));
|
|
|
|
|
Map<String, CategoryPromptDTO> categoryPromptMap = categoryPromptDTOS.stream().collect(Collectors.toMap(CategoryPromptDTO::getDirectoryId, Function.identity()));
|
|
|
|
|
for (EvidenceDirectoryDTO evidenceDirectoryDTO : evidenceDirectoryDTOS) {
|
|
|
|
|
if (CollUtil.isEmpty(evidenceDirectoryDTO.getFileInfoList())){
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
for (EvidenceFileDTO evidenceFileDTO : evidenceDirectoryDTO.getFileInfoList()) {
|
|
|
|
|
evidenceFileDTO.setPrompt(categoryPromptMap.get(evidenceFileDTO.getDirectoryId()));
|
|
|
|
|
evidenceFileDTO.setEvidenceInfo(caseEvidenceMap.get(evidenceFileDTO.getEvidenceId()));
|
|
|
|
|
|
|
|
|
|
Iterator<EvidenceDirectoryDTO> iterator = evidenceDirectoryDTOS.iterator();
|
|
|
|
|
while (iterator.hasNext()){
|
|
|
|
|
EvidenceDirectoryDTO evidenceDirectoryDTO = iterator.next();
|
|
|
|
|
evidenceDirectoryDTO.setFileEvidence(caseEvidenceMap, categoryPromptMap);
|
|
|
|
|
evidenceDirectoryDTO.removeEmptyDirectory();
|
|
|
|
|
if (CollUtil.isEmpty(evidenceDirectoryDTO.getChild())){
|
|
|
|
|
iterator.remove();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return evidenceDirectoryDTOS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String generateDirectoryName(String caseId, String categoryId, String provider) {
|
|
|
|
|
Assert.notEmpty(caseId, "案件id不能为空");
|
|
|
|
@ -611,7 +660,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (directory.getLevel() == 2){
|
|
|
|
|
if (directory.getLevel() == 1 || directory.getLevel() == 2){
|
|
|
|
|
for (String fileId : evidenceFile.getFileIdList()) {
|
|
|
|
|
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO();
|
|
|
|
|
if (null != fileMap.get(fileId)){
|
|
|
|
|