From dd4c8d143d34bf73dcf1ef5bb62f10eba7bedb93 Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Thu, 7 Nov 2024 17:20:29 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/caseScore/CaseScoreDetailBuilder.java | 6 +- .../service/impl/CaseEvidenceServiceImpl.java | 71 +++++++++++++++---- 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/supervision/police/dto/caseScore/CaseScoreDetailBuilder.java b/src/main/java/com/supervision/police/dto/caseScore/CaseScoreDetailBuilder.java index 21743a7..0c21963 100644 --- a/src/main/java/com/supervision/police/dto/caseScore/CaseScoreDetailBuilder.java +++ b/src/main/java/com/supervision/police/dto/caseScore/CaseScoreDetailBuilder.java @@ -238,11 +238,11 @@ public class CaseScoreDetailBuilder { if (StrUtil.isEmpty(r.getCategoryId()) || !StrUtil.equals(IndexRuleConstants.OPERAND_TYPE_DB, r.getIndexSource())){ return false; } - if (filter.contains(r.getCategoryId())){ + if (filter.contains(r.getAtomicId())){ return false; }else { - filter.add(r.getCategoryId()); - return !r.resultIsTrue() && StrUtil.isAllNotEmpty(r.getAtomicName(),r.getCategoryId()); + filter.add(r.getAtomicId()); + return !r.resultIsTrue() && StrUtil.isNotEmpty(r.getAtomicName()); } }).filter(ar->StrUtil.isAllNotEmpty(ar.getAtomicName(),ar.getCategoryId())).toList(); diff --git a/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java b/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java index e0a2ff0..ca41ea0 100644 --- a/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java @@ -840,22 +840,12 @@ public class CaseEvidenceServiceImpl extends ServiceImpl evidenceDirectoryDTOS = listFileTree(caseId, batchNo, evidenceId, null); List caseEvidenceList = this.lambdaQuery().eq(CaseEvidence::getCaseId, caseId).list(); + + // 强行翻译 - Map dictionaryMap = comDictionaryService.getDictionaryMapReverse("prompt_attribute_valuetype"); - for (CaseEvidence caseEvidence : caseEvidenceList) { - List property = caseEvidence.getProperty(); - if (CollUtil.isNotEmpty(property)) { - for (NotePromptExtractAttributesDto notePromptExtractAttributesDto : property) { - String attrValueType = notePromptExtractAttributesDto.getAttrValueType(); - if (StrUtil.isNotEmpty(attrValueType) && dictionaryMap.containsKey(attrValueType)) { - notePromptExtractAttributesDto.setAttrValueType(dictionaryMap.get(attrValueType)); - } - } - } - } + rebuildEvidenceProperties(new EvidenceDirectoryDTO(evidenceDirectoryDTOS), caseEvidenceList); List categoryPromptDTOS = evidenceDirectoryService.listCategoryPrompt(caseId); - Map caseEvidenceMap = caseEvidenceList.stream().collect(Collectors.toMap(CaseEvidence::getId, Function.identity())); Map categoryPromptMap = categoryPromptDTOS.stream().collect(Collectors.toMap(CategoryPromptDTO::getDirectoryId, k -> k, (v1, v2) -> v1)); @@ -873,6 +863,61 @@ public class CaseEvidenceServiceImpl extends ServiceImpl caseEvidenceList) { + + List categoryIds = caseEvidenceList.stream().map(e -> { + EvidenceDirectoryDTO directory = rootDirectory.findDirectory(e.getDirectoryId()); + if (null == directory) { + return null; + } + return directory.getCategoryId(); + }).filter(StrUtil::isNotEmpty).distinct().toList(); + + Map directoryIdMapCategoryId = caseEvidenceList.stream() + .filter(e -> StrUtil.isNotEmpty(e.getDirectoryId()) && null != rootDirectory.findDirectory(e.getDirectoryId())) + .map(CaseEvidence::getDirectoryId).distinct().collect( + Collectors.toMap(directoryId -> directoryId,di-> rootDirectory.findDirectory(di).getCategoryId())); + + List notePromptList = CollUtil.isEmpty(directoryIdMapCategoryId.values()) ? new ArrayList<>() : notePromptService.lambdaQuery().in(NotePrompt::getEvidenceCategoryId, categoryIds).list(); + Map> categoryIdMapExtractAttributes = notePromptList.stream().collect(Collectors.toMap(NotePrompt::getEvidenceCategoryId, NotePrompt::getExtractAttributes, (v1, v2) -> v1)); + + + for (CaseEvidence caseEvidence : caseEvidenceList) { + if (StrUtil.isEmpty(caseEvidence.getDirectoryId())){ + continue; + } + String categoryId = directoryIdMapCategoryId.get(caseEvidence.getDirectoryId()); + if (StrUtil.isEmpty(categoryId)){ + continue; + } + + List merged = mergeExtractAttributes(caseEvidence.getProperty(), categoryIdMapExtractAttributes.get(categoryId)); + caseEvidence.setProperty(merged); + + } + } + + private List mergeExtractAttributes(List property, List attributesTemplates) { + if (CollUtil.isEmpty(attributesTemplates)){ + return attributesTemplates; + } + for (NotePromptExtractAttributesDto attributesTemplate : attributesTemplates) { + String attrName = attributesTemplate.getAttrName(); + for (NotePromptExtractAttributesDto attributesDto : property) { + if (StrUtil.equals(attributesDto.getAttrName(), attrName)){ + attributesTemplate.setAttrValue(attributesDto.getAttrValue()); + break; + } + } + } + return attributesTemplates; + } + @Override public String generateDirectoryName(String caseId, String categoryId, String provider) {