From 80669d4c0f66f6b2c2aff635d6577a0e8540ba2f Mon Sep 17 00:00:00 2001 From: liu Date: Fri, 7 Jun 2024 15:48:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=8F=8D=E9=A6=88=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervision/model/DiagnosisQaRecord.java | 8 +++ .../java/com/supervision/model/Process.java | 5 ++ .../supervision/service/ProcessService.java | 4 +- .../mapper/DiagnosisQaRecordMapper.xml | 9 ++- .../main/resources/mapper/ProcessMapper.xml | 2 + .../controller/FeedbackController.java | 29 ++++++++ .../com/supervision/pojo/vo/FeedBackQaVO.java | 25 +++++++ .../com/supervision/pojo/vo/FeedBackVO.java | 21 ++++++ .../supervision/service/FeedbackService.java | 10 +++ .../service/impl/FeedbackServiceImpl.java | 66 +++++++++++++++++++ 10 files changed, 171 insertions(+), 8 deletions(-) create mode 100644 virtual-patient-web/src/main/java/com/supervision/controller/FeedbackController.java create mode 100644 virtual-patient-web/src/main/java/com/supervision/pojo/vo/FeedBackQaVO.java create mode 100644 virtual-patient-web/src/main/java/com/supervision/pojo/vo/FeedBackVO.java create mode 100644 virtual-patient-web/src/main/java/com/supervision/service/FeedbackService.java create mode 100644 virtual-patient-web/src/main/java/com/supervision/service/impl/FeedbackServiceImpl.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 2ad67019..c0835426 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 @@ -64,6 +64,14 @@ public class DiagnosisQaRecord extends Model implements Seria @Schema(description = "是否是鉴别依据(0否1是)") private Integer basisIdentificationFlag; + @Schema(description = "反馈类型(1合理 2不合理)") + private Integer feedbackType; + + @Schema(description = "反馈项(1回答过于冗长 2答非所问 3内容过于简洁)") + private Integer feedbackItem; + + @Schema(description = "反馈备注") + private String feedbackRemark; /** * 创建人ID */ diff --git a/virtual-patient-model/src/main/java/com/supervision/model/Process.java b/virtual-patient-model/src/main/java/com/supervision/model/Process.java index c6b2bb52..6f665098 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/Process.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/Process.java @@ -66,6 +66,11 @@ public class Process implements Serializable { @Schema(description = "删除标识 0:未删除 1:删除") private Integer deleteFlag; + @Schema(description = "评价级别 1可靠 2基本可靠 3仅供参考") + private Integer evaluateLevel; + + @Schema(description = "评价备注内容") + private String evaluateRemark; /** * 创建人ID */ diff --git a/virtual-patient-model/src/main/java/com/supervision/service/ProcessService.java b/virtual-patient-model/src/main/java/com/supervision/service/ProcessService.java index 8d4ece27..89f91b46 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/ProcessService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/ProcessService.java @@ -2,13 +2,12 @@ package com.supervision.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.supervision.model.Process; import com.baomidou.mybatisplus.extension.service.IService; +import com.supervision.model.Process; import com.supervision.vo.result.DiagnoseProcessReqVo; import com.supervision.vo.result.DiagnoseProcessResVo; import com.supervision.vo.result.ProcessRecordVO; -import java.util.List; import java.util.Set; /** @@ -26,7 +25,6 @@ public interface ProcessService extends IService { * 后台管理使用,问诊病案列表分页查询 * @param studentName 用户ID * @param medicalRecNo 病历号 - * @param diseaseType 疾病类型 * @return 查询结果 */ IPage queryProcessRecordPage(String studentName, String medicalRecNo, Set diseaseList, Integer pageNum, Integer pageSize); diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml index 372e80c0..304820ac 100644 --- a/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml @@ -8,12 +8,12 @@ - - - + + + @@ -23,8 +23,7 @@ id ,question_answer_type - ,process_id,question,question_answer_id,questionLibraryId, - question_wav_id,answer,answer_wav_id, + ,process_id,question,questionLibraryId,answer,feedbackItem,feedbackRemark,feedbackType create_user_id,create_time,update_user_id, update_time diff --git a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml index 99dda503..2ffde739 100644 --- a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml @@ -15,6 +15,8 @@ + + diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/FeedbackController.java b/virtual-patient-web/src/main/java/com/supervision/controller/FeedbackController.java new file mode 100644 index 00000000..935be9ee --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/controller/FeedbackController.java @@ -0,0 +1,29 @@ +package com.supervision.controller; + +import com.supervision.pojo.vo.FeedBackVO; +import com.supervision.service.FeedbackService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Tag(name = "问诊回顾-反馈") +@RestController +@RequestMapping("/feedback") +@RequiredArgsConstructor +public class FeedbackController { + + private final FeedbackService feedbackService; + + @Operation(summary = "查询问答记录") + @GetMapping("queryQaRecordForFeedback") + public FeedBackVO queryQaRecordForFeedback(String processId) { + return feedbackService.queryQaRecordForFeedback(processId); + } + + @Operation(summary = "保存反馈") + @PostMapping("saveFeedback") + public void saveFeedback(@RequestBody FeedBackVO feedbackVO) { + feedbackService.saveFeedback(feedbackVO); + } +} diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/FeedBackQaVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/FeedBackQaVO.java new file mode 100644 index 00000000..590c2b9d --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/FeedBackQaVO.java @@ -0,0 +1,25 @@ +package com.supervision.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class FeedBackQaVO { + + private String id; + + @Schema(description = "问题") + private String question; + + @Schema(description = "回答") + private String answer; + + @Schema(description = "反馈类型(1合理 2不合理)") + private Integer feedbackType; + + @Schema(description = "反馈项(1回答过于冗长 2答非所问 3内容过于简洁)") + private Integer feedbackItem; + + @Schema(description = "反馈备注") + private String feedbackRemark; +} diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/FeedBackVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/FeedBackVO.java new file mode 100644 index 00000000..e0e824ec --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/FeedBackVO.java @@ -0,0 +1,21 @@ +package com.supervision.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class FeedBackVO { + + @Schema(description = "对话列表") + private List qaList; + + @Schema(description = "评价级别 1可靠 2基本可靠 3仅供参考") + private Integer evaluateLevel; + + @Schema(description = "评价备注内容") + private String evaluateRemark; + + private String processId; +} diff --git a/virtual-patient-web/src/main/java/com/supervision/service/FeedbackService.java b/virtual-patient-web/src/main/java/com/supervision/service/FeedbackService.java new file mode 100644 index 00000000..a63e82d8 --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/service/FeedbackService.java @@ -0,0 +1,10 @@ +package com.supervision.service; + +import com.supervision.pojo.vo.FeedBackVO; + +public interface FeedbackService { + + FeedBackVO queryQaRecordForFeedback(String processId); + + void saveFeedback(FeedBackVO feedbackVO); +} diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/FeedbackServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/FeedbackServiceImpl.java new file mode 100644 index 00000000..6966cc11 --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/FeedbackServiceImpl.java @@ -0,0 +1,66 @@ +package com.supervision.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.supervision.model.DiagnosisQaRecord; +import com.supervision.model.Process; +import com.supervision.pojo.vo.FeedBackQaVO; +import com.supervision.pojo.vo.FeedBackVO; +import com.supervision.service.DiagnosisQaRecordService; +import com.supervision.service.FeedbackService; +import com.supervision.service.ProcessService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class FeedbackServiceImpl implements FeedbackService { + + private final ProcessService processService; + + private final DiagnosisQaRecordService diagnosisQaRecordService; + + + @Override + public FeedBackVO queryQaRecordForFeedback(String processId) { + List qaRecordList = diagnosisQaRecordService.lambdaQuery().eq(DiagnosisQaRecord::getProcessId, processId).list(); + List feedBackQaVOList = qaRecordList.stream().map(e -> { + FeedBackQaVO feedBackQaVO = new FeedBackQaVO(); + feedBackQaVO.setId(e.getId()); + feedBackQaVO.setQuestion(e.getQuestion()); + feedBackQaVO.setAnswer(e.getAnswer()); + feedBackQaVO.setFeedbackType(e.getFeedbackType()); + feedBackQaVO.setFeedbackItem(e.getFeedbackItem()); + feedBackQaVO.setFeedbackRemark(e.getFeedbackRemark()); + return feedBackQaVO; + }).toList(); + Process process = processService.getById(processId); + FeedBackVO feedBackVO = new FeedBackVO(); + feedBackVO.setQaList(feedBackQaVOList); + feedBackVO.setProcessId(processId); + feedBackVO.setEvaluateLevel(process.getEvaluateLevel()); + feedBackVO.setEvaluateRemark(process.getEvaluateRemark()); + return feedBackVO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveFeedback(FeedBackVO feedbackVO) { + processService.lambdaUpdate().eq(Process::getId, feedbackVO.getProcessId()) + .set(Process::getEvaluateLevel, feedbackVO.getEvaluateLevel()) + .set(Process::getEvaluateRemark, feedbackVO.getEvaluateRemark()).update(); + for (FeedBackQaVO feedBackQaVO : feedbackVO.getQaList()) { + if (ObjectUtil.isNotEmpty(feedBackQaVO.getId())) { + diagnosisQaRecordService.lambdaUpdate().eq(DiagnosisQaRecord::getId, feedBackQaVO.getId()) + .set(DiagnosisQaRecord::getFeedbackType, feedBackQaVO.getFeedbackType()) + .set(DiagnosisQaRecord::getFeedbackItem, feedBackQaVO.getFeedbackItem()) + .set(DiagnosisQaRecord::getFeedbackRemark, feedBackQaVO.getFeedbackRemark()).update(); + } + + } + } +}