diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java b/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java index 0a9d6973..2c5f32e7 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java @@ -8,6 +8,7 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.supervision.exception.BusinessException; import com.supervision.model.AskTemplateQuestionLibrary; +import com.supervision.model.AskTemplateQuestionSimilarity; import com.supervision.model.ConfigPhysicalTool; import com.supervision.model.DiagnosisAiRecord; import com.supervision.service.AskTemplateQuestionLibraryService; @@ -54,6 +55,7 @@ public class TestController { private final AskTemplateQuestionSimilarityService askTemplateQuestionSimilarityService; + @GetMapping("testMatchQuestion") public String test(String question) { String template = """ @@ -84,25 +86,22 @@ public class TestController { @GetMapping("testRedisVectorStore") public void testRedisVectorStore() { List list = askTemplateQuestionLibraryService.list(); - if (CollUtil.isEmpty(list)){ return; } - - Map> similarityQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(list); for (AskTemplateQuestionLibrary askTemplateQuestionLibrary : list) { String description = askTemplateQuestionLibrary.getStandardQuestion(); redisVectorStore.add(List.of(new Document(description, Map.of("type", "1", - "standardQuestionId", askTemplateQuestionLibrary.getId(), - "questionId", askTemplateQuestionLibrary.getId(), + "libraryQuestionId", askTemplateQuestionLibrary.getId(), + "matchQuestionId", askTemplateQuestionLibrary.getId(), "dictId", String.valueOf(askTemplateQuestionLibrary.getDictId()))))); - List question = similarityQuestionMap.get(askTemplateQuestionLibrary.getId()); - for (String s : question) { - redisVectorStore.add(List.of(new Document(s, + List similarityList = askTemplateQuestionSimilarityService.lambdaQuery().eq(AskTemplateQuestionSimilarity::getLibraryId, askTemplateQuestionLibrary.getId()).list(); + for (AskTemplateQuestionSimilarity askTemplateQuestionSimilarity : similarityList) { + redisVectorStore.add(List.of(new Document(askTemplateQuestionSimilarity.getSimilarityQuestion(), Map.of("type", "2", - "standardQuestionId", askTemplateQuestionLibrary.getId(), - "questionId", askTemplateQuestionLibrary.getId(), + "libraryQuestionId", askTemplateQuestionSimilarity.getLibraryId(), + "matchQuestionId", askTemplateQuestionSimilarity.getId(), "dictId", String.valueOf(askTemplateQuestionLibrary.getDictId()))))); } } diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java index 422a1c69..de902739 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java @@ -99,7 +99,7 @@ public class AskServiceImpl implements AskService { // 记录大模型的流转记录 buildAiCirculationDetail(circulationList, answer, medicalRec); // 保存消息到记录表 - saveQaRecord(process.getId(), 2, question, null, answer, circulationList); + saveQaRecord(process.getId(), medicalRec, 2, question, null, answer, circulationList); return answer; } QaSimilarityQuestionAnswer similarityResult = first.get(); @@ -115,7 +115,7 @@ public class AskServiceImpl implements AskService { String answer = aiService.talk(question, medicalRec.getMedicalRecordAi()); // 记录流转记录 buildAiCirculationDetail(circulationList, answer, medicalRec); - saveQaRecord(process.getId(), 2, question, null, answer, circulationList); + saveQaRecord(process.getId(), medicalRec, 2, question, null, answer, circulationList); return answer; } // 根据对应的标准问题,从标准问题表中找到标准问题 @@ -130,7 +130,7 @@ public class AskServiceImpl implements AskService { String answer = aiService.talk(question, medicalRec.getMedicalRecordAi()); // 记录流转记录 buildAiCirculationDetail(circulationList, answer, medicalRec); - saveQaRecord(process.getId(), 2, question, null, answer, circulationList); + saveQaRecord(process.getId(), medicalRec, 2, question, null, answer, circulationList); return answer; } // 根据问题找这个病历配置的答案 @@ -146,7 +146,7 @@ public class AskServiceImpl implements AskService { String answer = aiService.talk(question, medicalRec.getMedicalRecordAi()); // 记录流转记录 buildAiCirculationDetail(circulationList, answer, medicalRec); - saveQaRecord(process.getId(), 2, question, null, answer, circulationList); + saveQaRecord(process.getId(), medicalRec, 2, question, null, answer, circulationList); return answer; } // 如果找到了,就走病历配置的内容回答 @@ -165,7 +165,7 @@ public class AskServiceImpl implements AskService { .matchQuestion(similarityResult.getMatchQuestion()) .successType(1) .build()); - saveQaRecord(process.getId(), 1, question, similarityResult.getLibraryQuestionId(), patientAnswer, circulationList); + saveQaRecord(process.getId(), medicalRec, 1, question, similarityResult.getLibraryQuestionId(), patientAnswer, circulationList); return patientAnswer; } @@ -178,7 +178,7 @@ public class AskServiceImpl implements AskService { } - private void saveQaRecord(String processId, Integer matchType, String question, String libraryId, String answer, List circulationList) { + private void saveQaRecord(String processId, MedicalRec medicalRec, Integer matchType, String question, String libraryId, String answer, List circulationList) { DiagnosisQaRecord record = new DiagnosisQaRecord(); record.setProcessId(processId); record.setMatchType(matchType); @@ -189,6 +189,8 @@ public class AskServiceImpl implements AskService { record.insert(); AtomicInteger atomicInteger = new AtomicInteger(0); circulationList.forEach(e -> { + e.setProcessId(processId); + e.setMedicalId(medicalRec.getId()); e.setRecordId(record.getId()); e.setCirculationNo(atomicInteger.incrementAndGet()); e.setQuestion(question);