diff --git a/src/main/java/com/supervision/police/dto/IndexDetail.java b/src/main/java/com/supervision/police/dto/IndexDetail.java index f93b49e..cfc21f5 100644 --- a/src/main/java/com/supervision/police/dto/IndexDetail.java +++ b/src/main/java/com/supervision/police/dto/IndexDetail.java @@ -53,6 +53,11 @@ public class IndexDetail { */ private String judgeLogic; + /** + * 校验规则 + */ + private String indexRule; + public void setRecordValue() { if (CollUtil.isEmpty(this.children)){ this.setRecord("无"); diff --git a/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java index 7caed9a..5b4837e 100644 --- a/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java @@ -28,7 +28,7 @@ import com.supervision.police.dto.*; import com.supervision.police.mapper.ModelCaseMapper; import com.supervision.police.service.*; import com.supervision.police.vo.ModelCaseVO; -import com.supervision.utils.JudgeLogicUtil; +import com.supervision.utils.IndexRuleUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -418,21 +418,19 @@ public class ModelCaseServiceImpl extends ServiceImpl caseEvidenceList = CollUtil.isEmpty(list) ? new ArrayList<>() : caseEvidenceService.listByIds(list); for (IndexDetail record : indexDetails) { - if (StringUtils.isEmpty(record.getJudgeLogic())) { + if (StringUtils.isEmpty(record.getIndexResult())) { continue; } // 是否是新的结果 record.setNewFlagValue(); - - List atomicIds = JudgeLogicUtil.pickAtomicIndexIds(record.getJudgeLogic()); - List atomics = modelCaseMapper.getAtomicDetail(caseId, record.getIndexId(), atomicIds); + List atomicIndexIds = IndexRuleUtil.getAtomicIndexIds(record.getIndexRule()); + List atomics = modelCaseMapper.getAtomicDetail(caseId, record.getIndexId(), atomicIndexIds); for (AtomicIndexDTO atomic : atomics) { // 获取原子指标的判断规则 // 配置的指标的逻辑 - Map indexJundgeLogicMap = parseLogicMap(record.getJudgeLogic()); + Map indexJundgeLogicMap = IndexRuleUtil.getIndexJundgeLogicMap(record.getIndexRule()); // 需要和原子指标的规则判断是否一致(解决出罪和入罪冲突的问题) String relationalSymbol = indexJundgeLogicMap.get(atomic.getAtomicIndexId()); - atomic.judgeWithIndexResult(relationalSymbol); atomic.setSegmentation(nodeRecordSpliteMap); atomic.setRecordIfSegmentationAbsent("无"); @@ -442,6 +440,31 @@ public class ModelCaseServiceImpl extends ServiceImpl atomicIds = JudgeLogicUtil.pickAtomicIndexIds(record.getJudgeLogic()); +// List atomics = modelCaseMapper.getAtomicDetail(caseId, record.getIndexId(), atomicIds); +// for (AtomicIndexDTO atomic : atomics) { +// // 获取原子指标的判断规则 +// // 配置的指标的逻辑 +// Map indexJundgeLogicMap = parseLogicMap(record.getJudgeLogic()); +// // 需要和原子指标的规则判断是否一致(解决出罪和入罪冲突的问题) +// String relationalSymbol = indexJundgeLogicMap.get(atomic.getAtomicIndexId()); +// +// atomic.judgeWithIndexResult(relationalSymbol); +// atomic.setSegmentation(nodeRecordSpliteMap); +// atomic.setRecordIfSegmentationAbsent("无"); +// List filterAtomicResultList = atomicResultList.stream().filter(v -> StrUtil.equals(record.getIndexId(), v.getIndexId())).toList(); +// List evidentResult = getEvidentResult(filterAtomicResultList, caseEvidenceList, rootDirectory); +// atomic.setEvidentResultList(evidentResult); +// } record.setChildren(atomics); record.setRecordValue(); @@ -449,19 +472,19 @@ public class ModelCaseServiceImpl extends ServiceImpl getEvidentResult(List atomicResultList,List caseEvidenceList,EvidenceDirectoryDTO rootDirectory) { + private List getEvidentResult(List atomicResultList, List caseEvidenceList, EvidenceDirectoryDTO rootDirectory) { ArrayList evidentIndexResultDTOS = new ArrayList<>(); for (ModelAtomicResult modelAtomicResult : atomicResultList) { String evidenceId = modelAtomicResult.getEvidenceId(); - if (StrUtil.isEmpty(evidenceId)){ + if (StrUtil.isEmpty(evidenceId)) { continue; } List evidenceIdList = Arrays.asList(evidenceId.split(",")); for (CaseEvidence caseEvidence : caseEvidenceList) { - if (evidenceIdList.contains(caseEvidence.getId())){ + if (evidenceIdList.contains(caseEvidence.getId())) { EvidentIndexResultDTO evidentIndexResultDTO = new EvidentIndexResultDTO(); evidentIndexResultDTO.setEvidenceId(caseEvidence.getId()); evidentIndexResultDTO.setEvidenceName(caseEvidence.getEvidenceName()); @@ -470,7 +493,7 @@ public class ModelCaseServiceImpl extends ServiceImpl directoryPath = rootDirectory.getDirectoryPath(evidentIndexResultDTO.getDirectoryId()); evidentIndexResultDTO.setDirectoryPath(StrUtil.join(">", directoryPath)); diff --git a/src/main/java/com/supervision/utils/IndexRuleUtil.java b/src/main/java/com/supervision/utils/IndexRuleUtil.java new file mode 100644 index 0000000..a256c26 --- /dev/null +++ b/src/main/java/com/supervision/utils/IndexRuleUtil.java @@ -0,0 +1,35 @@ +package com.supervision.utils; + +import com.google.gson.Gson; +import com.supervision.police.dto.indexRule.IndexRule; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class IndexRuleUtil { + public static List getAtomicIndexIds(String indexRule) { + List atomicIndexIds = new ArrayList<>(); + Gson gson = new Gson(); + IndexRule rule = gson.fromJson(indexRule, IndexRule.class); + rule.getRuleConditionGroupList().forEach(group -> { + group.getRuleConditionList().forEach(condition -> { + atomicIndexIds.add(condition.getAtomicIndexId()); + }); + }); + return atomicIndexIds; + } + + public static Map getIndexJundgeLogicMap(String indexRule) { + Map indexJundgeLogicMap = new HashMap<>(); + Gson gson = new Gson(); + IndexRule rule = gson.fromJson(indexRule, IndexRule.class); + rule.getRuleConditionGroupList().forEach(group -> { + group.getRuleConditionList().forEach(condition -> { + indexJundgeLogicMap.put(condition.getAtomicIndexId(), condition.getRelationalSymbol()); + }); + }); + return indexJundgeLogicMap; + } +} diff --git a/src/main/resources/mapper/ModelCaseMapper.xml b/src/main/resources/mapper/ModelCaseMapper.xml index df53da5..41b20fc 100644 --- a/src/main/resources/mapper/ModelCaseMapper.xml +++ b/src/main/resources/mapper/ModelCaseMapper.xml @@ -106,7 +106,8 @@ mir.index_result, mir.pre_result as preResult, mir.atomic_ids, - mi.judge_logic as judgeLogic + mi.judge_logic as judgeLogic, + mi.index_rule as indexRule from model_index mi left join model_index_result mir on (mi.id = mir.index_id and mir.case_id = #{query.caseId}) WHERE mi.data_status = '1'