CeDo
2021-04-12 c3ce38cb41d4e4a7d036576b7be52ec2d8c3e724
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
@@ -1,6 +1,6 @@
package com.panzhihua.service_community.service.impl;
import java.util.Comparator;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -10,7 +10,10 @@
import com.google.common.collect.Lists;
import com.panzhihua.common.enums.QuestnaireState;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.dtos.community.PageQuestnaireAnswerDTO;
import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO;
import com.panzhihua.common.model.dtos.community.PageQuestnaireSubDetailsDTO;
import com.panzhihua.common.model.dtos.community.QuestnaireAnswersDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.questnaire.*;
import com.panzhihua.service_community.dao.ComActQuestnaireAnswerContentDAO;
@@ -30,8 +33,6 @@
import com.panzhihua.common.model.vos.community.ComActQuestnaireVO;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: llming
@@ -176,7 +177,7 @@
    @Override
    public R statQuestnaire(Long questId){
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectById(questId);
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectOne(new QueryWrapper<ComActQuestnaireDO>().lambda().eq(ComActQuestnaireDO::getId, questId).eq(ComActQuestnaireDO::getIsHide, 0));
        QuestnaireAnswerStatVO usersAnswerStatVO = new QuestnaireAnswerStatVO();
        //问卷信息
@@ -184,11 +185,35 @@
        BeanUtils.copyProperties(comActQuestnaireDO, comActQuestnaireVO);
        usersAnswerStatVO.setQuestnaire(comActQuestnaireVO);
        UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO();
        //问卷题目列表
        List<ComActQuestnaireSubDO> comActQuestnaireSubDOList =
                questnaireSubDAO.selectList(new QueryWrapper<ComActQuestnaireSubDO>().lambda().eq(ComActQuestnaireSubDO::getQueId, questId));
        //题目统计信息
        List<UserSubAnswerSelectionStatVO> usearSubAnswerSelectionStatVOList = questnaireAnswerContentDAO.selectQuestnaireStat(questId);
        List<UsersSubAnswerStatVO> usersSubAnswerStatVOList = new ArrayList<>();
        //questnaireAnswerContentDAO.selectQuestnaireStat(questId);
        comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO->{
            UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO();
            ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
            BeanUtils.copyProperties(comActQuestnaireSubDO, comActQuestnaireSubVO);
            usersSubAnswerStatVO.setQuestSubVO(comActQuestnaireSubVO);
            List<UserSubAnswerSelectionStatVO> userSubAnswerSelectionStatVOList = new ArrayList<>();
            usersSubAnswerStatVO.setTotal(0);
            usearSubAnswerSelectionStatVOList.forEach(stat ->{
                if(stat.getSubId()==comActQuestnaireSubDO.getId()){
                    userSubAnswerSelectionStatVOList.add(stat);
                }
            });
            usersSubAnswerStatVO.setUsersAnswer(userSubAnswerSelectionStatVOList);
            Integer count = questnaireAnswerContentDAO.selectCount(new QueryWrapper<ComActQuestnaireAnswerContentDO>().select(" DISTINCT sub_id, user_id ").lambda().eq(ComActQuestnaireAnswerContentDO::getSubId,comActQuestnaireSubDO.getId()));
            usersSubAnswerStatVO.setTotal(count);
            usersSubAnswerStatVOList.add(usersSubAnswerStatVO);
        });
        usersAnswerStatVO.setUsersSubAnswerStat(usersSubAnswerStatVOList);
        return R.ok(usersAnswerStatVO);
    }
@@ -199,8 +224,7 @@
    @Override
    public R answerInfoQuestnaire(Long userId, Long questId) {
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectById(questId);
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectOne(new QueryWrapper<ComActQuestnaireDO>().lambda().eq(ComActQuestnaireDO::getId, questId).eq(ComActQuestnaireDO::getIsHide, 0));
        if(comActQuestnaireDO==null){
            return  R.fail("问卷不存在!");
        }
@@ -211,7 +235,7 @@
        usersAnswerVO.setQuestnaire(comActQuestnaireVO);
        List<ComActQuestnaireSubDO> list = questnaireSubDAO.selectList(new QueryWrapper<ComActQuestnaireSubDO>().lambda().eq(ComActQuestnaireSubDO::getQueId, questId));
        list.sort(Comparator.comparing(ComActQuestnaireSubDO::getSort).reversed());
        list.sort(Comparator.comparing(ComActQuestnaireSubDO::getSort));
        List<UsersSubAnswerVO> usersSubAnswerVOList = new ArrayList<>();
        list.forEach(comActQuestnaireSubDO ->{
@@ -256,4 +280,49 @@
        return R.ok(usersAnswerVO);
    }
    @Override
    public R answerResultList(Long questId) {
        QuestnaireAnswersDTO questnaireAnswersDTO = new QuestnaireAnswersDTO();
        /**
         * 查询题目
         */
        List<ComActQuestnaireSubDO> list = questnaireSubDAO.selectList(new QueryWrapper<ComActQuestnaireSubDO>().lambda().eq(ComActQuestnaireSubDO::getQueId, questId));
        List<ComActQuestnaireSubVO> listSubVo = new ArrayList<>();
        list.forEach(subDo->{
            ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
            BeanUtils.copyProperties(subDo, comActQuestnaireSubVO);
            listSubVo.add(comActQuestnaireSubVO);
        });
        questnaireAnswersDTO.setSubs(listSubVo);
        /**
         * 查询用户回答
         */
        List<ComActQuestnaireAnswerContentDO> questnaireAnswerContentDOList = questnaireAnswerContentDAO.selectListByQuestnaire(questId);
        List<ComActQuestnaireAnswerContentVO> vos = new ArrayList<>();
        questnaireAnswerContentDOList.forEach(dos ->{
            ComActQuestnaireAnswerContentVO vo = new ComActQuestnaireAnswerContentVO();
            BeanUtils.copyProperties(dos, vo);
            vos.add(vo);
        });
        questnaireAnswersDTO.setAnswers(vos);
        return R.ok(questnaireAnswersDTO);
    }
    @Override
    public R qaQeustDetails(PageQuestnaireSubDetailsDTO pageQuestnaireSubDetailsDTO) {
        Page userPage = new Page(pageQuestnaireSubDetailsDTO.getPageNum(), pageQuestnaireSubDetailsDTO.getPageSize());
        IPage<ComActQuestnaireAnswerContentDO> doPager =
                questnaireAnswerContentDAO.selectPage(userPage, new QueryWrapper<ComActQuestnaireAnswerContentDO>()
                        .orderBy(true, true, "create_at").lambda().eq(ComActQuestnaireAnswerContentDO::getSubId, pageQuestnaireSubDetailsDTO.getSubId()));
        return R.ok(doPager);
    }
    @Override
    public R pageQuestnaireAnswer(PageQuestnaireAnswerDTO pageQuestnaireAnswerDTO) {
        Page userPage = new Page(pageQuestnaireAnswerDTO.getPageNum(), pageQuestnaireAnswerDTO.getPageSize());
        IPage<ComActQuestnaireAnswerContentVO> doPager = questnaireAnswerContentDAO.selectAnswersByPage(userPage, pageQuestnaireAnswerDTO);
        return R.ok(doPager);
    }
}