DESKTOP-71BH0QO\L、ming
2021-04-13 0c0cf5c7e0d35a868a185d09bc8f09e21fb630e0
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
@@ -1,6 +1,7 @@
package com.panzhihua.service_community.service.impl;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -52,6 +53,8 @@
    ComActQuestnaireSubServiceImpl questnaireSubService;
    @Resource
    ComActQuestnaireSubSelectionServiceImpl subSelectionService;
    @Resource
    ComActQuestnaireAnswerContentServiceImpl answerContentService;
    @Override
    public R addQuestnaire(QuestnaireVO questnaireVO, Long communityId, Long userId) {
@@ -176,7 +179,7 @@
    }
    @Override
    public R statQuestnaire(Long 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 +196,7 @@
        List<UsersSubAnswerStatVO> usersSubAnswerStatVOList = new ArrayList<>();
        comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO->{
        comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO -> {
            UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO();
            ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
@@ -203,13 +206,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);
        });
@@ -225,8 +228,8 @@
    @Override
    public R answerInfoQuestnaire(Long userId, Long questId) {
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectOne(new QueryWrapper<ComActQuestnaireDO>().lambda().eq(ComActQuestnaireDO::getId, questId).eq(ComActQuestnaireDO::getIsHide, 0));
        if(comActQuestnaireDO==null){
            return  R.fail("问卷不存在!");
        if (comActQuestnaireDO == null) {
            return R.fail("问卷不存在!");
        }
        UsersAnswerVO usersAnswerVO = new UsersAnswerVO();
@@ -238,7 +241,7 @@
        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();
@@ -259,7 +262,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));
@@ -289,7 +292,7 @@
         */
        List<ComActQuestnaireSubDO> list = questnaireSubDAO.selectList(new QueryWrapper<ComActQuestnaireSubDO>().lambda().eq(ComActQuestnaireSubDO::getQueId, questId));
        List<ComActQuestnaireSubVO> listSubVo = new ArrayList<>();
        list.forEach(subDo->{
        list.forEach(subDo -> {
            ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
            BeanUtils.copyProperties(subDo, comActQuestnaireSubVO);
            listSubVo.add(comActQuestnaireSubVO);
@@ -300,7 +303,7 @@
         */
        List<ComActQuestnaireAnswerContentDO> questnaireAnswerContentDOList = questnaireAnswerContentDAO.selectListByQuestnaire(questId);
        List<ComActQuestnaireAnswerContentVO> vos = new ArrayList<>();
        questnaireAnswerContentDOList.forEach(dos ->{
        questnaireAnswerContentDOList.forEach(dos -> {
            ComActQuestnaireAnswerContentVO vo = new ComActQuestnaireAnswerContentVO();
            BeanUtils.copyProperties(dos, vo);
            vos.add(vo);
@@ -325,4 +328,32 @@
        IPage<ComActQuestnaireAnswerContentVO> doPager = questnaireAnswerContentDAO.selectAnswersByPage(userPage, pageQuestnaireAnswerDTO);
        return R.ok(doPager);
    }
    @Override
    public R usersAnsweQuestnaire(UsersAnswerQuestnaireVO answerQuestnaireVO, Long userId) {
        if (answerQuestnaireVO == null || answerQuestnaireVO.getAnswerContentVOList() == null) {
            return R.fail(500, "数据为空!");
        }
        ComActQuestnaireDO questnaireDO = questnaireDAO.selectById(answerQuestnaireVO.getQuestId());
        if (questnaireDO == null) {
            return R.fail(500, "调查问卷不存在!");
        }
        LambdaQueryWrapper<ComActQuestnaireSubDO> subQuery = new LambdaQueryWrapper<ComActQuestnaireSubDO>();
        subQuery.eq(ComActQuestnaireSubDO::getQueId,answerQuestnaireVO.getQuestId());
        List<ComActQuestnaireSubDO> subDOS = questnaireSubDAO.selectList(subQuery);
        List<Long> subIds = subDOS.stream().map(ComActQuestnaireSubDO::getId).collect(Collectors.toList());
        List<UserAnswerContentVO> answerContentVOList = answerQuestnaireVO.getAnswerContentVOList();
        List<ComActQuestnaireAnswerContentDO> answerContentDOList = Lists.newArrayList();
        for (UserAnswerContentVO answerContent:answerContentVOList) {
            ComActQuestnaireAnswerContentDO answerContentDO = new ComActQuestnaireAnswerContentDO();
            boolean b = subIds.stream().anyMatch(a -> a.equals(answerContent.getSubId()));
            if (!b) {
                throw new ServiceException("500", "调查问卷题目不存在!");
            }
            BeanUtils.copyProperties(answerContentDO,answerContent);
            answerContentDOList.add(answerContentDO);
        }
        answerContentService.saveBatch(answerContentDOList);
        return R.ok();
    }
}