From 5d5e8509008ad20dcad16918346fa6b4f6dcb98e Mon Sep 17 00:00:00 2001
From: longbao <1923439579@qq.com>
Date: Mon, 4 Nov 2024 11:31:53 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=BA=94=E7=AD=94=E7=AD=96=E7=95=A5?=
 =?UTF-8?q?=E3=80=91=201.=E6=98=BE=E7=A4=BA=E7=9B=B8=E4=BC=BC=E9=97=AE?=
 =?UTF-8?q?=E9=A2=98=202.=E5=A2=9E=E5=8A=A0=E7=9B=B8=E4=BC=BC=E9=97=AE?=
 =?UTF-8?q?=E9=A2=98=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../AskQuestionLibraryManageServiceImpl.java  | 13 +++++----
 .../service/impl/CommonDicServiceImpl.java    |  7 ++++-
 .../vo/manage/AskQuestionLibraryReqVo.java    |  5 +++-
 .../AskTemplateQuestionLibraryMapper.xml      | 27 +++++++++++--------
 4 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/AskQuestionLibraryManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/AskQuestionLibraryManageServiceImpl.java
index a4042b85..46dd0180 100644
--- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/AskQuestionLibraryManageServiceImpl.java
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/AskQuestionLibraryManageServiceImpl.java
@@ -30,6 +30,7 @@ import jakarta.servlet.ServletOutputStream;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.ResourceLoader;
 import org.springframework.stereotype.Service;
