package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.mapper.TQuestionnaireMapper; import com.ruoyi.system.mapper.TQuestionnaireRecordMapper; import com.ruoyi.system.mapper.TQuestionnaireStemMapper; import com.ruoyi.system.model.TAssistedDining; import com.ruoyi.system.model.TQuestionnaire; import com.ruoyi.system.model.TQuestionnaireRecord; import com.ruoyi.system.model.TQuestionnaireStem; import com.ruoyi.system.query.TQuestionnaireQuery; import com.ruoyi.system.service.TQuestionnaireService; import com.ruoyi.system.vo.TQuestionnaireVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.stream.Collectors; /** *

* 问卷调查 服务实现类 *

* * @author xiaochen * @since 2025-11-06 */ @Service public class TQuestionnaireServiceImpl extends ServiceImpl implements TQuestionnaireService { @Autowired private TQuestionnaireStemMapper questionnaireStemMapper; @Autowired private TQuestionnaireRecordMapper questionnaireRecordMapper; @Override public PageInfo pageList(TQuestionnaireQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageList(query,pageInfo); if(CollectionUtils.isEmpty(list)){ return pageInfo; } List ids = list.stream().map(TQuestionnaireVO::getId).collect(Collectors.toList()); List questionnaireStemList = questionnaireStemMapper.selectList(Wrappers.lambdaQuery(TQuestionnaireStem.class) .in(TQuestionnaireStem::getQuestionnaireId, ids)); List questionnaireRecordList = questionnaireRecordMapper.selectList(Wrappers.lambdaQuery(TQuestionnaireRecord.class) .in(TQuestionnaireRecord::getQuestionnaireId, ids)); for (TQuestionnaireVO questionnaireVO : list) { List questionnaireStems = questionnaireStemList.stream().filter(questionnaireStem -> questionnaireVO.getId().equals(questionnaireStem.getQuestionnaireId())).collect(Collectors.toList()); questionnaireVO.setOptionNum(questionnaireStems.size()); List questionnaireRecords = questionnaireRecordList.stream().filter(questionnaireRecord -> questionnaireVO.getId().equals(questionnaireRecord.getQuestionnaireId())).collect(Collectors.toList()); questionnaireVO.setTotalNum(questionnaireRecords.size()); } pageInfo.setRecords(list); return pageInfo; } }