1. 证据改造代码提交

topo_dev
xueqingkun 6 months ago
parent 192ff1f265
commit 260108e58c

@ -157,7 +157,7 @@ public class CaseEvidenceController {
}
@Operation(summary = "查询证据详情-结果以树的方式展示")
@GetMapping("/details")
@GetMapping("/ocrAndExtract/details")
public R<List<EvidenceDirectoryDTO>> evidenceDetails(@RequestParam("caseId") String caseId,
@RequestParam(value = "batchNo",required = false) String batchNo) {
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = caseEvidenceService.evidenceDetails(caseId,batchNo);

@ -16,7 +16,7 @@ import lombok.Data;
*
* @TableName case_evidence
*/
@TableName(value ="case_evidence")
@TableName(value ="case_evidence",autoResultMap = true)
@Data
public class CaseEvidence implements Serializable {
/**

@ -2,13 +2,12 @@ package com.supervision.police.dto;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.supervision.police.domain.CaseEvidence;
import com.supervision.police.domain.EvidenceDirectory;
import lombok.Data;
import java.awt.*;
import java.util.ArrayList;
import java.util.*;
import java.util.List;
import java.util.Map;
/**
*
@ -107,9 +106,7 @@ public class EvidenceDirectoryDTO {
public List<String> listAllFileId(){
List<String> fileIdList = new ArrayList<>();
if (CollUtil.isNotEmpty(this.fileIdList)){
fileIdList.addAll(this.fileIdList);
}
fileIdList.add(this.id);
if (CollUtil.isNotEmpty(this.child)){
for (EvidenceDirectoryDTO child : this.getChild()) {
fileIdList.addAll(child.listAllFileId());
@ -187,4 +184,34 @@ public class EvidenceDirectoryDTO {
}
}
public void setFileEvidence(Map<String, CaseEvidence> caseEvidenceMap,Map<String, CategoryPromptDTO> categoryPromptMap){
if (CollUtil.isEmpty(this.getFileInfoList())){
return;
}
for (EvidenceFileDTO evidenceFileDTO : this.getFileInfoList()) {
evidenceFileDTO.setPrompt(categoryPromptMap.get(evidenceFileDTO.getDirectoryId()));
if (StrUtil.isNotEmpty(evidenceFileDTO.getEvidenceId())){
evidenceFileDTO.setEvidenceInfo(caseEvidenceMap.get(evidenceFileDTO.getEvidenceId()));
}
}
if (CollUtil.isNotEmpty(this.getChild())){
for (EvidenceDirectoryDTO directoryDTO : this.child) {
directoryDTO.setFileEvidence(caseEvidenceMap,categoryPromptMap);
}
}
}
public void removeEmptyDirectory(){
if (CollUtil.isEmpty(this.child)){
return;
}
for (EvidenceDirectoryDTO directoryDTO : this.child) {
directoryDTO.removeEmptyDirectory();
}
this.getChild().removeIf(next -> CollUtil.isEmpty(next.getChild()) && CollUtil.isEmpty(next.getFileInfoList()));
}
}

@ -76,6 +76,7 @@ public class EvidenceProcessDTO {
public EvidenceProcessDTO(CaseEvidenceDetailDTO caseEvidence) {
this.evidenceId = caseEvidence.getId();
this.evidenceName = caseEvidence.getEvidenceName();
this.directoryId = caseEvidence.getDirectoryId();
if (CollUtil.isNotEmpty(caseEvidence.getFileList())){
this.attachmentName = caseEvidence.getFileList()
.stream().map(EvidenceFileDTO::getFileName).collect(Collectors.joining(","));
@ -107,9 +108,10 @@ public class EvidenceProcessDTO {
}
Map<String, EvidenceCategory> categoryMap = categoryList.stream().collect(Collectors.toMap(EvidenceCategory::getId, v -> v));
this.templateId = directory.getCategoryId();
EvidenceCategory category = categoryMap.get(directory.getCategoryId());
if (null != category){
this.templateId = category.getPromptId();
this.templateName = category.getCategoryName();
if (directory.getLevel()== 2){
this.evidenceTypeName = category.getCategoryName();
@ -122,9 +124,18 @@ public class EvidenceProcessDTO {
this.evidenceTypeName = StrUtil.join(" / ", parentCategory.getCategoryName(), category.getCategoryName());
}
}
this.templateId = directory.getParentId();
}
}
}
public void setEvidenceTypeName(List<EvidenceCategory> categoryList){
if (StrUtil.isNotEmpty(this.evidenceType)){
Map<String, EvidenceCategory> categoryMap = categoryList.stream().collect(Collectors.toMap(EvidenceCategory::getId, v -> v));
EvidenceCategory category = categoryMap.get(this.evidenceType);
if (null != category){
this.evidenceTypeName = category.getCategoryName();
}
}
}
}

@ -1,8 +1,10 @@
package com.supervision.police.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.police.domain.EvidenceFile;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.police.dto.EvidenceFileDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -16,7 +18,10 @@ public interface EvidenceFileMapper extends BaseMapper<EvidenceFile> {
List<EvidenceFileDTO> listFileInfo(List<String> evidenceIds);
List<EvidenceFileDTO> listFileInfoByCaseId(String caseId);
Page<EvidenceFileDTO> pageListFileInfo(@Param("evidenceIds") List<String> evidenceIds,@Param("page") Page<EvidenceFileDTO> page);
List<EvidenceFileDTO> listFileInfoByCaseIdAndBatchNo(@Param("caseId")String caseId,@Param("batchNo") String batchNo);
}

@ -71,6 +71,9 @@ public interface CaseEvidenceService extends IService<CaseEvidence> {
List<EvidenceDirectoryDTO> listFileTree(String caseId);
List<EvidenceDirectoryDTO> listFileTree(String caseId,String batchNo);
List<EvidenceDirectoryDTO> listDirectoryTree(String caseId);
/**

@ -1,5 +1,6 @@
package com.supervision.police.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.police.domain.EvidenceFile;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.police.dto.EvidenceFileDTO;
@ -15,7 +16,9 @@ public interface EvidenceFileService extends IService<EvidenceFile> {
List<EvidenceFileDTO> listFileInfo(List<String> evidenceIds);
Page<EvidenceFileDTO> pageListFileInfo(List<String> evidenceIds, Page<EvidenceFileDTO> page);
List<EvidenceFile> listByFileIds(List<String> fileIds);
List<EvidenceFileDTO> listFileInfoByCaseId(String caseId);
List<EvidenceFileDTO> listFileInfoByCaseIdAndBatchNo(String caseId, String batchNo);
}

@ -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)){

@ -33,10 +33,11 @@ public class EvidenceDirectoryServiceImpl extends ServiceImpl<EvidenceDirectoryM
for (EvidenceDirectoryDTO directoryDTO : directoryDTOS) {
directoryDTO.setChild(directoryDTOS.stream()
.filter(item -> StrUtil.equals(directoryDTO.getId(),item.getParentId())).toList());
.filter(item -> StrUtil.equals(directoryDTO.getId(),item.getParentId())).collect(Collectors.toList()));
}
return directoryDTOS.stream().filter(item -> StrUtil.isEmpty(item.getParentId())).peek(item -> item.setDirectoryLevel(1)).toList();
return directoryDTOS.stream().filter(item -> StrUtil.isEmpty(item.getParentId()))
.peek(item -> item.setDirectoryLevel(1)).collect(Collectors.toList());
}
@Override
@ -60,7 +61,7 @@ public class EvidenceDirectoryServiceImpl extends ServiceImpl<EvidenceDirectoryM
}
Map<String, List<EvidenceFileDTO>> fileMap = fileInfoList.stream().collect(Collectors.groupingBy(EvidenceFileDTO::getDirectoryId));
for (EvidenceDirectoryDTO directoryDTO : directoryDTOS) {
directoryDTO.appendChildDirectory();
//directoryDTO.appendChildDirectory();
directoryDTO.appendChildFile(fileMap);
}

@ -1,6 +1,7 @@
package com.supervision.police.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.police.domain.EvidenceFile;
import com.supervision.police.service.EvidenceFileService;
@ -25,6 +26,11 @@ public class EvidenceFileServiceImpl extends ServiceImpl<EvidenceFileMapper, Evi
return super.getBaseMapper().listFileInfo(evidenceIds);
}
@Override
public Page<EvidenceFileDTO> pageListFileInfo(List<String> evidenceIds, Page<EvidenceFileDTO> page) {
return super.getBaseMapper().pageListFileInfo(evidenceIds, page);
}
@Override
public List<EvidenceFile> listByFileIds(List<String> fileIds) {
if (CollUtil.isEmpty(fileIds)){
@ -34,8 +40,8 @@ public class EvidenceFileServiceImpl extends ServiceImpl<EvidenceFileMapper, Evi
}
@Override
public List<EvidenceFileDTO> listFileInfoByCaseId(String caseId) {
return super.getBaseMapper().listFileInfoByCaseId(caseId);
public List<EvidenceFileDTO> listFileInfoByCaseIdAndBatchNo(String caseId,String batchNo) {
return super.getBaseMapper().listFileInfoByCaseIdAndBatchNo(caseId,batchNo);
}
}

@ -91,7 +91,7 @@ public class FileOcrProcessServiceImpl extends ServiceImpl<FileOcrProcessMapper,
log.debug("submitOCR:提交识别任务到异步处理器中...");
consumer.accept(processList);
return processList;
return super.lambdaQuery().in(FileOcrProcess::getFileId, fileIdList).list();
}
@Override

@ -135,7 +135,10 @@ public class LLMExtractServiceImpl implements LLMExtractService {
requirementBuilder.append("{\n");
Map<String, String> extractAttributesMap = new HashMap<>();
if (extractAttributes != null && !extractAttributes.isEmpty()) {
extractAttributes.forEach(extractAttribute -> extractAttributesMap.put(extractAttribute.getAttrName(), extractAttribute.getAttrValueType()));
for (NotePromptExtractAttributesDto extractAttribute : extractAttributes) {
extractAttributesMap.put(extractAttribute.getAttrName(), extractAttribute.getAttrValueType());
}
// extractAttributes.forEach(extractAttribute -> extractAttributesMap.put(extractAttribute.getAttrName(), extractAttribute.getAttrValueType()));
extractAttributesMap.forEach((key, value) -> requirementBuilder.append("\"").append(key).append("\"").append("").append("\"").append(value).append("\"").append("\n"));
}
requirementBuilder.append("}");

@ -167,6 +167,7 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
casePersonService.saveCaseActor(modelCase.getId(), modelCaseBase.getCaseActorName(), modelCaseBase.getCaseActorIdCard());
caseEvidenceService.initCaseEvidenceDirectory(modelCase.getId(), modelCase.getCaseType());
// todo:上线需要打开
// // 这里需要调用知识库的接口,去保存知识库
// CreateBaseDTO createBaseDTO = new CreateBaseDTO();
// createBaseDTO.setKnowledge_base_name(modelCase.getCaseNo());

@ -32,6 +32,7 @@
<resultMap id="evidenceFileDTOMapId" type="com.supervision.police.dto.EvidenceFileDTO">
<id column="file_id" property="fileId"/>
<id column="batch_no" property="batchNo"/>
<result column="filename" property="fileName"/>
<result column="file_type" property="fileType"/>
<result column="size" property="fileSize"/>
@ -58,6 +59,7 @@
ce.directory_id,
ce.process_status,
ef.file_id,
ef.batch_no,
mf.filename,
mf.file_type,
mf.size,

@ -42,7 +42,7 @@
</where>
</select>
<select id="listFileInfoByCaseId" resultType="com.supervision.police.dto.EvidenceFileDTO">
<select id="listFileInfoByCaseIdAndBatchNo" resultType="com.supervision.police.dto.EvidenceFileDTO">
select
ef.file_id as fileId,
ef.evidence_id as evidenceId,
@ -52,10 +52,30 @@
from evidence_file ef
left join minio_file mf on ef.file_id = mf.id
<where>
<if test="caseId != null and test=caseId != ''">
<if test="caseId != null and caseId != ''">
ef.evidence_id in
(select id from case_evidence where case_id = #{caseId})
</if>
<if test="batchNo != null and batchNo != ''">
and ef.batch_no = #{batchNo}
</if>
</where>
</select>
<select id="pageListFileInfo" resultType="com.supervision.police.dto.EvidenceFileDTO">
select
ef.file_id as fileId,
ef.evidence_id as evidenceId,
mf.filename as filename,
mf.file_type as fileType
from evidence_file ef
left join minio_file mf on ef.file_id = mf.id
<where>
<if test="evidenceIds != null and evidenceIds.size > 0">
ef.evidence_id in
<foreach item="evidenceId" collection="evidenceIds" open="(" separator="," close=")">
#{evidenceId}
</foreach>
</if>
</where>
</select>
</mapper>

Loading…
Cancel
Save