@@ -76,6 +77,7 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
     public Page<AskQuestionLibraryResVo> queryPageList(Integer pageNum, Integer pageSize,
                                                        AskQuestionLibraryReqVo askQuestionLibraryReqVo) {
 
+        // 查询标准问题
         Page<AskQuestionLibraryResVo> askQuestionLibraryResVoPage = askTemplateQuestionLibraryService.queryPageList(pageNum, pageSize, askQuestionLibraryReqVo);
         if (CollUtil.isNotEmpty(askQuestionLibraryResVoPage.getRecords())){
             List<String> libraryQuestionIds = askQuestionLibraryResVoPage.getRecords().stream().map(AskQuestionLibraryResVo::getLibraryQuestionId).collect(Collectors.toList());
@@ -102,14 +104,15 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
 
         CommonDic commonDic = commonDicService.lambdaQuery().eq(CommonDic::getId, askTemplateQuestionLibrary.getDictId()).one();
         Assert.notNull(commonDic,"字典信息不存在");
-        // 不存在,则新增
+        // 查询标准问题是否存在  不存在,则新增
         AskTemplateQuestionLibrary one = askTemplateQuestionLibraryService.lambdaQuery().eq(AskTemplateQuestionLibrary::getDictId, askTemplateQuestionLibrary.getDictId()).one();
+        // 根据标准问题查询对应相似问题
         Map<String, List<String>> questionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(CollUtil.newArrayList(one));
 
 
-        // 原始数据已经存在,更新数据
+        // (标准问题)原始数据已经存在,更新数据
         if (Objects.nonNull(one)){
-            // 更新数据
+            // 更新问题到相似问题 数据
             List<String> questionList = questionMap.get(one.getId());
             // 相似问不为空。查看相似问是否存在
             if (CollUtil.isEmpty(questionList) || !questionList.contains(askTemplateQuestionLibrary.getStandardQuestion())) {
@@ -129,7 +132,7 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
 //                askTemplateQuestionLibrary.getQuestion().add(commonDic.getDescription());
 //            }
 
-            // 获取nexCode
+            // 获取nexCode  获取的是redis中的问题库
             String nextCode = RedisSequenceUtil.getQuestionLibraryCode(() -> {
                 String maxCode = askTemplateQuestionLibraryService.getMaxCode();
                 if (StrUtil.isNotEmpty(maxCode)) {
@@ -194,7 +197,7 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
         log.info("uploadQuestionLibrary : 读取文件耗时:{} s" , timer.intervalSecond());
 
         // 校验模板是否正确
-         assertTitle(reader);
+        assertTitle(reader);
 
         List<UploadQuestionLibraryDTO> uploadQuestionLibraryDTOS = reader.readAll(UploadQuestionLibraryDTO.class);
 
diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java
index e60a4b51..08876cda 100644
--- a/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java
+++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java
@@ -25,7 +25,12 @@ public class CommonDicServiceImpl extends ServiceImpl<CommonDicMapper, CommonDic
 
     @Override
     public List<CommonDictTreeDTO> queryCommonDictTree(String groupCode) {
-        List<CommonDic> list = super.lambdaQuery().eq(CommonDic::getGroupCode, groupCode).list();
+        List<CommonDic> list = new ArrayList<>();
+        if (StrUtil.isBlank(groupCode)) {
+            list = super.lambdaQuery().list();
+        }else {
+            list = super.lambdaQuery().eq(CommonDic::getGroupCode, groupCode).list();
+        }
         Map<Long, List<CommonDic>> commonDicParentIdMap = list.stream().filter(e -> ObjectUtil.isNotNull(e.getParentId()))
                 .collect(Collectors.groupingBy(CommonDic::getParentId));
         // 首先构建第一层节点
diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/manage/AskQuestionLibraryReqVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/manage/AskQuestionLibraryReqVo.java
index 724ee55d..955b675c 100644
--- a/virtual-patient-model/src/main/java/com/supervision/vo/manage/AskQuestionLibraryReqVo.java
+++ b/virtual-patient-model/src/main/java/com/supervision/vo/manage/AskQuestionLibraryReqVo.java
@@ -21,12 +21,15 @@ public class AskQuestionLibraryReqVo {
     @Schema(description = "问题", hidden = true)
     private String question;
 
-    @Schema(description = "问题")
+    @Schema(description = "标准问题")
     private String description;
 
     @Schema(description = "问题类目字典id")
     private String dictId;
 
+    @Schema(description = "相似问题")
+    private String similarityDescription;
+
     @Schema(description = "默认回答资源id")
     private String defaultAnswerResourceId;
 
diff --git a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml
index 125abb82..96d5d6a7 100644
--- a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml
+++ b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml
@@ -34,16 +34,16 @@
 
     <sql id="queryListsql">
         select
-            atql.id as id,
-            atql.id as libraryQuestionId,
-            cd.code as code,
-            atql.dict_id as dictId,
-            cd.parent_id as parentDictId,
-            atql.standard_question as standardQuestion,
-            cd.name_zh_path as nameZhPath,
-            cd.name_zh as nameZh
+        atql.id as id,
+        atql.id as libraryQuestionId,
+        cd.code as code,
+        atql.dict_id as dictId,
+        cd.parent_id as parentDictId,
+        atql.standard_question as standardQuestion,
+        cd.name_zh_path as nameZhPath,
+        cd.name_zh as nameZh
         from vp_ask_template_question_library atql
-            left join vp_common_dic cd on atql.dict_id = cd.id
+        left join vp_common_dic cd on atql.dict_id = cd.id
         <where>
             <!--排除掉默认系统异常问题数据-->
             atql.id != '1739875168974536705'
@@ -56,16 +56,21 @@
             <if test="askQuestionLibrary.dictId != null and askQuestionLibrary.dictId !=  '' ">
                 and atql.dict_id = #{askQuestionLibrary.dictId}
             </if>
+            <if test="askQuestionLibrary.similarityDescription != null and askQuestionLibrary.similarityDescription !=  '' ">
+                and atql.id in (
+                select vatqs.library_id from vp_ask_template_question_similarity vatqs
+                where vatqs.similarity_question like CONCAT('%', #{askQuestionLibrary.similarityDescription}, '%'))
+            </if>
 
         </where>
         order by cd.id asc ,atql.create_time desc
     </sql>
 
     <select id="queryList" resultMap="askQuestionLibraryResultMap" parameterType="com.supervision.vo.manage.AskQuestionLibraryReqVo">
-    <include refid="queryListsql"></include>
+        <include refid="queryListsql"></include>
     </select>
 
     <select id="queryPageList"  resultMap="askQuestionLibraryResultMap"  resultType="com.supervision.vo.manage.AskQuestionLibraryResVo">
-       <include refid="queryListsql"></include>
+        <include refid="queryListsql"></include>
     </select>
 </mapper>