From 31983fea91ebdd8c4a61fd9ede771eb332f48d05 Mon Sep 17 00:00:00 2001 From: sunxiqing <2240398334@qq.com> Date: Wed, 17 Sep 2025 10:00:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor(yudao-module-llm):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=95=B0=E6=8D=AE=E9=9B=86=E9=97=AE=E9=A2=98=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了对每个问题单独查询答案的逻辑,减少数据库查询次数 - 使用批量查询方式获取所有问题的答案,提高效率 - 通过流操作对答案进行分组,简化代码结构- 保留了原有逻辑的功能,仅对实现方式进行优化 --- .../dataset/DatasetQuestionServiceImpl.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/dataset/DatasetQuestionServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/dataset/DatasetQuestionServiceImpl.java index 7c2f954c1..a57e0dc38 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/dataset/DatasetQuestionServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/dataset/DatasetQuestionServiceImpl.java @@ -85,11 +85,23 @@ public class DatasetQuestionServiceImpl implements DatasetQuestionService { PageResult datasetQuestionDOPageResult = datasetQuestionMapper.selectPage(pageReqVO); PageResult result = BeanUtils.toBean(datasetQuestionDOPageResult, DatasetQuestionRespVO.class); if (CollectionUtils.isNotEmpty(result.getList())) { - result.getList().forEach(item -> { - List datasetAnswerDOS = datasetAnswerMapper.selectList(new LambdaQueryWrapper<>(DatasetAnswerDO.class) - .eq(DatasetAnswerDO::getQuestionId, item.getId())); - item.setDatasetAnswerRespVO(BeanUtils.toBean(datasetAnswerDOS, DatasetAnswerRespVO.class)); - +// result.getList().forEach(item -> { +// List datasetAnswerDOS = datasetAnswerMapper.selectList(new LambdaQueryWrapper<>(DatasetAnswerDO.class) +// .eq(DatasetAnswerDO::getQuestionId, item.getId())); +// item.setDatasetAnswerRespVO(BeanUtils.toBean(datasetAnswerDOS, DatasetAnswerRespVO.class)); +// +// }); + // 优化代码 + List list = result.getList(); + // 获取答案 + Set collect = list.stream().map(DatasetQuestionRespVO::getId).collect(Collectors.toSet()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .in(DatasetAnswerDO::getQuestionId, collect); + List datasetAnswerDOS = datasetAnswerMapper.selectList(wrapper); + List respVOS = BeanUtils.toBean(datasetAnswerDOS, DatasetAnswerRespVO.class); + Map> collect1 = respVOS.stream().collect(Collectors.groupingBy(DatasetAnswerRespVO::getQuestionId)); + list.forEach(item -> { + item.setDatasetAnswerRespVO(collect1.get(item.getId())); }); } return result;