From 54a4a0538368bfca64137ef427be2ac93ffcaac6 Mon Sep 17 00:00:00 2001
From: liu <liujiatong112@163.com>
Date: Fri, 9 Aug 2024 17:57:33 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9-=E5=B0=86=E7=8A=B6=E6=80=81?=
 =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=BF=9B=E8=A1=8C=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../supervision/constant/JudgeResultEnum.java | 27 +++-------
 .../police/domain/ModelAtomicResult.java      |  2 +-
 .../police/dto/AtomicIndexDTO.java            | 33 +++---------
 .../service/impl/ModelCaseServiceImpl.java    | 11 ++--
 .../police/service/impl/ModelServiceImpl.java | 54 +++++++++----------
 5 files changed, 45 insertions(+), 82 deletions(-)

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<ModelCaseMapper, ModelCase
             }
             // 是否是新的结果
             record.setNewFlag(!StrUtil.equals(record.getIndexResult(), record.getPreResult()));
+            // 获取原子指标的判断规则
             String judgeLogic = record.getJudgeLogic();
+            // 配置的指标的逻辑
             Map<String, String> indexJundgeLogicMap = parseLogicMap(judgeLogic);
             String[] array = record.getAtomicIds().split(",");
             List<String> atomicIds = Arrays.asList(array);
@@ -355,14 +357,7 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
         Map<String, String> 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<String> 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<ModelIndex> modelIndices = modelIndexMapper.selectByCaseType(modelCase.getCaseType());
+        Map<String, Integer> 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<ResultDTO> 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<String, Object> 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());
 
 
     }