【应答策略】

1.显示相似问题
2.增加相似问题查询
jinan_dev_by_release_3.0.0
longbao 6 months ago
parent c19f344310
commit 5d5e850900

@ -30,6 +30,7 @@ import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -76,6 +77,7 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
public Page<AskQuestionLibraryResVo> queryPageList(Integer pageNum, Integer pageSize, public Page<AskQuestionLibraryResVo> queryPageList(Integer pageNum, Integer pageSize,
AskQuestionLibraryReqVo askQuestionLibraryReqVo) { AskQuestionLibraryReqVo askQuestionLibraryReqVo) {
// 查询标准问题
Page<AskQuestionLibraryResVo> askQuestionLibraryResVoPage = askTemplateQuestionLibraryService.queryPageList(pageNum, pageSize, askQuestionLibraryReqVo); Page<AskQuestionLibraryResVo> askQuestionLibraryResVoPage = askTemplateQuestionLibraryService.queryPageList(pageNum, pageSize, askQuestionLibraryReqVo);
if (CollUtil.isNotEmpty(askQuestionLibraryResVoPage.getRecords())){ if (CollUtil.isNotEmpty(askQuestionLibraryResVoPage.getRecords())){
List<String> libraryQuestionIds = askQuestionLibraryResVoPage.getRecords().stream().map(AskQuestionLibraryResVo::getLibraryQuestionId).collect(Collectors.toList()); 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(); CommonDic commonDic = commonDicService.lambdaQuery().eq(CommonDic::getId, askTemplateQuestionLibrary.getDictId()).one();
Assert.notNull(commonDic,"字典信息不存在"); Assert.notNull(commonDic,"字典信息不存在");
// 不存在,则新增 // 查询标准问题是否存在 不存在,则新增
AskTemplateQuestionLibrary one = askTemplateQuestionLibraryService.lambdaQuery().eq(AskTemplateQuestionLibrary::getDictId, askTemplateQuestionLibrary.getDictId()).one(); AskTemplateQuestionLibrary one = askTemplateQuestionLibraryService.lambdaQuery().eq(AskTemplateQuestionLibrary::getDictId, askTemplateQuestionLibrary.getDictId()).one();
// 根据标准问题查询对应相似问题
Map<String, List<String>> questionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(CollUtil.newArrayList(one)); Map<String, List<String>> questionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(CollUtil.newArrayList(one));
// 原始数据已经存在,更新数据 // (标准问题)原始数据已经存在,更新数据
if (Objects.nonNull(one)){ if (Objects.nonNull(one)){
// 更新数据 // 更新问题到相似问题 数据
List<String> questionList = questionMap.get(one.getId()); List<String> questionList = questionMap.get(one.getId());
// 相似问不为空。查看相似问是否存在 // 相似问不为空。查看相似问是否存在
if (CollUtil.isEmpty(questionList) || !questionList.contains(askTemplateQuestionLibrary.getStandardQuestion())) { if (CollUtil.isEmpty(questionList) || !questionList.contains(askTemplateQuestionLibrary.getStandardQuestion())) {
@ -129,7 +132,7 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
// askTemplateQuestionLibrary.getQuestion().add(commonDic.getDescription()); // askTemplateQuestionLibrary.getQuestion().add(commonDic.getDescription());
// } // }
// 获取nexCode // 获取nexCode 获取的是redis中的问题库
String nextCode = RedisSequenceUtil.getQuestionLibraryCode(() -> { String nextCode = RedisSequenceUtil.getQuestionLibraryCode(() -> {
String maxCode = askTemplateQuestionLibraryService.getMaxCode(); String maxCode = askTemplateQuestionLibraryService.getMaxCode();
if (StrUtil.isNotEmpty(maxCode)) { if (StrUtil.isNotEmpty(maxCode)) {

@ -25,7 +25,12 @@ public class CommonDicServiceImpl extends ServiceImpl<CommonDicMapper, CommonDic
@Override @Override
public List<CommonDictTreeDTO> queryCommonDictTree(String groupCode) { 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())) Map<Long, List<CommonDic>> commonDicParentIdMap = list.stream().filter(e -> ObjectUtil.isNotNull(e.getParentId()))
.collect(Collectors.groupingBy(CommonDic::getParentId)); .collect(Collectors.groupingBy(CommonDic::getParentId));
// 首先构建第一层节点 // 首先构建第一层节点

@ -21,12 +21,15 @@ public class AskQuestionLibraryReqVo {
@Schema(description = "问题", hidden = true) @Schema(description = "问题", hidden = true)
private String question; private String question;
@Schema(description = "问题") @Schema(description = "标准问题")
private String description; private String description;
@Schema(description = "问题类目字典id") @Schema(description = "问题类目字典id")
private String dictId; private String dictId;
@Schema(description = "相似问题")
private String similarityDescription;
@Schema(description = "默认回答资源id") @Schema(description = "默认回答资源id")
private String defaultAnswerResourceId; private String defaultAnswerResourceId;

@ -56,6 +56,11 @@
<if test="askQuestionLibrary.dictId != null and askQuestionLibrary.dictId != '' "> <if test="askQuestionLibrary.dictId != null and askQuestionLibrary.dictId != '' ">
and atql.dict_id = #{askQuestionLibrary.dictId} and atql.dict_id = #{askQuestionLibrary.dictId}
</if> </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> </where>
order by cd.id asc ,atql.create_time desc order by cd.id asc ,atql.create_time desc

Loading…
Cancel
Save