refactor(yudao-module-llm): 优化数据集问题列表接口
- 移除了对每个问题单独查询答案的逻辑,减少数据库查询次数 - 使用批量查询方式获取所有问题的答案,提高效率 - 通过流操作对答案进行分组,简化代码结构- 保留了原有逻辑的功能,仅对实现方式进行优化
This commit is contained in:
parent
b762f11ebe
commit
31983fea91
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user