diff --git a/src/main/java/com/supervision/constant/JudgeResultEnum.java b/src/main/java/com/supervision/constant/JudgeResultEnum.java index 12707ec..e3ed3f4 100644 --- a/src/main/java/com/supervision/constant/JudgeResultEnum.java +++ b/src/main/java/com/supervision/constant/JudgeResultEnum.java @@ -5,25 +5,22 @@ import lombok.Getter; @Getter public enum JudgeResultEnum { - TRUE("1","真实","1"), + TRUE("1","真实"), - FALSE("2","虚构","0"), + FALSE("2","虚构"), - EXIST("3","存在","1"), + EXIST("3","存在"), - NOT_EXIST("4","不存在","0"), + NOT_EXIST("4","不存在"), - UNKNOWN("5","未知","-1"); + UNKNOWN("5","未知"); - private String code; - private String desc; - // 原子指标结果 -1:未知, 0:不存在, 1存在 - private String translateResult; + private final String code; + private final String desc; - JudgeResultEnum(String code, String desc,String translateResult) { + JudgeResultEnum(String code, String desc) { this.code = code; this.desc = desc; - this.translateResult = translateResult; } @@ -42,14 +39,6 @@ public enum JudgeResultEnum { return JudgeResultEnum.UNKNOWN; } - public static JudgeResultEnum getInstanceByTranslateResult(String translateResult) { - for (JudgeResultEnum judgeResultEnum : JudgeResultEnum.values()) { - if (judgeResultEnum.getTranslateResult().equals(translateResult)) { - return judgeResultEnum; - } - } - return JudgeResultEnum.UNKNOWN; - } /** diff --git a/src/main/java/com/supervision/police/domain/ModelAtomicResult.java b/src/main/java/com/supervision/police/domain/ModelAtomicResult.java index 3440e4a..ff9694f 100644 --- a/src/main/java/com/supervision/police/domain/ModelAtomicResult.java +++ b/src/main/java/com/supervision/police/domain/ModelAtomicResult.java @@ -40,7 +40,7 @@ public class ModelAtomicResult implements Serializable { private String atomicId; /** - * 原子指标结果 -1:未知, 0:不存在, 1存在 + * 原子指标结果 */ private String atomicResult; diff --git a/src/main/java/com/supervision/police/dto/AtomicIndexDTO.java b/src/main/java/com/supervision/police/dto/AtomicIndexDTO.java index a023454..d916035 100644 --- a/src/main/java/com/supervision/police/dto/AtomicIndexDTO.java +++ b/src/main/java/com/supervision/police/dto/AtomicIndexDTO.java @@ -43,34 +43,15 @@ public class AtomicIndexDTO { private String indexSource; - public void atomicResultToIndexResult() { - JudgeResultEnum instance = JudgeResultEnum.getInstance(this.atomicResult); - if (Objects.isNull(instance)){ - this.indexResult = "false"; - return; - } - this.indexResult = instance.flagIsTrue() ? "true" : "false"; - } - public void judgeWithIndexResult(String judgeLogic){ - JudgeResultEnum instance = JudgeResultEnum.getInstanceByTranslateResult(this.atomicResult); - if (Objects.isNull(instance)){ - this.indexResult = "false"; - return; - } - if (StrUtil.isBlank(judgeLogic)){ - this.indexResult = instance.flagIsTrue() ? "true" : "false"; + // 1.指标判断符合,规则要求不符合,返回false + // 2.指标判断不符合,规则要求符合,返回false + // 3.指标判断符合,规则要求符合,返回true + // 4.指标判断不符合,规则要求不符合,返回true + if (judgeLogic.equals(this.atomicResult)){ + this.indexResult = "true"; }else { - String translateResult = instance.getTranslateResult(); - // 1.指标判断符合,规则要求不符合,返回false - // 2.指标判断不符合,规则要求符合,返回false - // 3.指标判断符合,规则要求符合,返回true - // 4.指标判断不符合,规则要求不符合,返回true - if (judgeLogic.equals(translateResult)){ - this.indexResult = "true"; - }else { - this.indexResult = "false"; - } + this.indexResult = "false"; } } 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 95c1289..5b6125f 100644 --- a/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java @@ -326,7 +326,9 @@ public class ModelCaseServiceImpl extends ServiceImpl indexJundgeLogicMap = parseLogicMap(judgeLogic); String[] array = record.getAtomicIds().split(","); List atomicIds = Arrays.asList(array); @@ -355,14 +357,7 @@ public class ModelCaseServiceImpl extends ServiceImpl resultMap = new HashMap<>(); for (JudgeLogic logic : judgeLogics) { for (AtomicData atomicDatum : logic.getAtomicData()) { - // 原子指标结果 -1:未知, 0:不存在, 1存在 - if (atomicDatum.getRelationalSymbol().equals("1") || atomicDatum.getRelationalSymbol().equals("3")) { - resultMap.put(atomicDatum.getAtomicIndex(), "1"); - } else if (atomicDatum.getRelationalSymbol().equals("2") || atomicDatum.getRelationalSymbol().equals("4")) { - resultMap.put(atomicDatum.getAtomicIndex(), "0"); - } else { - resultMap.put(atomicDatum.getAtomicIndex(), "-1"); - } + resultMap.put(atomicDatum.getAtomicIndex(), atomicDatum.getRelationalSymbol()); } } return resultMap; diff --git a/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java index 1b27357..57d6512 100644 --- a/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java @@ -90,7 +90,7 @@ public class ModelServiceImpl implements ModelService { .eq(CasePerson::getCaseId, analyseCaseDTO.getCaseId()) .eq(CasePerson::getCaseActorFlag, 1) .eq(CasePerson::getRoleCode, "1") - .eq(StrUtil.isNotEmpty(analyseCaseDTO.getLawActorName()),CasePerson::getName, analyseCaseDTO.getLawActorName())); + .eq(StrUtil.isNotEmpty(analyseCaseDTO.getLawActorName()), CasePerson::getName, analyseCaseDTO.getLawActorName())); if (ObjectUtil.isEmpty(casePerson)) { throw new RuntimeException("未找到的行为人" + analyseCaseDTO.getLawActorName()); } @@ -131,21 +131,13 @@ public class ModelServiceImpl implements ModelService { log.error(e.getMessage(), e); } // 非人工填写的,需要进行更新结果,人工填写的不更新(人工填写的编码,需要进行特殊处理) - if (!"1".equals(atomicIndex.getIndexSource())) { - //保存原子指标结果表 - ModelAtomicResult exist = modelAtomicResultMapper.selectByCaseIdAndAtomicId(analyseCaseDTO.getCaseId(), casePerson.getId(), atomicIndex.getId()); - if (exist == null) { - modelAtomicResultMapper.insert(result); - } else { - result.setId(exist.getId()); - modelAtomicResultMapper.updateById(result); - } - } - - // 所有原子指标id,判断结果 - Set checkAtomicResult = Set.of("-1", "0", "1"); - if (StrUtil.isNotBlank(result.getAtomicResult()) && !checkAtomicResult.contains(result.getAtomicResult())) { - log.error("TEST:不被支持的校核结果,需排查BUG,atomicId:" + result.getAtomicId() + " result:" + result.getAtomicResult()); + //保存原子指标结果表 + ModelAtomicResult exist = modelAtomicResultMapper.selectByCaseIdAndAtomicId(analyseCaseDTO.getCaseId(), casePerson.getId(), atomicIndex.getId()); + if (exist == null) { + modelAtomicResultMapper.insert(result); + } else { + result.setId(exist.getId()); + modelAtomicResultMapper.updateById(result); } atomicResultMap.put(result.getAtomicId(), result.getAtomicResult()); } @@ -177,10 +169,9 @@ public class ModelServiceImpl implements ModelService { log.warn("manuallyDefinedCase:根据caseId:{},auomicId:{}找到多个原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId()); } ModelAtomicResult modelAtomicResult = CollUtil.getFirst(modelAtomicResults); - // 对结果进行映射操作,前端填的是1-5,我们这里应该是-1,0,1 - JudgeResultEnum instance = JudgeResultEnum.getInstance(modelAtomicResult.getAtomicResult()); - result.setAtomicResult(instance.getTranslateResult()); + + result.setAtomicResult(modelAtomicResult.getAtomicResult()); } @Override @@ -243,6 +234,7 @@ public class ModelServiceImpl implements ModelService { int score = 0; // 根据案件类型获取所有的指标 List modelIndices = modelIndexMapper.selectByCaseType(modelCase.getCaseType()); + Map typeScoreMap = new HashMap<>(); for (ModelIndex modelIndex : modelIndices) { ModelIndexResult result = new ModelIndexResult(); result.setCaseId(analyseCaseDTO.getCaseId()); @@ -266,10 +258,10 @@ public class ModelServiceImpl implements ModelService { AtomicData data = atomicData.get(j); atomicIds.add(data.getAtomicIndex()); // 这里可能不存在,如果未找到,就默认为false - String atomicIndexResult = atomicResultMap.getOrDefault(data.getAtomicIndex(), "-1"); + String atomicIndexResult = atomicResultMap.getOrDefault(data.getAtomicIndex(), JudgeResultEnum.UNKNOWN.getCode()); String relationalSymbol = data.getRelationalSymbol(); JudgeResultEnum instance = JudgeResultEnum.getInstance(relationalSymbol); - boolean ato = StrUtil.equals(atomicIndexResult, instance.getTranslateResult()); + boolean ato = StrUtil.equals(atomicIndexResult, instance.getCode()); if (j == 0) { innerGroupJudge = ato; } else { @@ -308,10 +300,16 @@ public class ModelServiceImpl implements ModelService { } if ("true".equals(result.getIndexResult())) { - score = score + modelIndex.getIndexScore(); + Integer orDefault = typeScoreMap.getOrDefault(modelIndex.getIndexType(), 0); + typeScoreMap.put(modelIndex.getIndexType(), orDefault + modelIndex.getIndexScore()); } } - modelCase.setTotalScore(score); + // 计算分数 共性+入罪/共性+出罪 取最大值 + Integer gx = typeScoreMap.get("1"); + Integer rz = typeScoreMap.get("2"); + Integer cz = typeScoreMap.get("3"); + int max = Integer.max(gx + rz, gx + cz); + modelCase.setTotalScore(max); modelCaseMapper.updateById(modelCase); } @@ -348,15 +346,15 @@ public class ModelServiceImpl implements ModelService { List res = Neo4jUtils.getResultDTOList(run); if (res.isEmpty()) { - result.setAtomicResult("-1"); + result.setAtomicResult(JudgeResultEnum.UNKNOWN.getCode()); } else { // 设置为0,不存在 - result.setAtomicResult("0"); + result.setAtomicResult(JudgeResultEnum.NOT_EXIST.getCode()); // 进行遍历,如果有存在的,就设置为有 for (ResultDTO resultDTO : res) { if (StringUtils.isNotEmpty(resultDTO.getRelId())) { //存在关系 - result.setAtomicResult("1"); + result.setAtomicResult(JudgeResultEnum.EXIST.getCode()); result.setRecordSplitId(resultDTO.getRecordSplitId()); result.setRecordId(resultDTO.getRecordId()); // 如果只要存在,就不进行校验了,直接跳出循环 @@ -375,7 +373,7 @@ public class ModelServiceImpl implements ModelService { * @param result * @param sql */ - private void analyseDataBaseCase(AnalyseCaseDTO analyseCaseDTO, ModelAtomicResult result, String sql,String caseActorName) { + private void analyseDataBaseCase(AnalyseCaseDTO analyseCaseDTO, ModelAtomicResult result, String sql, String caseActorName) { Map params = new HashMap<>(); params.put("caseId", result.getCaseId()); @@ -387,7 +385,7 @@ public class ModelServiceImpl implements ModelService { if (modelIndexService.checkSql(sql)) { success = parseResult(rowSqlMapper.selectList(sql, params, Map.class)); } - result.setAtomicResult(success ? "1" : "0"); + result.setAtomicResult(success ? JudgeResultEnum.EXIST.getCode() : JudgeResultEnum.NOT_EXIST.getCode()); }