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;
@@ -22,7 +25,6 @@
import com.panzhihua.service_community.model.dos.ComActQuestnaireSubDO;
import com.panzhihua.service_community.model.dos.ComActQuestnaireSubSelectionDO;
import com.panzhihua.service_community.service.ComActQuestnaireService;
import io.swagger.models.auth.In;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO;
@@ -31,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,8 +176,8 @@
    }
    @Override
    public R statQuestnaire(Long questId) {
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectById(questId);
    public R statQuestnaire(Long questId){
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectOne(new QueryWrapper<ComActQuestnaireDO>().lambda().eq(ComActQuestnaireDO::getId, questId).eq(ComActQuestnaireDO::getIsHide, 0));
        QuestnaireAnswerStatVO usersAnswerStatVO = new QuestnaireAnswerStatVO();
        //问卷信息
@@ -193,7 +193,7 @@
        List<UsersSubAnswerStatVO> usersSubAnswerStatVOList = new ArrayList<>();
        comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO -> {
        comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO->{
            UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO();
            ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
@@ -203,13 +203,13 @@
            List<UserSubAnswerSelectionStatVO> userSubAnswerSelectionStatVOList = new ArrayList<>();
            usersSubAnswerStatVO.setTotal(0);
            usearSubAnswerSelectionStatVOList.forEach(stat -> {
                if (stat.getSubId() == comActQuestnaireSubDO.getId()) {
            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()));
            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);
        });
@@ -224,10 +224,9 @@
    @Override
    public R answerInfoQuestnaire(Long userId, Long questId) {
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectById(questId);
        if (comActQuestnaireDO == null) {
            return R.fail("问卷不存在!");
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectOne(new QueryWrapper<ComActQuestnaireDO>().lambda().eq(ComActQuestnaireDO::getId, questId).eq(ComActQuestnaireDO::getIsHide, 0));
        if(comActQuestnaireDO==null){
            return  R.fail("问卷不存在!");
        }
        UsersAnswerVO usersAnswerVO = new UsersAnswerVO();
@@ -236,10 +235,10 @@
        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 -> {
        list.forEach(comActQuestnaireSubDO ->{
                    UsersSubAnswerVO usersSubAnswerVO = new UsersSubAnswerVO();
                    //问卷调查题目
                    ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
@@ -260,7 +259,7 @@
                    });
                    usersSubAnswerVO.setQuestSelectionList(comActQuestnaireSubSelectionVOs);
                    //用户回答
                    if (userId != null) {
                    if(userId!=null) {
                        List<ComActQuestnaireAnswerContentDO> questnaireAnswerContentDOList =
                                questnaireAnswerContentDAO.selectList(new QueryWrapper<ComActQuestnaireAnswerContentDO>().lambda().eq(ComActQuestnaireAnswerContentDO::getUserId, userId)
                                        .eq(ComActQuestnaireAnswerContentDO::getSubId, subId));
@@ -284,10 +283,46 @@
    @Override
    public R answerResultList(Long questId) {
        LambdaQueryWrapper<ComActQuestnaireSubDO> subParam = new LambdaQueryWrapper<ComActQuestnaireSubDO>().eq(ComActQuestnaireSubDO::getQueId, questId);
        List<ComActQuestnaireSubDO> subDOS = questnaireSubDAO.selectList(subParam);
        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);
        new LambdaQueryWrapper<ComActQuestnaireAnswerContentDO>().eq(ComActQuestnaireAnswerContentDO::get)
        questnaireAnswerContentDAO.selectList()
        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);
    }
}