EvidenceCategory删除promptId

topo_dev
DESKTOP-DDTUS3E\yaxin 6 months ago
parent 532da0092f
commit 06f3c4f42d

@ -1,16 +1,20 @@
package com.supervision.police.domain; package com.supervision.police.domain;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Data;
/** /**
* *
*
* @TableName evidence_category * @TableName evidence_category
*/ */
@TableName(value ="evidence_category") @TableName(value = "evidence_category")
@Data @Data
public class EvidenceCategory implements Serializable { public class EvidenceCategory implements Serializable {
/** /**
@ -19,8 +23,6 @@ public class EvidenceCategory implements Serializable {
@TableId @TableId
private String id; private String id;
private String promptId;
/** /**
* *
*/ */

@ -5,6 +5,7 @@ import cn.hutool.core.io.unit.DataSizeUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.supervision.common.constant.EvidenceConstants; import com.supervision.common.constant.EvidenceConstants;
import com.supervision.police.domain.EvidenceCategory; import com.supervision.police.domain.EvidenceCategory;
import com.supervision.police.domain.NotePrompt;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@ -77,50 +78,50 @@ public class EvidenceProcessDTO {
this.evidenceId = caseEvidence.getId(); this.evidenceId = caseEvidence.getId();
this.evidenceName = caseEvidence.getEvidenceName(); this.evidenceName = caseEvidence.getEvidenceName();
this.directoryId = caseEvidence.getDirectoryId(); this.directoryId = caseEvidence.getDirectoryId();
if (CollUtil.isNotEmpty(caseEvidence.getFileList())){ if (CollUtil.isNotEmpty(caseEvidence.getFileList())) {
this.attachmentName = caseEvidence.getFileList() this.attachmentName = caseEvidence.getFileList()
.stream().map(EvidenceFileDTO::getFileName).collect(Collectors.joining(",")); .stream().map(EvidenceFileDTO::getFileName).collect(Collectors.joining(","));
Integer sum = caseEvidence.getFileList().stream().map(EvidenceFileDTO::getFileSize).reduce(0, Integer::sum); Integer sum = caseEvidence.getFileList().stream().map(EvidenceFileDTO::getFileSize).reduce(0, Integer::sum);
this.attachmentSize = DataSizeUtil.format(sum); this.attachmentSize = DataSizeUtil.format(sum);
} }
this.evidenceType = caseEvidence.getEvidenceType(); this.evidenceType = caseEvidence.getEvidenceType();
if (StrUtil.isNotEmpty(caseEvidence.getProcessStatus())){ if (StrUtil.isNotEmpty(caseEvidence.getProcessStatus())) {
this.status = EvidenceConstants.PROCESS_STATUS_MAPPING.get(caseEvidence.getProcessStatus()); this.status = EvidenceConstants.PROCESS_STATUS_MAPPING.get(caseEvidence.getProcessStatus());
} }
} }
public void setTemplateInfo(List<EvidenceDirectoryDTO> directoryList,List<EvidenceCategory> categoryList){ public void setTemplateInfo(List<EvidenceDirectoryDTO> directoryList, List<EvidenceCategory> categoryList, List<NotePrompt> notePrompts) {
if (CollUtil.isEmpty(directoryList)){ if (CollUtil.isEmpty(directoryList)) {
return; return;
} }
EvidenceDirectoryDTO directory = null; EvidenceDirectoryDTO directory = null;
for (EvidenceDirectoryDTO directoryDTO : directoryList) { for (EvidenceDirectoryDTO directoryDTO : directoryList) {
directory = directoryDTO.findDirectory(this.directoryId); directory = directoryDTO.findDirectory(this.directoryId);
if (null != directory){ if (null != directory) {
break; break;
} }
} }
if (null == directory){ if (null == directory) {
return; return;
} }
Map<String, EvidenceCategory> categoryMap = categoryList.stream().collect(Collectors.toMap(EvidenceCategory::getId, v -> v)); Map<String, EvidenceCategory> categoryMap = categoryList.stream().collect(Collectors.toMap(EvidenceCategory::getId, v -> v));
EvidenceCategory category = categoryMap.get(directory.getCategoryId()); EvidenceCategory category = categoryMap.get(directory.getCategoryId());
if (null != category){ NotePrompt notePrompt = notePrompts.stream().filter(v -> v.getEvidenceCategoryId().equals(category.getId())).findFirst().orElse(null);
this.templateId = category.getPromptId(); if (null != category && notePrompt != null) {
this.templateId = notePrompt.getId();
this.templateName = category.getCategoryName(); this.templateName = category.getCategoryName();
if (directory.getLevel()== 2){ if (directory.getLevel() == 2) {
this.evidenceTypeName = category.getCategoryName(); this.evidenceTypeName = category.getCategoryName();
} }
if (directory.getLevel() == 3){ if (directory.getLevel() == 3) {
String parentId = category.getParentId(); String parentId = category.getParentId();
if (StrUtil.isNotEmpty(parentId)){ if (StrUtil.isNotEmpty(parentId)) {
EvidenceCategory parentCategory = categoryMap.get(parentId); EvidenceCategory parentCategory = categoryMap.get(parentId);
if (null != parentCategory){ if (null != parentCategory) {
this.evidenceTypeName = StrUtil.join(" / ", parentCategory.getCategoryName(), category.getCategoryName()); this.evidenceTypeName = StrUtil.join(" / ", parentCategory.getCategoryName(), category.getCategoryName());
} }
} }
@ -129,11 +130,11 @@ public class EvidenceProcessDTO {
} }
public void setEvidenceTypeName(List<EvidenceCategory> categoryList){ public void setEvidenceTypeName(List<EvidenceCategory> categoryList) {
if (StrUtil.isNotEmpty(this.evidenceType)){ if (StrUtil.isNotEmpty(this.evidenceType)) {
Map<String, EvidenceCategory> categoryMap = categoryList.stream().collect(Collectors.toMap(EvidenceCategory::getId, v -> v)); Map<String, EvidenceCategory> categoryMap = categoryList.stream().collect(Collectors.toMap(EvidenceCategory::getId, v -> v));
EvidenceCategory category = categoryMap.get(this.evidenceType); EvidenceCategory category = categoryMap.get(this.evidenceType);
if (null != category){ if (null != category) {
this.evidenceTypeName = category.getCategoryName(); this.evidenceTypeName = category.getCategoryName();
} }
} }

@ -4,20 +4,18 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.common.constant.EvidenceConstants;
import com.supervision.minio.domain.MinioFile; import com.supervision.minio.domain.MinioFile;
import com.supervision.minio.service.MinioService; import com.supervision.minio.service.MinioService;
import com.supervision.police.dto.*;
import com.supervision.police.service.*;
import com.supervision.police.domain.CaseEvidence;
import com.supervision.police.domain.ComDictionary;
import com.supervision.police.domain.EvidenceFile;
import com.supervision.common.constant.EvidenceConstants;
import com.supervision.police.domain.*; import com.supervision.police.domain.*;
import com.supervision.police.dto.*;
import com.supervision.police.mapper.CaseEvidenceMapper; import com.supervision.police.mapper.CaseEvidenceMapper;
import com.supervision.police.service.*;
import com.supervision.police.vo.EvidenceDirectoryReqVO; import com.supervision.police.vo.EvidenceDirectoryReqVO;
import com.supervision.police.vo.VerifyEvidenceReqVO; import com.supervision.police.vo.VerifyEvidenceReqVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -28,8 +26,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -150,7 +146,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class) @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public List<CaseEvidenceDetailDTO> queryEvidenceList(String caseId, String batchNo) { public List<CaseEvidenceDetailDTO> queryEvidenceList(String caseId, String batchNo) {
List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS = queryEvidenceList(caseId); List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS = queryEvidenceList(caseId);
if (StrUtil.isNotEmpty(batchNo)){ if (StrUtil.isNotEmpty(batchNo)) {
for (CaseEvidenceDetailDTO evidenceDetail : caseEvidenceDetailDTOS) { for (CaseEvidenceDetailDTO evidenceDetail : caseEvidenceDetailDTOS) {
List<EvidenceFileDTO> filter = evidenceDetail.getFileList().stream().filter(file -> StrUtil.equals(file.getBatchNo(), batchNo)).toList(); List<EvidenceFileDTO> filter = evidenceDetail.getFileList().stream().filter(file -> StrUtil.equals(file.getBatchNo(), batchNo)).toList();
evidenceDetail.setFileList(filter); evidenceDetail.setFileList(filter);
@ -161,32 +157,32 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
@Override @Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class) @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public IPage<CaseEvidenceDetailDTO> pageListEvidence(String caseId, String directoryId,String evidenceName, Integer pageNum, Integer pageSize) { public IPage<CaseEvidenceDetailDTO> pageListEvidence(String caseId, String directoryId, String evidenceName, Integer pageNum, Integer pageSize) {
Assert.notEmpty(caseId, "案件id不能为空"); Assert.notEmpty(caseId, "案件id不能为空");
List<String> directoryIds = new ArrayList<>(); List<String> directoryIds = new ArrayList<>();
if (StrUtil.isNotEmpty(directoryId)){ if (StrUtil.isNotEmpty(directoryId)) {
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listDirectoryTree(caseId); List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listDirectoryTree(caseId);
EvidenceDirectoryDTO directory = evidenceDirectoryService.findDirectoryById(directoryId, evidenceDirectoryDTOS); EvidenceDirectoryDTO directory = evidenceDirectoryService.findDirectoryById(directoryId, evidenceDirectoryDTOS);
if (null != directory){ if (null != directory) {
if (directory.getLevel() == 1 || directory.getLevel() == 2){ if (directory.getLevel() == 1 || directory.getLevel() == 2) {
directoryIds.addAll(directory.listAllFileId()); directoryIds.addAll(directory.listAllFileId());
} }
} }
} }
IPage<CaseEvidence> caseEvidencePage = new Page<>(pageNum, pageSize); IPage<CaseEvidence> caseEvidencePage = new Page<>(pageNum, pageSize);
if (StrUtil.isEmpty(directoryId) || CollUtil.isNotEmpty(directoryIds)){ if (StrUtil.isEmpty(directoryId) || CollUtil.isNotEmpty(directoryIds)) {
// 全部 或者一级目录 或者 二级目录查询证据 // 全部 或者一级目录 或者 二级目录查询证据
caseEvidencePage = super.lambdaQuery().eq(CaseEvidence::getCaseId, caseId) caseEvidencePage = super.lambdaQuery().eq(CaseEvidence::getCaseId, caseId)
.in(CollUtil.isNotEmpty(directoryIds), CaseEvidence::getDirectoryId, directoryIds) .in(CollUtil.isNotEmpty(directoryIds), CaseEvidence::getDirectoryId, directoryIds)
.like(StrUtil.isNotEmpty(evidenceName), CaseEvidence::getEvidenceName, evidenceName) .like(StrUtil.isNotEmpty(evidenceName), CaseEvidence::getEvidenceName, evidenceName)
.orderBy(true, false, CaseEvidence::getUpdateTime) .orderBy(true, false, CaseEvidence::getUpdateTime)
.page(new Page<>(pageNum, pageSize)); .page(new Page<>(pageNum, pageSize));
}else { } else {
// 三级目录查询证据文件 // 三级目录查询证据文件
List<CaseEvidence> list = this.lambdaQuery().eq(CaseEvidence::getDirectoryId, directoryId).list(); List<CaseEvidence> list = this.lambdaQuery().eq(CaseEvidence::getDirectoryId, directoryId).list();
if (CollUtil.isNotEmpty(list)){ if (CollUtil.isNotEmpty(list)) {
Page<EvidenceFileDTO> page = evidenceFileService.pageListFileInfo( Page<EvidenceFileDTO> page = evidenceFileService.pageListFileInfo(
list.stream().map(CaseEvidence::getId).toList(), Page.of(pageNum, pageSize)); list.stream().map(CaseEvidence::getId).toList(), Page.of(pageNum, pageSize));
caseEvidencePage = page.convert(file -> { caseEvidencePage = page.convert(file -> {
@ -270,9 +266,9 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
// 遍历OCR结果拼接ocrText并赋值给lLMExtractDto的text // 遍历OCR结果拼接ocrText并赋值给lLMExtractDto的text
StringBuilder ocrText = new StringBuilder(); StringBuilder ocrText = new StringBuilder();
fileOcrProcesses.forEach(fileOcrProcess -> { fileOcrProcesses.forEach(fileOcrProcess -> {
if (StrUtil.isNotEmpty(fileOcrProcess.getReviseText())){ if (StrUtil.isNotEmpty(fileOcrProcess.getReviseText())) {
ocrText.append(fileOcrProcess.getReviseText()); ocrText.append(fileOcrProcess.getReviseText());
}else { } else {
ocrText.append(fileOcrProcess.getOcrText()); ocrText.append(fileOcrProcess.getOcrText());
} }
}); });
@ -286,8 +282,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
updateById(caseEvidence); updateById(caseEvidence);
// 根据证据目录id查询提示词 // 根据证据目录id查询提示词
EvidenceDirectory directory = evidenceDirectoryService.getById(caseEvidence.getDirectoryId()); EvidenceDirectory directory = evidenceDirectoryService.getById(caseEvidence.getDirectoryId());
EvidenceCategory category = evidenceCategoryService.getById(directory.getCategoryId()); NotePrompt notePrompt = notePromptService.getOne(new QueryWrapper<NotePrompt>().eq("evidence_category_id", directory.getCategoryId()));
NotePrompt notePrompt = notePromptService.getById(category.getPromptId());
if (notePrompt != null) { if (notePrompt != null) {
log.info("属性提取开始。"); log.info("属性提取开始。");
long attrStart = System.currentTimeMillis(); long attrStart = System.currentTimeMillis();
@ -318,42 +313,42 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
@Override @Override
public List<EvidenceCategoryDTO> listCategoryTree(String caseType) { public List<EvidenceCategoryDTO> listCategoryTree(String caseType) {
Assert.notEmpty(caseType,"案件类型不能为空!"); Assert.notEmpty(caseType, "案件类型不能为空!");
return evidenceCategoryService.listCategoryTree(caseType); return evidenceCategoryService.listCategoryTree(caseType);
} }
@Override @Override
public List<EvidenceDirectoryDTO> listFileTree(String caseId) { public List<EvidenceDirectoryDTO> listFileTree(String caseId) {
return listFileTree(caseId,null); return listFileTree(caseId, null);
} }
@Override @Override
public List<EvidenceDirectoryDTO> listFileTree(String caseId, String batchNo) { public List<EvidenceDirectoryDTO> listFileTree(String caseId, String batchNo) {
Assert.notEmpty(caseId,"案件ID不能为空!"); Assert.notEmpty(caseId, "案件ID不能为空!");
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId); List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId);
evidenceDirectoryService.appendFile(evidenceDirectoryDTOS, evidenceFileService.queryFileInfoList(caseId,batchNo)); evidenceDirectoryService.appendFile(evidenceDirectoryDTOS, evidenceFileService.queryFileInfoList(caseId, batchNo));
return evidenceDirectoryDTOS; return evidenceDirectoryDTOS;
} }
@Override @Override
public List<EvidenceDirectoryDTO> listFileTree(String caseId, String batchNo, String evidenceId, String directoryId) { public List<EvidenceDirectoryDTO> listFileTree(String caseId, String batchNo, String evidenceId, String directoryId) {
Assert.notEmpty(caseId,"案件ID不能为空!"); Assert.notEmpty(caseId, "案件ID不能为空!");
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId); List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId);
evidenceDirectoryService.appendFile(evidenceDirectoryDTOS, evidenceDirectoryService.appendFile(evidenceDirectoryDTOS,
evidenceFileService.queryFileInfoList(caseId,batchNo, evidenceId, directoryId)); evidenceFileService.queryFileInfoList(caseId, batchNo, evidenceId, directoryId));
return evidenceDirectoryDTOS; return evidenceDirectoryDTOS;
} }
@Override @Override
public List<EvidenceDirectoryDTO> listDirectoryTree(String caseId) { public List<EvidenceDirectoryDTO> listDirectoryTree(String caseId) {
Assert.notEmpty(caseId,"案件ID不能为空!"); Assert.notEmpty(caseId, "案件ID不能为空!");
return evidenceDirectoryService.listDirectoryTree(caseId); return evidenceDirectoryService.listDirectoryTree(caseId);
} }
@ -369,9 +364,9 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
@Override @Override
public Boolean updateDirectory(EvidenceDirectory evidenceDirectory) { public Boolean updateDirectory(EvidenceDirectory evidenceDirectory) {
Assert.notEmpty(evidenceDirectory.getId(),"目录ID不能为空!"); Assert.notEmpty(evidenceDirectory.getId(), "目录ID不能为空!");
Assert.notEmpty(evidenceDirectory.getParentId(),"父级目录id不能为空"); Assert.notEmpty(evidenceDirectory.getParentId(), "父级目录id不能为空");
return evidenceDirectoryService.lambdaUpdate() return evidenceDirectoryService.lambdaUpdate()
.set(EvidenceDirectory::getParentId, evidenceDirectory.getParentId()) .set(EvidenceDirectory::getParentId, evidenceDirectory.getParentId())
@ -408,13 +403,13 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class) @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public Boolean removeDirectory(List<String> directoryIdList) { public Boolean removeDirectory(List<String> directoryIdList) {
if (CollUtil.isEmpty(directoryIdList)){ if (CollUtil.isEmpty(directoryIdList)) {
return false; return false;
} }
boolean success = evidenceDirectoryService.removeBatchByIds(directoryIdList); boolean success = evidenceDirectoryService.removeBatchByIds(directoryIdList);
if (success){ if (success) {
// 删除目录,意味着证据也要被删除 // 删除目录,意味着证据也要被删除
super.lambdaUpdate().eq(CaseEvidence::getDirectoryId, directoryIdList).remove(); super.lambdaUpdate().eq(CaseEvidence::getDirectoryId, directoryIdList).remove();
evidenceFileService.lambdaUpdate().in(EvidenceFile::getDirectoryId, directoryIdList).remove(); evidenceFileService.lambdaUpdate().in(EvidenceFile::getDirectoryId, directoryIdList).remove();
@ -426,6 +421,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
* *
* 1. * 1.
* 2. ocr * 2. ocr
*
* @param caseId * @param caseId
* @param evidenceFileDTOS * @param evidenceFileDTOS
*/ */
@ -441,14 +437,14 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
List<CaseEvidenceDetailDTO> operationalEvidenceList = findChangedEvidence(oldEvidences, newEvidences); List<CaseEvidenceDetailDTO> operationalEvidenceList = findChangedEvidence(oldEvidences, newEvidences);
String batchId = ((CaseEvidenceService)AopContext.currentProxy()).updateCaseEvidence4NewTransaction(operationalEvidenceList); String batchId = ((CaseEvidenceService) AopContext.currentProxy()).updateCaseEvidence4NewTransaction(operationalEvidenceList);
List<EvidenceFileDTO> evidenceFileDTOList = operationalEvidenceList.stream() List<EvidenceFileDTO> evidenceFileDTOList = operationalEvidenceList.stream()
.flatMap(evidenceDetailDTO -> evidenceDetailDTO.getFileList().stream().filter(file -> StrUtil.equals(file.getUpdateStatus(),"1"))).toList(); .flatMap(evidenceDetailDTO -> evidenceDetailDTO.getFileList().stream().filter(file -> StrUtil.equals(file.getUpdateStatus(), "1"))).toList();
((CaseEvidenceService)AopContext.currentProxy()).preSyncSubmitOCR(evidenceFileDTOList); ((CaseEvidenceService) AopContext.currentProxy()).preSyncSubmitOCR(evidenceFileDTOList);
for (CaseEvidenceDetailDTO caseEvidenceDetailDTO : operationalEvidenceList) { for (CaseEvidenceDetailDTO caseEvidenceDetailDTO : operationalEvidenceList) {
if (StrUtil.equals(caseEvidenceDetailDTO.getUpdateStatus(),"1")){ if (StrUtil.equals(caseEvidenceDetailDTO.getUpdateStatus(), "1")) {
// 需要分析ocr识别+标题提取) // 需要分析ocr识别+标题提取)
xxlJobService.executeTaskByJobHandler("evidenceAnalysis", caseEvidenceDetailDTO.getId()); xxlJobService.executeTaskByJobHandler("evidenceAnalysis", caseEvidenceDetailDTO.getId());
} }
@ -460,23 +456,24 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
/** /**
* note: * note:
*
* @param caseEvidenceDetailDTOList * @param caseEvidenceDetailDTOList
* @return * @return
*/ */
@Override @Override
@Transactional(transactionManager = "dataSourceTransactionManager",propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) @Transactional(transactionManager = "dataSourceTransactionManager", propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public String updateCaseEvidence4NewTransaction(List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOList) { public String updateCaseEvidence4NewTransaction(List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOList) {
String batchNo = DateTime.now().toString("yyyyMMddHHmmss"); String batchNo = DateTime.now().toString("yyyyMMddHHmmss");
for (CaseEvidenceDetailDTO evidence : caseEvidenceDetailDTOList) { for (CaseEvidenceDetailDTO evidence : caseEvidenceDetailDTOList) {
if (evidence.getUpdateStatus().equals("1")){ if (evidence.getUpdateStatus().equals("1")) {
// 新增 // 新增
CaseEvidence caseEvidence = evidence.toCaseEvidence(); CaseEvidence caseEvidence = evidence.toCaseEvidence();
caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_UNPROCESSED); caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_UNPROCESSED);
this.save(caseEvidence); this.save(caseEvidence);
evidence.setId(caseEvidence.getId()); evidence.setId(caseEvidence.getId());
for (EvidenceFileDTO evidenceFileDTO : evidence.getFileList()) { for (EvidenceFileDTO evidenceFileDTO : evidence.getFileList()) {
if (StrUtil.equalsAny(evidenceFileDTO.getUpdateStatus(),"1","2")){ if (StrUtil.equalsAny(evidenceFileDTO.getUpdateStatus(), "1", "2")) {
// 新增 // 新增
EvidenceFile evidenceFile = new EvidenceFile(caseEvidence.getId(), evidenceFileDTO.getFileId()); EvidenceFile evidenceFile = new EvidenceFile(caseEvidence.getId(), evidenceFileDTO.getFileId());
evidenceFile.setDirectoryId(evidence.getDirectoryId()); evidenceFile.setDirectoryId(evidence.getDirectoryId());
@ -495,9 +492,9 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
}*/ }*/
} }
}else if (evidence.getUpdateStatus().equals("-1")){ } else if (evidence.getUpdateStatus().equals("-1")) {
for (EvidenceFileDTO evidenceFileDTO : evidence.getFileList()) { for (EvidenceFileDTO evidenceFileDTO : evidence.getFileList()) {
if (StrUtil.equalsAny(evidenceFileDTO.getUpdateStatus(),"1","2")){ if (StrUtil.equalsAny(evidenceFileDTO.getUpdateStatus(), "1", "2")) {
// 新增 // 新增
EvidenceFile evidenceFile = new EvidenceFile(evidence.getId(), evidenceFileDTO.getFileId()); EvidenceFile evidenceFile = new EvidenceFile(evidence.getId(), evidenceFileDTO.getFileId());
evidenceFile.setDirectoryId(evidence.getDirectoryId()); evidenceFile.setDirectoryId(evidence.getDirectoryId());
@ -517,36 +514,36 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
} }
@Override @Override
public List<EvidenceProcessDTO> listOcrAndExtract(String caseId,String batchNo) { public List<EvidenceProcessDTO> listOcrAndExtract(String caseId, String batchNo) {
Assert.notEmpty(caseId, "案件id不能为空"); Assert.notEmpty(caseId, "案件id不能为空");
ModelCase modelCase = modelCaseService.getById(caseId); ModelCase modelCase = modelCaseService.getById(caseId);
Assert.notNull(modelCase, "案件不存在"); Assert.notNull(modelCase, "案件不存在");
List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS = this.queryEvidenceList(caseId,batchNo); List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS = this.queryEvidenceList(caseId, batchNo);
if (CollUtil.isEmpty(caseEvidenceDetailDTOS)){ if (CollUtil.isEmpty(caseEvidenceDetailDTOS)) {
return new ArrayList<>(); return new ArrayList<>();
} }
List<EvidenceProcessDTO> processDTOList = caseEvidenceDetailDTOS.stream() List<EvidenceProcessDTO> processDTOList = caseEvidenceDetailDTOS.stream()
.filter(evidenceDetail->CollUtil.isNotEmpty(evidenceDetail.getFileList())) .filter(evidenceDetail -> CollUtil.isNotEmpty(evidenceDetail.getFileList()))
.map(EvidenceProcessDTO::new).collect(Collectors.toList()); .map(EvidenceProcessDTO::new).collect(Collectors.toList());
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId); List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = evidenceDirectoryService.listDirectoryTree(caseId);
List<EvidenceCategory> categoryList = evidenceCategoryService.lambdaQuery().eq(EvidenceCategory::getCaseType, modelCase.getCaseType()).list(); List<EvidenceCategory> categoryList = evidenceCategoryService.lambdaQuery().eq(EvidenceCategory::getCaseType, modelCase.getCaseType()).list();
List<NotePrompt> notePrompts = notePromptService.list();
for (EvidenceProcessDTO evidenceProcessDTO : processDTOList) { for (EvidenceProcessDTO evidenceProcessDTO : processDTOList) {
evidenceProcessDTO.setTemplateInfo(evidenceDirectoryDTOS, categoryList); evidenceProcessDTO.setTemplateInfo(evidenceDirectoryDTOS, categoryList, notePrompts);
evidenceProcessDTO.setEvidenceTypeName(categoryList); evidenceProcessDTO.setEvidenceTypeName(categoryList);
} }
return processDTOList; return processDTOList;
} }
@Override @Override
public void verifyEvidence(List<EvidenceVerifyDTO> evidenceVerifyDTOS,String caseId,String batchNo) { public void verifyEvidence(List<EvidenceVerifyDTO> evidenceVerifyDTOS, String caseId, String batchNo) {
Assert.notEmpty(caseId, "案件id不能为空"); Assert.notEmpty(caseId, "案件id不能为空");
if (CollUtil.isEmpty(evidenceVerifyDTOS)){ if (CollUtil.isEmpty(evidenceVerifyDTOS)) {
return; return;
} }
List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS = queryEvidenceList(caseId,batchNo); List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS = queryEvidenceList(caseId, batchNo);
Map<String, List<EvidenceVerifyDTO>> evidenceMap = evidenceVerifyDTOS.stream().collect(Collectors.groupingBy(EvidenceVerifyDTO::getEvidenceId)); Map<String, List<EvidenceVerifyDTO>> evidenceMap = evidenceVerifyDTOS.stream().collect(Collectors.groupingBy(EvidenceVerifyDTO::getEvidenceId));
for (Map.Entry<String, List<EvidenceVerifyDTO>> entry : evidenceMap.entrySet()) { for (Map.Entry<String, List<EvidenceVerifyDTO>> entry : evidenceMap.entrySet()) {
String evidenceId = entry.getKey(); String evidenceId = entry.getKey();
@ -557,7 +554,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
// 修改ocr内容 // 修改ocr内容
for (EvidenceVerifyDTO verifyDTO : value) { for (EvidenceVerifyDTO verifyDTO : value) {
if (StrUtil.isNotEmpty(verifyDTO.getOcrText())){ if (StrUtil.isNotEmpty(verifyDTO.getOcrText())) {
fileOcrProcessService.lambdaUpdate() fileOcrProcessService.lambdaUpdate()
.eq(FileOcrProcess::getFileId, verifyDTO.getFileId()) .eq(FileOcrProcess::getFileId, verifyDTO.getFileId())
.set(FileOcrProcess::getReviseText, verifyDTO.getOcrText()).update(); .set(FileOcrProcess::getReviseText, verifyDTO.getOcrText()).update();
@ -565,7 +562,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
} }
// 调整顺序 // 调整顺序
CaseEvidenceDetailDTO evidenceDetail = findEvidenceDetail(evidenceId, caseEvidenceDetailDTOS); CaseEvidenceDetailDTO evidenceDetail = findEvidenceDetail(evidenceId, caseEvidenceDetailDTOS);
if (evidenceDetail != null){ if (evidenceDetail != null) {
List<String> list = value.stream().map(EvidenceVerifyDTO::getFileId).toList(); List<String> list = value.stream().map(EvidenceVerifyDTO::getFileId).toList();
for (EvidenceFileDTO evidenceFileDTO : evidenceDetail.getFileList()) { for (EvidenceFileDTO evidenceFileDTO : evidenceDetail.getFileList()) {
evidenceFileDTO.setRank(findRank(list, evidenceFileDTO.getFileId())); evidenceFileDTO.setRank(findRank(list, evidenceFileDTO.getFileId()));
@ -603,19 +600,19 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
} }
@Override @Override
public List<EvidenceDirectoryDTO> evidenceDetails(String caseId, String batchNo,String evidenceId) { public List<EvidenceDirectoryDTO> evidenceDetails(String caseId, String batchNo, String evidenceId) {
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listFileTree(caseId,batchNo,evidenceId,null); List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listFileTree(caseId, batchNo, evidenceId, null);
List<CaseEvidence> caseEvidenceList = this.lambdaQuery().eq(CaseEvidence::getCaseId, caseId).list(); List<CaseEvidence> caseEvidenceList = this.lambdaQuery().eq(CaseEvidence::getCaseId, caseId).list();
// 强行翻译 // 强行翻译
Map<String, String> dictionaryMap = comDictionaryService.getDictionaryMapReverse("prompt_attribute_valuetype"); Map<String, String> dictionaryMap = comDictionaryService.getDictionaryMapReverse("prompt_attribute_valuetype");
for (CaseEvidence caseEvidence : caseEvidenceList) { for (CaseEvidence caseEvidence : caseEvidenceList) {
List<NotePromptExtractAttributesDto> property = caseEvidence.getProperty(); List<NotePromptExtractAttributesDto> property = caseEvidence.getProperty();
if (CollUtil.isNotEmpty(property)){ if (CollUtil.isNotEmpty(property)) {
for (NotePromptExtractAttributesDto notePromptExtractAttributesDto : property) { for (NotePromptExtractAttributesDto notePromptExtractAttributesDto : property) {
String attrValueType = notePromptExtractAttributesDto.getAttrValueType(); String attrValueType = notePromptExtractAttributesDto.getAttrValueType();
if (StrUtil.isNotEmpty(attrValueType) && dictionaryMap.containsKey(attrValueType)){ if (StrUtil.isNotEmpty(attrValueType) && dictionaryMap.containsKey(attrValueType)) {
notePromptExtractAttributesDto.setAttrValueType(dictionaryMap.get(attrValueType)); notePromptExtractAttributesDto.setAttrValueType(dictionaryMap.get(attrValueType));
} }
} }
@ -628,11 +625,11 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
Map<String, CategoryPromptDTO> categoryPromptMap = categoryPromptDTOS.stream().collect(Collectors.toMap(CategoryPromptDTO::getDirectoryId, Function.identity())); Map<String, CategoryPromptDTO> categoryPromptMap = categoryPromptDTOS.stream().collect(Collectors.toMap(CategoryPromptDTO::getDirectoryId, Function.identity()));
Iterator<EvidenceDirectoryDTO> iterator = evidenceDirectoryDTOS.iterator(); Iterator<EvidenceDirectoryDTO> iterator = evidenceDirectoryDTOS.iterator();
while (iterator.hasNext()){ while (iterator.hasNext()) {
EvidenceDirectoryDTO evidenceDirectoryDTO = iterator.next(); EvidenceDirectoryDTO evidenceDirectoryDTO = iterator.next();
evidenceDirectoryDTO.setFileEvidence(caseEvidenceMap, categoryPromptMap); evidenceDirectoryDTO.setFileEvidence(caseEvidenceMap, categoryPromptMap);
evidenceDirectoryDTO.removeEmptyDirectory(); evidenceDirectoryDTO.removeEmptyDirectory();
if (CollUtil.isEmpty(evidenceDirectoryDTO.getChild()) && CollUtil.isEmpty(evidenceDirectoryDTO.getFileInfoList())){ if (CollUtil.isEmpty(evidenceDirectoryDTO.getChild()) && CollUtil.isEmpty(evidenceDirectoryDTO.getFileInfoList())) {
iterator.remove(); iterator.remove();
} }
} }
@ -655,7 +652,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
String directoryName = category.getCategoryName() + provider; String directoryName = category.getCategoryName() + provider;
long count = directoryList.stream().filter(d -> StrUtil.contains(d.getDirectoryName(), provider)).count(); long count = directoryList.stream().filter(d -> StrUtil.contains(d.getDirectoryName(), provider)).count();
if (count > 0){ if (count > 0) {
directoryName = directoryName + count; directoryName = directoryName + count;
} }
return directoryName; return directoryName;
@ -668,7 +665,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
List<String> directoryIdList = null; List<String> directoryIdList = null;
for (EvidenceDirectoryDTO evidenceDirectoryDTO : evidenceDirectoryDTOS) { for (EvidenceDirectoryDTO evidenceDirectoryDTO : evidenceDirectoryDTOS) {
directoryIdList = evidenceDirectoryDTO.findDirectoryIdList(evidenceDirectory.getCategoryId()); directoryIdList = evidenceDirectoryDTO.findDirectoryIdList(evidenceDirectory.getCategoryId());
if (CollUtil.isNotEmpty(directoryIdList)){ if (CollUtil.isNotEmpty(directoryIdList)) {
break; break;
} }
} }
@ -676,7 +673,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
EvidenceDirectoryDTO directory = null; EvidenceDirectoryDTO directory = null;
for (EvidenceDirectoryDTO evidenceDirectoryDTO : evidenceDirectoryDTOS) { for (EvidenceDirectoryDTO evidenceDirectoryDTO : evidenceDirectoryDTOS) {
directory = evidenceDirectoryDTO.findDirectory(CollUtil.getFirst(directoryIdList)); directory = evidenceDirectoryDTO.findDirectory(CollUtil.getFirst(directoryIdList));
if (null != directory){ if (null != directory) {
break; break;
} }
} }
@ -685,7 +682,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
long count = evidenceDirectoryService.lambdaQuery().eq(EvidenceDirectory::getParentId, directory.getId()) long count = evidenceDirectoryService.lambdaQuery().eq(EvidenceDirectory::getParentId, directory.getId())
.list().stream() .list().stream()
.filter(d -> StrUtil.contains(d.getDirectoryName(), evidenceDirectory.getDirectoryName())).count(); .filter(d -> StrUtil.contains(d.getDirectoryName(), evidenceDirectory.getDirectoryName())).count();
if (count > 0){ if (count > 0) {
evidenceDirectory.setDirectoryName(evidenceDirectory.getDirectoryName() + count + 1); evidenceDirectory.setDirectoryName(evidenceDirectory.getDirectoryName() + count + 1);
} }
@ -699,15 +696,15 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
} }
@Override @Override
@Transactional(rollbackFor = Exception.class, propagation= Propagation.REQUIRES_NEW, transactionManager = "dataSourceTransactionManager") @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW, transactionManager = "dataSourceTransactionManager")
public void preSyncSubmitOCR(List<EvidenceFileDTO> evidenceFileList) { public void preSyncSubmitOCR(List<EvidenceFileDTO> evidenceFileList) {
for (EvidenceFileDTO evidenceFileDTO : evidenceFileList) { for (EvidenceFileDTO evidenceFileDTO : evidenceFileList) {
if (StrUtil.equalsAny(evidenceFileDTO.getFileType(),"doc","docx")){ if (StrUtil.equalsAny(evidenceFileDTO.getFileType(), "doc", "docx")) {
fileOcrProcessService.syncSubmitOCR(List.of(evidenceFileDTO.getFileId()), fileOcrProcessService::doWordCRTask); fileOcrProcessService.syncSubmitOCR(List.of(evidenceFileDTO.getFileId()), fileOcrProcessService::doWordCRTask);
}else if (StrUtil.equalsAny(evidenceFileDTO.getFileType(),"pdf")){ } else if (StrUtil.equalsAny(evidenceFileDTO.getFileType(), "pdf")) {
fileOcrProcessService.syncSubmitOCR(List.of(evidenceFileDTO.getFileId()), fileOcrProcessService::doPdfCRTask); fileOcrProcessService.syncSubmitOCR(List.of(evidenceFileDTO.getFileId()), fileOcrProcessService::doPdfCRTask);
}else { } else {
fileOcrProcessService.syncSubmitOCR(List.of(evidenceFileDTO.getFileId()), fileOcrProcessService::doOCRTask); fileOcrProcessService.syncSubmitOCR(List.of(evidenceFileDTO.getFileId()), fileOcrProcessService::doOCRTask);
} }
} }
@ -716,15 +713,15 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
private CaseEvidenceDetailDTO findEvidenceDetail(String evidenceId, List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS) { private CaseEvidenceDetailDTO findEvidenceDetail(String evidenceId, List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS) {
for (CaseEvidenceDetailDTO caseEvidenceDetailDTO : caseEvidenceDetailDTOS) { for (CaseEvidenceDetailDTO caseEvidenceDetailDTO : caseEvidenceDetailDTOS) {
if (StrUtil.equals(caseEvidenceDetailDTO.getId(), evidenceId)){ if (StrUtil.equals(caseEvidenceDetailDTO.getId(), evidenceId)) {
return caseEvidenceDetailDTO; return caseEvidenceDetailDTO;
} }
} }
return null; return null;
} }
private List<CaseEvidenceDetailDTO> toCaseCaseEvidenceDetailDTO(List<EvidenceDirectoryDTO> newDirectoryDTOS,List<EvidenceDirectoryDTO> oldEvidenceDirectoryDTOS) { private List<CaseEvidenceDetailDTO> toCaseCaseEvidenceDetailDTO(List<EvidenceDirectoryDTO> newDirectoryDTOS, List<EvidenceDirectoryDTO> oldEvidenceDirectoryDTOS) {
if (CollUtil.isEmpty(newDirectoryDTOS)){ if (CollUtil.isEmpty(newDirectoryDTOS)) {
return new ArrayList<>(); return new ArrayList<>();
} }
@ -738,12 +735,12 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
String directoryId = evidenceFile.getId(); String directoryId = evidenceFile.getId();
EvidenceDirectoryDTO directory = evidenceDirectoryService.findDirectoryById(directoryId, oldEvidenceDirectoryDTOS); EvidenceDirectoryDTO directory = evidenceDirectoryService.findDirectoryById(directoryId, oldEvidenceDirectoryDTOS);
if (null == directory){ if (null == directory) {
log.warn("toCaseCaseEvidenceDetailDTO:目录id{}不存在对应的目录分类信息",directoryId); log.warn("toCaseCaseEvidenceDetailDTO:目录id{}不存在对应的目录分类信息", directoryId);
continue; continue;
} }
if (directory.getLevel() == 1 || directory.getLevel() == 2){ if (directory.getLevel() == 1 || directory.getLevel() == 2) {
for (String fileId : evidenceFile.getFileIdList()) { for (String fileId : evidenceFile.getFileIdList()) {
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO(); CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO();
caseEvidenceDetailDTO.setEvidenceType(directory.getCategoryId()); caseEvidenceDetailDTO.setEvidenceType(directory.getCategoryId());
@ -752,7 +749,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
evidenceFileDTO.setFileId(fileId); evidenceFileDTO.setFileId(fileId);
MinioFile minioFile = fileMap.get(fileId); MinioFile minioFile = fileMap.get(fileId);
if (null != minioFile){ if (null != minioFile) {
// 证据名为文件名 // 证据名为文件名
caseEvidenceDetailDTO.setEvidenceName(minioFile.getFilename()); caseEvidenceDetailDTO.setEvidenceName(minioFile.getFilename());
evidenceFileDTO.setFileType(minioFile.getFileType()); evidenceFileDTO.setFileType(minioFile.getFileType());
@ -762,9 +759,9 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
caseEvidenceDetailDTOS.add(caseEvidenceDetailDTO); caseEvidenceDetailDTOS.add(caseEvidenceDetailDTO);
} }
} }
if (directory.getLevel() == 3){ if (directory.getLevel() == 3) {
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO(); CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO();
if (CollUtil.isNotEmpty(directory.getFileInfoList())){ if (CollUtil.isNotEmpty(directory.getFileInfoList())) {
String evidenceId = CollUtil.getFirst(directory.getFileInfoList()).getEvidenceId(); String evidenceId = CollUtil.getFirst(directory.getFileInfoList()).getEvidenceId();
caseEvidenceDetailDTO.setId(evidenceId); caseEvidenceDetailDTO.setId(evidenceId);
} }
@ -777,7 +774,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO(); EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO();
evidenceFileDTO.setFileId(fileId); evidenceFileDTO.setFileId(fileId);
MinioFile minioFile = fileMap.get(fileId); MinioFile minioFile = fileMap.get(fileId);
if (null != minioFile){ if (null != minioFile) {
evidenceFileDTO.setFileName(minioFile.getFilename()); evidenceFileDTO.setFileName(minioFile.getFilename());
evidenceFileDTO.setFileType(minioFile.getFileType()); evidenceFileDTO.setFileType(minioFile.getFileType());
} }
@ -795,7 +792,8 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
/** /**
* *
* @param oldEvidenceList *
* @param oldEvidenceList
* @param newEvidenceFileList * @param newEvidenceFileList
* @return * @return
*/ */
@ -804,20 +802,20 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
List<CaseEvidenceDetailDTO> caseEvidence2DTOList = new ArrayList<>(); List<CaseEvidenceDetailDTO> caseEvidence2DTOList = new ArrayList<>();
if (CollUtil.isEmpty(oldEvidenceList) && CollUtil.isNotEmpty(newEvidenceFileList)){ if (CollUtil.isEmpty(oldEvidenceList) && CollUtil.isNotEmpty(newEvidenceFileList)) {
// 数据库中不存在数据,则全部新增 // 数据库中不存在数据,则全部新增
for (CaseEvidenceDetailDTO evidenceDetailDTO : newEvidenceFileList) { for (CaseEvidenceDetailDTO evidenceDetailDTO : newEvidenceFileList) {
List<String> fileIds = evidenceDetailDTO.getFileList().stream().map(EvidenceFileDTO::getFileId).toList(); List<String> fileIds = evidenceDetailDTO.getFileList().stream().map(EvidenceFileDTO::getFileId).toList();
evidenceDetailDTO.setUpdateStatus("1"); evidenceDetailDTO.setUpdateStatus("1");
for (EvidenceFileDTO evidenceFileDTO : evidenceDetailDTO.getFileList()) { for (EvidenceFileDTO evidenceFileDTO : evidenceDetailDTO.getFileList()) {
evidenceFileDTO.setUpdateStatus("1"); evidenceFileDTO.setUpdateStatus("1");
evidenceFileDTO.setRank(findRank(fileIds,evidenceFileDTO.getFileId())); evidenceFileDTO.setRank(findRank(fileIds, evidenceFileDTO.getFileId()));
} }
} }
caseEvidence2DTOList.addAll(newEvidenceFileList); caseEvidence2DTOList.addAll(newEvidenceFileList);
} }
if (CollUtil.isNotEmpty(oldEvidenceList) && CollUtil.isEmpty(newEvidenceFileList)){ if (CollUtil.isNotEmpty(oldEvidenceList) && CollUtil.isEmpty(newEvidenceFileList)) {
// 数据库中存在数据,没有新增数据 // 数据库中存在数据,没有新增数据
for (CaseEvidenceDetailDTO evidenceDetailDTO : oldEvidenceList) { for (CaseEvidenceDetailDTO evidenceDetailDTO : oldEvidenceList) {
evidenceDetailDTO.setUpdateStatus("0"); evidenceDetailDTO.setUpdateStatus("0");
@ -829,7 +827,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
} }
if (CollUtil.isNotEmpty(oldEvidenceList) && CollUtil.isNotEmpty(newEvidenceFileList)){ if (CollUtil.isNotEmpty(oldEvidenceList) && CollUtil.isNotEmpty(newEvidenceFileList)) {
// 数据库中和新数据都存在 // 数据库中和新数据都存在
Map<String, EvidenceFileDTO> fileCache = Stream.of(newEvidenceFileList, oldEvidenceList) Map<String, EvidenceFileDTO> fileCache = Stream.of(newEvidenceFileList, oldEvidenceList)
.flatMap(Collection::stream) .flatMap(Collection::stream)
@ -839,21 +837,21 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
for (CaseEvidenceDetailDTO oldEvidence : oldEvidenceList) { for (CaseEvidenceDetailDTO oldEvidence : oldEvidenceList) {
boolean isFind = false; boolean isFind = false;
for (CaseEvidenceDetailDTO newEvidence : newEvidenceFileList) { for (CaseEvidenceDetailDTO newEvidence : newEvidenceFileList) {
if (StrUtil.equals(oldEvidence.getId(),newEvidence.getId())){ if (StrUtil.equals(oldEvidence.getId(), newEvidence.getId())) {
isFind = true; isFind = true;
oldEvidence.setUpdateStatus("-1"); oldEvidence.setUpdateStatus("-1");
List<String> oldFileIds = oldEvidence.getFileList().stream().map(EvidenceFileDTO::getFileId).toList(); List<String> oldFileIds = oldEvidence.getFileList().stream().map(EvidenceFileDTO::getFileId).toList();
List<String> newFileIds = newEvidence.getFileList().stream().map(EvidenceFileDTO::getFileId).toList(); List<String> newFileIds = newEvidence.getFileList().stream().map(EvidenceFileDTO::getFileId).toList();
TupleIdRecord tupleIdRecord = compareFileList(newFileIds,oldFileIds); TupleIdRecord tupleIdRecord = compareFileList(newFileIds, oldFileIds);
List<EvidenceFileDTO> updateFileList = new ArrayList<>(); List<EvidenceFileDTO> updateFileList = new ArrayList<>();
// 新增的文件顺序排在原有文件的后面 // 新增的文件顺序排在原有文件的后面
int initOrder = oldFileIds.size() -1; int initOrder = oldFileIds.size() - 1;
for (String addFileId : tupleIdRecord.addFileList) { for (String addFileId : tupleIdRecord.addFileList) {
EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO(); EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO();
evidenceFileDTO.setFileId(addFileId); evidenceFileDTO.setFileId(addFileId);
evidenceFileDTO.setUpdateStatus("1"); evidenceFileDTO.setUpdateStatus("1");
if (null != fileCache.get(addFileId)){ if (null != fileCache.get(addFileId)) {
evidenceFileDTO.setFileType(fileCache.get(addFileId).getFileType()); evidenceFileDTO.setFileType(fileCache.get(addFileId).getFileType());
} }
@ -864,7 +862,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO(); EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO();
evidenceFileDTO.setFileId(deleteFileId); evidenceFileDTO.setFileId(deleteFileId);
evidenceFileDTO.setUpdateStatus("0"); evidenceFileDTO.setUpdateStatus("0");
if (null != fileCache.get(deleteFileId)){ if (null != fileCache.get(deleteFileId)) {
evidenceFileDTO.setFileType(fileCache.get(deleteFileId).getFileType()); evidenceFileDTO.setFileType(fileCache.get(deleteFileId).getFileType());
} }
evidenceFileDTO.setRank(findRank(oldFileIds, deleteFileId)); evidenceFileDTO.setRank(findRank(oldFileIds, deleteFileId));
@ -875,7 +873,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO(); EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO();
evidenceFileDTO.setFileId(updateFileId); evidenceFileDTO.setFileId(updateFileId);
evidenceFileDTO.setUpdateStatus("2"); evidenceFileDTO.setUpdateStatus("2");
if (null != fileCache.get(updateFileId)){ if (null != fileCache.get(updateFileId)) {
evidenceFileDTO.setFileType(fileCache.get(updateFileId).getFileType()); evidenceFileDTO.setFileType(fileCache.get(updateFileId).getFileType());
} }
evidenceFileDTO.setRank(findRank(oldFileIds, updateFileId)); evidenceFileDTO.setRank(findRank(oldFileIds, updateFileId));
@ -886,7 +884,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
caseEvidence2DTOList.add(newEvidence); caseEvidence2DTOList.add(newEvidence);
} }
} }
if (!isFind){ if (!isFind) {
oldEvidence.setUpdateStatus("0"); oldEvidence.setUpdateStatus("0");
caseEvidence2DTOList.add(oldEvidence); caseEvidence2DTOList.add(oldEvidence);
} }
@ -894,7 +892,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
for (CaseEvidenceDetailDTO newEvidence : newEvidenceFileList) { for (CaseEvidenceDetailDTO newEvidence : newEvidenceFileList) {
if (StrUtil.isEmpty(newEvidence.getId())){ if (StrUtil.isEmpty(newEvidence.getId())) {
newEvidence.setUpdateStatus("1"); newEvidence.setUpdateStatus("1");
List<String> newFileIds = newEvidence.getFileList().stream().map(EvidenceFileDTO::getFileId).toList(); List<String> newFileIds = newEvidence.getFileList().stream().map(EvidenceFileDTO::getFileId).toList();
for (EvidenceFileDTO evidenceFileDTO : newEvidence.getFileList()) { for (EvidenceFileDTO evidenceFileDTO : newEvidence.getFileList()) {
@ -909,9 +907,9 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
return caseEvidence2DTOList; return caseEvidence2DTOList;
} }
private int findRank(List<String> newFileIds,String fileId){ private int findRank(List<String> newFileIds, String fileId) {
for (int i = 0; i < newFileIds.size(); i++) { for (int i = 0; i < newFileIds.size(); i++) {
if (newFileIds.get(i).equals(fileId)){ if (newFileIds.get(i).equals(fileId)) {
return i; return i;
} }
} }
@ -919,15 +917,14 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
} }
/** /**
* *
*
* @param evidenceCategoryDTOS * @param evidenceCategoryDTOS
* @param caseId id * @param caseId id
* @param parentId id * @param parentId id
*/ */
private void initCaseEvidenceDirectory(List<EvidenceCategoryDTO> evidenceCategoryDTOS, String caseId, String parentId) { private void initCaseEvidenceDirectory(List<EvidenceCategoryDTO> evidenceCategoryDTOS, String caseId, String parentId) {
for (EvidenceCategoryDTO evidenceCategoryDTO : evidenceCategoryDTOS) { for (EvidenceCategoryDTO evidenceCategoryDTO : evidenceCategoryDTOS) {
EvidenceDirectory evidenceDirectory = new EvidenceDirectory(); EvidenceDirectory evidenceDirectory = new EvidenceDirectory();
evidenceDirectory.setCaseId(caseId); evidenceDirectory.setCaseId(caseId);
@ -942,9 +939,9 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
} }
/** /**
* left right * left right
*
* @param newFileIdList * @param newFileIdList
* @param oldFileIdList * @param oldFileIdList
* @return * @return
@ -954,24 +951,25 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
List<String> deleteFileList = new ArrayList<>(); List<String> deleteFileList = new ArrayList<>();
List<String> updateFileList = new ArrayList<>(); List<String> updateFileList = new ArrayList<>();
if (CollUtil.isEmpty(oldFileIdList) && CollUtil.isNotEmpty(newFileIdList)){ if (CollUtil.isEmpty(oldFileIdList) && CollUtil.isNotEmpty(newFileIdList)) {
addFileList = newFileIdList; addFileList = newFileIdList;
} }
if (CollUtil.isNotEmpty(oldFileIdList) && CollUtil.isEmpty(newFileIdList)){ if (CollUtil.isNotEmpty(oldFileIdList) && CollUtil.isEmpty(newFileIdList)) {
deleteFileList = oldFileIdList; deleteFileList = oldFileIdList;
} }
if (CollUtil.isNotEmpty(oldFileIdList) && CollUtil.isNotEmpty(newFileIdList)){ if (CollUtil.isNotEmpty(oldFileIdList) && CollUtil.isNotEmpty(newFileIdList)) {
deleteFileList = oldFileIdList.stream().filter(fileId -> !newFileIdList.contains(fileId)).collect(Collectors.toList()); deleteFileList = oldFileIdList.stream().filter(fileId -> !newFileIdList.contains(fileId)).collect(Collectors.toList());
addFileList = newFileIdList.stream().filter(fileId -> !oldFileIdList.contains(fileId)).collect(Collectors.toList()); addFileList = newFileIdList.stream().filter(fileId -> !oldFileIdList.contains(fileId)).collect(Collectors.toList());
updateFileList = oldFileIdList.stream().filter(newFileIdList::contains).collect(Collectors.toList()); updateFileList = oldFileIdList.stream().filter(newFileIdList::contains).collect(Collectors.toList());
} }
return new TupleIdRecord(addFileList,updateFileList, deleteFileList); return new TupleIdRecord(addFileList, updateFileList, deleteFileList);
} }
record TupleIdRecord(List<String> addFileList ,List<String> updateFileList, List<String> deleteFileList){} record TupleIdRecord(List<String> addFileList, List<String> updateFileList, List<String> deleteFileList) {
}
} }

Loading…
Cancel
Save