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 queryPageList(Integer pageNum, Integer pageSize, AskQuestionLibraryReqVo askQuestionLibraryReqVo) { + // 查询标准问题 Page askQuestionLibraryResVoPage = askTemplateQuestionLibraryService.queryPageList(pageNum, pageSize, askQuestionLibraryReqVo); if (CollUtil.isNotEmpty(askQuestionLibraryResVoPage.getRecords())){ List 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> questionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(CollUtil.newArrayList(one)); - // 原始数据已经存在,更新数据 + // (标准问题)原始数据已经存在,更新数据 if (Objects.nonNull(one)){ - // 更新数据 + // 更新问题到相似问题 数据 List 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 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 queryCommonDictTree(String groupCode) { - List list = super.lambdaQuery().eq(CommonDic::getGroupCode, groupCode).list(); + List list = new ArrayList<>(); + if (StrUtil.isBlank(groupCode)) { + list = super.lambdaQuery().list(); + }else { + list = super.lambdaQuery().eq(CommonDic::getGroupCode, groupCode).list(); + } Map> 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 @@ 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 atql.id != '1739875168974536705' @@ -56,16 +56,21 @@ and atql.dict_id = #{askQuestionLibrary.dictId} + + and atql.id in ( + select vatqs.library_id from vp_ask_template_question_similarity vatqs + where vatqs.similarity_question like CONCAT('%', #{askQuestionLibrary.similarityDescription}, '%')) + order by cd.id asc ,atql.create_time desc