refactor(yudao-module-llm): 优化数据集问题列表接口

- 移除了对每个问题单独查询答案的逻辑,减少数据库查询次数
- 使用批量查询方式获取所有问题的答案,提高效率
- 通过流操作对答案进行分组,简化代码结构- 保留了原有逻辑的功能,仅对实现方式进行优化
This commit is contained in:
sunxiqing 2025-09-17 10:00:13 +08:00
parent b762f11ebe
commit 31983fea91

View File

@ -85,11 +85,23 @@ public class DatasetQuestionServiceImpl implements DatasetQuestionService {
PageResult<DatasetQuestionDO> datasetQuestionDOPageResult = datasetQuestionMapper.selectPage(pageReqVO);
PageResult<DatasetQuestionRespVO> result = BeanUtils.toBean(datasetQuestionDOPageResult, DatasetQuestionRespVO.class);
if (CollectionUtils.isNotEmpty(result.getList())) {
result.getList().forEach(item -> {
List<DatasetAnswerDO> datasetAnswerDOS = datasetAnswerMapper.selectList(new LambdaQueryWrapper<>(DatasetAnswerDO.class)
.eq(DatasetAnswerDO::getQuestionId, item.getId()));
item.setDatasetAnswerRespVO(BeanUtils.toBean(datasetAnswerDOS, DatasetAnswerRespVO.class));
// result.getList().forEach(item -> {
// List<DatasetAnswerDO> datasetAnswerDOS = datasetAnswerMapper.selectList(new LambdaQueryWrapper<>(DatasetAnswerDO.class)
// .eq(DatasetAnswerDO::getQuestionId, item.getId()));
// item.setDatasetAnswerRespVO(BeanUtils.toBean(datasetAnswerDOS, DatasetAnswerRespVO.class));
//
// });
// 优化代码
List<DatasetQuestionRespVO> list = result.getList();
// 获取答案
Set<Long> collect = list.stream().map(DatasetQuestionRespVO::getId).collect(Collectors.toSet());
LambdaQueryWrapper<DatasetAnswerDO> wrapper = new LambdaQueryWrapper<DatasetAnswerDO>()
.in(DatasetAnswerDO::getQuestionId, collect);
List<DatasetAnswerDO> datasetAnswerDOS = datasetAnswerMapper.selectList(wrapper);
List<DatasetAnswerRespVO> respVOS = BeanUtils.toBean(datasetAnswerDOS, DatasetAnswerRespVO.class);
Map<Long, List<DatasetAnswerRespVO>> collect1 = respVOS.stream().collect(Collectors.groupingBy(DatasetAnswerRespVO::getQuestionId));
list.forEach(item -> {
item.setDatasetAnswerRespVO(collect1.get(item.getId()));
});
}
return result;