From 761a536184c7841d3d18ef52937bca31b53d78ff Mon Sep 17 00:00:00 2001
From: liu <liujiatong112@163.com>
Date: Mon, 12 Aug 2024 10:28:12 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9-=E4=BF=AE=E5=A4=8D=E5=8E=9F?=
 =?UTF-8?q?=E5=AD=90=E6=8C=87=E6=A0=87=E5=8F=AF=E8=83=BD=E9=87=8D=E5=A4=8D?=
 =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../police/service/impl/ModelServiceImpl.java | 29 ++++++++++---------
 1 file changed, 16 insertions(+), 13 deletions(-)

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 de509fd..3be8f69 100644
--- a/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java
+++ b/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java
@@ -1,7 +1,6 @@
 package com.supervision.police.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -14,7 +13,6 @@ import com.deepoove.poi.XWPFTemplate;
 import com.supervision.common.domain.R;
 import com.supervision.common.utils.StringUtils;
 import com.supervision.constant.JudgeResultEnum;
-import com.supervision.constant.ScoreEnum;
 import com.supervision.neo4j.dto.ResultDTO;
 import com.supervision.neo4j.utils.Neo4jUtils;
 import com.supervision.police.domain.*;
@@ -28,7 +26,6 @@ import com.supervision.police.mapper.*;
 import com.supervision.police.mybatis.RowSqlMapper;
 import com.supervision.police.service.*;
 import com.supervision.utils.SqlParserUtil;
-import jakarta.servlet.ServletOutputStream;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -100,7 +97,7 @@ public class ModelServiceImpl implements ModelService {
         //原子指标
         List<ModelAtomicIndex> atomicIndices = modelAtomicIndexMapper.selectByCaseType(modelCase.getCaseType());
         // 存放原子指标的结果,key:原子指标ID,value:(key大指标ID,value:结果)
-        Map<String, Map<String,String>> atomicResultMap = new HashMap<>();
+        Map<String, Map<String, String>> atomicResultMap = new HashMap<>();
         for (ModelAtomicIndex atomicIndex : atomicIndices) {
             //原子指标结果
             ModelAtomicResult result = new ModelAtomicResult();
@@ -132,9 +129,10 @@ public class ModelServiceImpl implements ModelService {
             List<ModelIndexAtomicRelation> relationList = modelIndexAtomicRelationService.lambdaQuery().eq(ModelIndexAtomicRelation::getAtomicIndexId, atomicIndex.getId()).list();
             for (ModelIndexAtomicRelation relation : relationList) {
                 // 保存或更新原子指标结果表
-                ModelAtomicResult exist = modelAtomicResultMapper.selectByCaseIdAndAtomicId(analyseCaseDTO.getCaseId(), casePerson.getId(),relation.getModelIndexId(), atomicIndex.getId());
+                ModelAtomicResult exist = modelAtomicResultMapper.selectByCaseIdAndAtomicId(analyseCaseDTO.getCaseId(), casePerson.getId(), relation.getModelIndexId(), atomicIndex.getId());
                 result.setIndexId(relation.getModelIndexId());
                 if (exist == null) {
+                    result.setId(null);
                     modelAtomicResultMapper.insert(result);
                 } else {
                     result.setId(exist.getId());
@@ -169,11 +167,11 @@ public class ModelServiceImpl implements ModelService {
                         .eq(ModelAtomicResult::getAtomicId, atomicIndex.getId()));
 
         if (CollUtil.isEmpty(modelAtomicResults)) {
-            log.info("manuallyDefinedCase:根据caseId:{},auomicId:{}未找到原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
+            log.info("manuallyDefinedCase:根据caseId:{},atomicId:{}未找到原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
             return;
         }
         if (CollUtil.size(modelAtomicResults) > 0) {
-            log.warn("manuallyDefinedCase:根据caseId:{},auomicId:{}找到多个原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
+            log.warn("manuallyDefinedCase:根据caseId:{},atomicId:{}找到多个原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
         }
         ModelAtomicResult modelAtomicResult = CollUtil.getFirst(modelAtomicResults);
 
@@ -236,7 +234,7 @@ public class ModelServiceImpl implements ModelService {
     /**
      * 最终计算得分
      */
-    private void calculateFinalScore(AnalyseCaseDTO analyseCaseDTO, ModelCase modelCase, Map<String, Map<String,String>> atomicResultMap) {
+    private void calculateFinalScore(AnalyseCaseDTO analyseCaseDTO, ModelCase modelCase, Map<String, Map<String, String>> atomicResultMap) {
         // 计算指标结果
         int score = 0;
         // 根据案件类型获取所有的指标
@@ -266,8 +264,13 @@ public class ModelServiceImpl implements ModelService {
                             atomicIds.add(data.getAtomicIndex());
                             // 先找到原子指标对应的大指标的结果
                             Map<String, String> atomicIndexMap = atomicResultMap.get(data.getAtomicIndex());
-                            // 这里可能不存在,如果未找到,就默认为false
-                            String atomicIndexResult =  atomicIndexMap.getOrDefault(modelIndex.getId(), JudgeResultEnum.UNKNOWN.getCode());
+                            String atomicIndexResult;
+                            if (CollUtil.isEmpty(atomicIndexMap)) {
+                                atomicIndexResult = JudgeResultEnum.UNKNOWN.getCode();
+                            } else {
+                                // 这里可能不存在,如果未找到,就默认为false
+                                atomicIndexResult = atomicIndexMap.getOrDefault(modelIndex.getId(), JudgeResultEnum.UNKNOWN.getCode());
+                            }
                             String relationalSymbol = data.getRelationalSymbol();
                             JudgeResultEnum instance = JudgeResultEnum.getInstance(relationalSymbol);
                             boolean ato = StrUtil.equals(atomicIndexResult, instance.getCode());
@@ -314,9 +317,9 @@ public class ModelServiceImpl implements ModelService {
             }
         }
         // 计算分数 共性+入罪/共性+出罪 取最大值
-        Integer gx = typeScoreMap.getOrDefault("1",0);
-        Integer rz = typeScoreMap.getOrDefault("2",0);
-        Integer cz = typeScoreMap.getOrDefault("3",0);
+        Integer gx = typeScoreMap.getOrDefault("1", 0);
+        Integer rz = typeScoreMap.getOrDefault("2", 0);
+        Integer cz = typeScoreMap.getOrDefault("3", 0);
         int max = Integer.max(gx + rz, gx + cz);
         modelCase.setTotalScore(max);
         modelCaseMapper.updateById(modelCase);