From 3cadde1277b53c63e7a3f89f6d6bd77822334964 Mon Sep 17 00:00:00 2001
From: "DESKTOP-DDTUS3E\\yaxin" <daixiaoyi0622@gmail.com>
Date: Wed, 6 Nov 2024 10:04:57 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8C=87=E6=A0=87=E7=BB=93=E6=9E=9C=E8=A1=A5?=
 =?UTF-8?q?=E5=85=85atomicIds=EF=BC=8C=E6=95=B0=E6=8D=AE=E9=9D=9E=E7=A9=BA?=
 =?UTF-8?q?=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../police/service/impl/ModelServiceImpl.java | 40 +++++++++++++++----
 1 file changed, 32 insertions(+), 8 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 0865069..4f57e30 100644
--- a/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java
+++ b/src/main/java/com/supervision/police/service/impl/ModelServiceImpl.java
@@ -177,27 +177,50 @@ public class ModelServiceImpl implements ModelService {
         log.info("数据准备阶段");
         String caseId = analyseCaseDTO.getCaseId();
         Map<String, Integer> typeScoreMap = new HashMap<>();
-        // 查出案件信息
         ModelCase modelCase = modelCaseMapper.selectById(caseId);
-        // 获取案件行为人ID
+        if (modelCase == null) {
+            log.error("未找到案件信息:【{}】", caseId);
+            return R.fail("未找到案件信息");
+        }
         CasePerson casePerson = casePersonMapper.selectOne(new LambdaQueryWrapper<CasePerson>()
                 .eq(CasePerson::getCaseId, analyseCaseDTO.getCaseId())
                 .eq(CasePerson::getCaseActorFlag, 1)
                 .eq(CasePerson::getRoleCode, "1")
                 .eq(StrUtil.isNotEmpty(analyseCaseDTO.getLawActorName()), CasePerson::getName, analyseCaseDTO.getLawActorName()));
         if (ObjectUtil.isEmpty(casePerson)) {
-            throw new RuntimeException("未找到的行为人" + analyseCaseDTO.getLawActorName());
+            log.error("未找到的行为人:【{}】", analyseCaseDTO.getLawActorName());
+            return R.fail("未找到的行为人");
         }
-        // 查出指标信息
         List<ModelIndex> modelIndices = modelIndexService.list(new LambdaQueryWrapper<ModelIndex>().eq(ModelIndex::getDataStatus, "1").eq(ModelIndex::getCaseType, modelCase.getCaseType()));
-        // 查出原子指标信息
+        if (modelIndices.isEmpty()) {
+            log.error("未找到指标信息:【{}】", modelCase.getCaseType());
+            return R.fail("未找到指标信息");
+        }
         List<ModelAtomicIndex> atomicIndices = modelAtomicIndexMapper.selectByCaseType(modelCase.getCaseType());
-        // 查出提示词信息
+        if (atomicIndices.isEmpty()) {
+            log.error("未找到原子指标信息:【{}】", modelCase.getCaseType());
+            return R.fail("未找到原子指标信息");
+        }
         List<NotePrompt> notePrompts = notePromptService.list(new LambdaQueryWrapper<NotePrompt>().eq(NotePrompt::getType, TYPE_STRUCTURAL_REASONING));
-        // 查出证据目录信息
+        if (notePrompts.isEmpty()) {
+            log.error("未找到提示词信息:【{}】", TYPE_STRUCTURAL_REASONING);
+            return R.fail("未找到提示词信息");
+        }
         List<EvidenceDirectory> evidenceDirectories = evidenceDirectoryService.list(new LambdaQueryWrapper<EvidenceDirectory>().eq(EvidenceDirectory::getCaseId, caseId));
-        // 查出证据信息
+        if (evidenceDirectories.isEmpty()) {
+            log.error("未找到证据目录信息:【{}】", caseId);
+            return R.fail("未找到证据目录信息");
+        }
         List<CaseEvidence> caseEvidences = caseEvidenceService.list(new LambdaQueryWrapper<CaseEvidence>().eq(CaseEvidence::getCaseId, caseId));
+        if (caseEvidences.isEmpty()) {
+            log.error("未找到证据信息:【{}】", caseId);
+            return R.fail("未找到证据信息");
+        }
+        List<ModelIndexAtomicRelation> modelIndexAtomicRelations = modelIndexAtomicRelationService.list();
+        if (modelIndexAtomicRelations.isEmpty()) {
+            log.error("未找到指标原子关系信息");
+            return R.fail("未找到指标原子关系信息");
+        }
         log.info("开始计算指标结果");
         // 遍历指标集合,处理每个指标的判断逻辑,得出结果
         modelIndices.forEach(modelIndex -> {
@@ -256,6 +279,7 @@ public class ModelServiceImpl implements ModelService {
             ModelIndexResult modelIndexResult = new ModelIndexResult();
             modelIndexResult.setCaseId(caseId);
             modelIndexResult.setIndexId(modelIndex.getId());
+            modelIndexResult.setAtomicIds(modelIndexAtomicRelations.stream().filter(relation -> relation.getModelIndexId().equals(modelIndex.getId())).map(ModelIndexAtomicRelation::getAtomicIndexId).collect(Collectors.joining(",")));
             ModelIndexResult exist = modelIndexResultMapper.selectByCaseIdAndIndexId(analyseCaseDTO.getCaseId(), modelIndex.getId());
             if (exist != null) {
                 modelIndexResult.setId(exist.getId());