From 45900abc2fdf5eca4ffa3fa9a9eb69b3b4b5efa2 Mon Sep 17 00:00:00 2001 From: liu Date: Fri, 8 Dec 2023 11:04:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=97=AE=E8=AF=8A=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E7=9A=84=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervision/model/DiagnosisQaRecord.java | 8 +++- .../service/DiagnosisQaRecordService.java | 3 +- .../impl/DiagnosisQaRecordServiceImpl.java | 40 +++++++++++++++++-- .../vo/ask/DiagnosisQaRecordHistoryResVO.java | 14 +++++++ .../mapper/DiagnosisQaRecordMapper.xml | 3 +- .../DiagnosisQaRecordController.java | 3 +- .../service/impl/AskServiceImpl.java | 17 ++++---- 7 files changed, 74 insertions(+), 14 deletions(-) create mode 100644 virtual-patient-model/src/main/java/com/supervision/vo/ask/DiagnosisQaRecordHistoryResVO.java diff --git a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisQaRecord.java b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisQaRecord.java index 457b0ac1..d8449a79 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisQaRecord.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisQaRecord.java @@ -34,7 +34,7 @@ public class DiagnosisQaRecord extends Model implements Seria @ApiModelProperty("诊断进程ID") private String processId; - @ApiModelProperty("问答类型:default,patient") + @ApiModelProperty("问答类型:default,patient,如果patient,说明是病历配置的回答,打勾") private String answerType; /** @@ -49,6 +49,12 @@ public class DiagnosisQaRecord extends Model implements Seria @ApiModelProperty("问题") private String question; + /** + * 问题ID + */ + @ApiModelProperty("问题ID") + private String questionLibraryId; + /** * 问题语音文件ID */ diff --git a/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisQaRecordService.java b/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisQaRecordService.java index 3302fd05..b4ec8fce 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisQaRecordService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisQaRecordService.java @@ -2,6 +2,7 @@ package com.supervision.service; import com.supervision.model.DiagnosisQaRecord; import com.baomidou.mybatisplus.extension.service.IService; +import com.supervision.vo.ask.DiagnosisQaRecordHistoryResVO; import java.util.List; @@ -13,5 +14,5 @@ import java.util.List; public interface DiagnosisQaRecordService extends IService { - List queryByProcessId(String processId); + List queryByProcessId(String processId); } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisQaRecordServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisQaRecordServiceImpl.java index cb05df07..c50536ee 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisQaRecordServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisQaRecordServiceImpl.java @@ -1,12 +1,26 @@ package com.supervision.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.supervision.model.AskTemplateQuestionLibrary; +import com.supervision.model.CommonDic; import com.supervision.model.DiagnosisQaRecord; +import com.supervision.service.AskTemplateQuestionLibraryService; +import com.supervision.service.CommonDicService; import com.supervision.service.DiagnosisQaRecordService; import com.supervision.mapper.DiagnosisQaRecordMapper; +import com.supervision.vo.ask.DiagnosisQaRecordHistoryResVO; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author flevance @@ -14,13 +28,33 @@ import java.util.List; * @createDate 2023-10-20 17:19:21 */ @Service +@RequiredArgsConstructor public class DiagnosisQaRecordServiceImpl extends ServiceImpl implements DiagnosisQaRecordService{ - @Override - public List queryByProcessId(String processId) { + private final CommonDicService commonDicService; - return super.lambdaQuery().eq(DiagnosisQaRecord::getProcessId,processId).list(); + private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService; + @Override + public List queryByProcessId(String processId) { + + List list = this.lambdaQuery().eq(DiagnosisQaRecord::getProcessId, processId).list(); + + // 根据questionLibraryId找到对应的字典 + Set questionIdList = list.stream().map(DiagnosisQaRecord::getQuestionLibraryId).filter(StrUtil::isNotBlank).collect(Collectors.toSet()); + List askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.listByIds(questionIdList); + Map questionLibraryMap = askTemplateQuestionLibraryList.stream().collect(Collectors.toMap(AskTemplateQuestionLibrary::getId, AskTemplateQuestionLibrary::getDictId)); + List commonDicList = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").list(); + Map dicMap = commonDicList.stream().collect(Collectors.toMap(CommonDic::getId, Function.identity())); + List resVOS = BeanUtil.copyToList(list, DiagnosisQaRecordHistoryResVO.class); + for (DiagnosisQaRecordHistoryResVO resVO : resVOS) { + Long dictId = questionLibraryMap.get(resVO.getQuestionLibraryId()); + if (ObjectUtil.isNotEmpty(dictId)){ + CommonDic commonDic = dicMap.get(dictId); + resVO.setCommonDic(commonDic); + } + } + return resVOS; } } diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/DiagnosisQaRecordHistoryResVO.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/DiagnosisQaRecordHistoryResVO.java new file mode 100644 index 00000000..95de65ad --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/DiagnosisQaRecordHistoryResVO.java @@ -0,0 +1,14 @@ +package com.supervision.vo.ask; + +import com.supervision.model.CommonDic; +import com.supervision.model.DiagnosisQaRecord; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DiagnosisQaRecordHistoryResVO extends DiagnosisQaRecord { + + private CommonDic commonDic; + +} diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml index 5be2a328..372e80c0 100644 --- a/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml @@ -10,6 +10,7 @@ + @@ -22,7 +23,7 @@ id ,question_answer_type - ,process_id,question,question_answer_id + ,process_id,question,question_answer_id,questionLibraryId, question_wav_id,answer,answer_wav_id, create_user_id,create_time,update_user_id, update_time diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/DiagnosisQaRecordController.java b/virtual-patient-web/src/main/java/com/supervision/controller/DiagnosisQaRecordController.java index befa570a..2ee3223e 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/DiagnosisQaRecordController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/DiagnosisQaRecordController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.supervision.exception.BusinessException; import com.supervision.model.DiagnosisQaRecord; import com.supervision.service.DiagnosisQaRecordService; +import com.supervision.vo.ask.DiagnosisQaRecordHistoryResVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -23,7 +24,7 @@ public class DiagnosisQaRecordController { private final DiagnosisQaRecordService diagnosisQaRecordService; @ApiOperation("查询问诊历史记录") @GetMapping("queryHistoryList") - public List queryDiagnosisHistoryQaList(String processId){ + public List queryDiagnosisHistoryQaList(String processId){ if (StrUtil.isEmpty(processId)){ throw new BusinessException("processId is empty"); } 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 27e5641f..f16881a2 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 @@ -66,7 +66,7 @@ public class AskServiceImpl implements AskService { // 这里调用京东数字人接口首先根据token获取房间号 String roomId = HumanUtil.queryRoomId(talkReqVO.getRoomKey(), talkReqVO.getRoomToken()); HumanUtil.textDriven("您好,我没有听懂您说什么", roomId); - saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), "您好,我没有听懂您说什么"); + saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), null, "您好,我没有听懂您说什么"); } TalkResultResVO talkResultResVO = new TalkResultResVO(); // 这里校验,rasa回复的结果是不是action @@ -88,7 +88,7 @@ public class AskServiceImpl implements AskService { if (ObjectUtil.isEmpty(library)) { log.info("{}:未从问题库中找到,回答未识别语句", rasaResult); HumanUtil.textDriven("您好,我没有听懂您说什么", roomId); - saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), "您好,我没有听懂您说什么"); + saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), null, "您好,我没有听懂您说什么"); } else { AskPatientAnswer askPatientAnswer = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getPatientId, process.getPatientId()) .eq(AskPatientAnswer::getLibraryQuestionId, library.getId()).last("limit 1").one(); @@ -100,12 +100,12 @@ public class AskServiceImpl implements AskService { String resText = library.getDefaultAnswer(); HumanUtil.textDriven(resText, roomId); // 保存记录 - saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), resText); + saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), library, resText); log.info("{}:找到了默认答案:{}", rasaResult, talkReqVO.getText()); } else { log.info("{}:没有从默认答案中找到找到默认内容,回复未识别语句", rasaResult); HumanUtil.textDriven("您好,我没有听懂您说什么", roomId); - saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), "您好,我没有听懂您说什么"); + saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), library, "您好,我没有听懂您说什么"); } } else { if (CollUtil.isEmpty(askPatientAnswer.getAnswer())) { @@ -115,7 +115,7 @@ public class AskServiceImpl implements AskService { log.info("{}:病历配置的回答:{}:为空不为空不为空,但在获取的时候,答案为空,开始回复默认语句,默认语句内容:{}", rasaResult, askPatientAnswer.getId(), resText); HumanUtil.textDriven(resText, roomId); // 保存记录 - saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), resText); + saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), library, resText); } else { log.info("{}:病历配置的回答:{}:为空不为空,但在获取的时候,答案为空,但是获取默认语句也为空,那么回复未识别语句", rasaResult, askPatientAnswer.getId()); HumanUtil.textDriven("您好,我没有听懂您说什么", roomId); @@ -126,7 +126,7 @@ public class AskServiceImpl implements AskService { log.info("{}:找到了病历配置的回答语句:{},回答内容:{}", rasaResult, askPatientAnswer.getId(), resText); HumanUtil.textDriven(resText, roomId); // 保存记录 - saveQaRecord(talkReqVO.getProcessId(), "patient", askPatientAnswer.getId(), talkReqVO.getText(), resText); + saveQaRecord(talkReqVO.getProcessId(), "patient", askPatientAnswer.getId(), talkReqVO.getText(), library, resText); } } @@ -136,11 +136,14 @@ public class AskServiceImpl implements AskService { return talkResultResVO; } - private void saveQaRecord(String processId, String answerType, String answerId, String question, String resText) { + private void saveQaRecord(String processId, String answerType, String answerId, String question, AskTemplateQuestionLibrary library, String resText) { DiagnosisQaRecord record = new DiagnosisQaRecord(); record.setProcessId(processId); record.setAnswerType(answerType); record.setAnswerId(answerId); + if (ObjectUtil.isNotEmpty(library)) { + record.setQuestionLibraryId(library.getId()); + } record.setQuestion(question); record.setAnswer(resText); record.setCreateUserId(UserUtil.getUser().getId());