diff --git a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/controller/TitleController.java b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/controller/TitleController.java index e1de0e848..f3d106a93 100644 --- a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/controller/TitleController.java +++ b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/controller/TitleController.java @@ -42,7 +42,7 @@ public class TitleController extends BaseController { */ @SaCheckPermission("question:title:list") @GetMapping("/list") - public TableDataInfo list(TitleBo bo, PageQuery pageQuery) { + public TableDataInfo list(TitleBo bo, PageQuery pageQuery) { return titleService.queryPageList(bo, pageQuery); } diff --git a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/domain/bo/TitleResp.java b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/domain/bo/TitleResp.java index 684590bfb..8f1493368 100644 --- a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/domain/bo/TitleResp.java +++ b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/domain/bo/TitleResp.java @@ -27,7 +27,7 @@ public class TitleResp implements Serializable { /** * 题目标签类型 */ - private Long labelName; + private String labelName; private List optionVoList; } diff --git a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/ITitleService.java b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/ITitleService.java index 88ba82bf3..9651f76c2 100644 --- a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/ITitleService.java +++ b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/ITitleService.java @@ -26,7 +26,7 @@ public interface ITitleService { /** * 查询题目列表 */ - TableDataInfo queryPageList(TitleBo bo, PageQuery pageQuery); + TableDataInfo queryPageList(TitleBo bo, PageQuery pageQuery); /** * 查询题目列表 diff --git a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/impl/TitleServiceImpl.java b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/impl/TitleServiceImpl.java index dcbba667b..00fd95836 100644 --- a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/impl/TitleServiceImpl.java +++ b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/impl/TitleServiceImpl.java @@ -1,27 +1,30 @@ package org.dromara.question.service.impl; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.question.domain.Options; -import org.dromara.question.domain.bo.TitleResp; -import org.dromara.question.domain.vo.OptionVo; -import org.dromara.question.mapper.OptionMapper; -import org.springframework.stereotype.Service; -import org.dromara.question.domain.bo.TitleBo; -import org.dromara.question.domain.vo.TitleVo; import org.dromara.question.domain.Title; +import org.dromara.question.domain.bo.TitleBo; +import org.dromara.question.domain.bo.TitleResp; +import org.dromara.question.domain.vo.LabelsVo; +import org.dromara.question.domain.vo.OptionVo; +import org.dromara.question.domain.vo.TitleVo; +import org.dromara.question.mapper.LabelsMapper; +import org.dromara.question.mapper.OptionMapper; import org.dromara.question.mapper.TitleMapper; import org.dromara.question.service.ITitleService; +import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; +import java.util.stream.Collectors; /** * 题目Service业务层处理 @@ -37,11 +40,13 @@ public class TitleServiceImpl implements ITitleService { private final OptionMapper optionMapper; + private final LabelsMapper labelsMapper; + /** * 查询题目 */ @Override - public TitleResp queryById(Long id){ + public TitleResp queryById(Long id) { TitleVo titleVo = baseMapper.selectVoById(id); List options = optionMapper.selectVoList(new LambdaQueryWrapper() .eq(Options::getQuestionId, titleVo.getId())); @@ -55,10 +60,39 @@ public class TitleServiceImpl implements ITitleService { * 查询题目列表 */ @Override - public TableDataInfo queryPageList(TitleBo bo, PageQuery pageQuery) { + public TableDataInfo queryPageList(TitleBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page<TitleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); + // 获取标签id,获取选项id + List<TitleVo> records = result.getRecords(); + List<Long> labels = records.stream().map(TitleVo::getLabelId).collect(Collectors.toList()); + List<LabelsVo> labelsVos = labelsMapper.selectVoBatchIds(labels); + Map<Long, List<LabelsVo>> labelsVoMap = labelsVos.stream().collect(Collectors.groupingBy(LabelsVo::getId)); + List<Long> recordIds = records.stream().map(TitleVo::getId).collect(Collectors.toList()); + + List<OptionVo> optionVos = optionMapper.selectVoList(new LambdaQueryWrapper<Options>() + .in(Options::getQuestionId, recordIds)); + + Map<Long, List<OptionVo>> optionsMap = optionVos.stream().collect(Collectors.groupingBy(OptionVo::getQuestionId)); + + List<TitleResp> resp = records.stream().map(p -> { + TitleResp dto = new TitleResp(); + dto.setId(p.getId()); + dto.setQuestion(p.getQuestion()); + List<LabelsVo> labelsVos1 = labelsVoMap.get(p.getLabelId()); + dto.setLabelName(labelsVos1.get(0).getLabel()); + List<OptionVo> optionVos1 = optionsMap.get(p.getId()); + dto.setOptionVoList(optionVos1); + return dto; + }).collect(Collectors.toList()); + + Page<TitleResp> respPage = new Page<>(); + respPage.setRecords(resp); + respPage.setCurrent(pageQuery.getPageNum()); + respPage.setTotal(result.getTotal()); + respPage.setSize(result.getSize()); + + return TableDataInfo.build(respPage); } /** @@ -104,7 +138,7 @@ public class TitleServiceImpl implements ITitleService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(Title entity){ + private void validEntityBeforeSave(Title entity) { //TODO 做一些数据校验,如唯一约束 } @@ -113,7 +147,7 @@ public class TitleServiceImpl implements ITitleService { */ @Override public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0;