diff --git a/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java index 01f24ab..79b9cf2 100644 --- a/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ChatServiceImpl.java @@ -13,6 +13,7 @@ import com.supervision.police.domain.Conversation; import com.supervision.police.domain.ConversationQa; import com.supervision.police.domain.ModelCase; import com.supervision.police.domain.ModelIndex; +import com.supervision.police.dto.AnalyseCaseDTO; import com.supervision.police.dto.IndexDetail; import com.supervision.police.dto.IndexResultQuery; import com.supervision.police.dto.caseScore.CaseScoreDetailDTO; @@ -114,13 +115,18 @@ public class ChatServiceImpl implements ChatService { if (modelIndices.stream().map(ModelIndex::getName).anyMatch(query::contains)) { handleIndexResultQA(modelIndices, query, caseId, answerMap); } else if (INTENT_TYPE_TEXT_CASE_RESULT.equals(query) || INTENT_TYPE_CASE_RESULT.equals(intentType)) { + ModelCase modelCase = modelCaseService.getById(caseId); + if (modelCase.getTotalScore() == null) { + log.info("案件【{}】尚未执行模型分析,现在开始执行", modelCase.getCaseName()); + AnalyseCaseDTO analyseCaseDTO = new AnalyseCaseDTO(); + analyseCaseDTO.setCaseId(caseId); + modelService.analyseCaseNew(analyseCaseDTO); + } answerMap = JSON.parseObject(JSON.toJSONString(modelService.caseScoreDetail(caseId)), Map.class); } else if (INTENT_TYPE_CASE_OVERVIEW.equals(query) || INTENT_TYPE_CASE_OVERVIEW.equals(intentType)) { - ModelCase modelCase = modelCaseService.getById(caseId); - answerMap.put("answerText", modelCase.getCaseDetail()); + answerMap.put("answerText", modelCaseService.getById(caseId).getCaseDetail()); } else if (INTENT_TYPE_CASE_EVIDENCE_GUIDE.equals(query) || INTENT_TYPE_CASE_EVIDENCE_GUIDE.equals(intentType)) { - CaseScoreDetailDTO caseScoreDetailDTO = modelService.caseScoreDetail(caseId); - answerMap.put("guideDesc", caseScoreDetailDTO.getGuideDesc()); + answerMap.put("guideDesc", modelService.caseScoreDetail(caseId).getGuideDesc()); } else { ModelCase modelCase = modelCaseService.getById(caseId); DifyChatReqVO difyChatReqVO = new DifyChatReqVO(); @@ -144,15 +150,20 @@ public class ChatServiceImpl implements ChatService { } break; case INTENT_TYPE_CASE_RESULT: + ModelCase modelCase = modelCaseService.getById(caseId); + if (modelCase.getTotalScore() == null) { + log.info("案件【{}】尚未执行模型分析,现在开始执行", modelCase.getCaseName()); + AnalyseCaseDTO analyseCaseDTO = new AnalyseCaseDTO(); + analyseCaseDTO.setCaseId(caseId); + modelService.analyseCaseNew(analyseCaseDTO); + } answerMap = JSON.parseObject(JSON.toJSONString(modelService.caseScoreDetail(caseId)), Map.class); break; case INTENT_TYPE_CASE_OVERVIEW: - ModelCase modelCase = modelCaseService.getById(caseId); - answerMap.put("answerText", modelCase.getCaseDetail()); + answerMap.put("answerText", modelCaseService.getById(caseId).getCaseDetail()); break; case INTENT_TYPE_CASE_EVIDENCE_GUIDE: - CaseScoreDetailDTO caseScoreDetailDTO = modelService.caseScoreDetail(caseId); - answerMap.put("guideDesc", caseScoreDetailDTO.getGuideDesc()); + answerMap.put("guideDesc", modelService.caseScoreDetail(caseId).getGuideDesc()); break; default: break; @@ -200,6 +211,7 @@ public class ChatServiceImpl implements ChatService { if (!indexDetailPage.getRecords().isEmpty()) { IndexDetail indexDetail = indexDetailPage.getRecords().get(0); answerMap.put("indexName", modelIndex.getName()); + answerMap.put("indexType", modelIndex.getIndexType()); answerMap.put("result", Boolean.parseBoolean(indexDetail.getIndexResult()) ? "符合" : "不符合"); List> qaSplitList = new ArrayList<>(); if (!indexDetail.getChildren().isEmpty()) { @@ -217,17 +229,20 @@ public class ChatServiceImpl implements ChatService { }); } answerMap.put("qaSplitList", qaSplitList); - List evidenceNames = new ArrayList<>(); + List> evidenceList = new ArrayList<>(); if (!indexDetail.getChildren().isEmpty()) { indexDetail.getChildren().forEach(atomicIndexDTO -> { if (!atomicIndexDTO.getEvidentResultList().isEmpty()) { atomicIndexDTO.getEvidentResultList().forEach(evidentIndexResultDTO -> { - evidenceNames.add(evidentIndexResultDTO.getEvidenceName()); + Map evidenceMap = new HashMap<>(); + evidenceMap.put("evidenceName", evidentIndexResultDTO.getEvidenceName()); + evidenceMap.put("evidenceId", evidentIndexResultDTO.getIndexId()); + evidenceList.add(evidenceMap); }); } }); } - answerMap.put("evidenceNames", evidenceNames); + answerMap.put("evidenceNames", evidenceList); } } }