From 54ad966d0b142c97fc659263b51d1ea5d7b5c7c6 Mon Sep 17 00:00:00 2001 From: huanghongfa <huanghongfa123456> Date: 星期五, 28 五月 2021 16:17:08 +0800 Subject: [PATCH] 修改bug --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java | 244 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 180 insertions(+), 64 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java index 028406b..e82ea64 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java @@ -1,7 +1,7 @@ package com.panzhihua.service_community.service.impl; -import java.util.Comparator; -import java.util.Date; +import java.util.*; +import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -11,29 +11,24 @@ 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; -import com.panzhihua.service_community.dao.ComActQuestnaireDAO; -import com.panzhihua.service_community.dao.ComActQuestnaireSubDAO; -import com.panzhihua.service_community.dao.ComActQuestnaireSubSelectionDAO; -import com.panzhihua.service_community.model.dos.ComActQuestnaireAnswerContentDO; -import com.panzhihua.service_community.model.dos.ComActQuestnaireDO; -import com.panzhihua.service_community.model.dos.ComActQuestnaireSubDO; -import com.panzhihua.service_community.model.dos.ComActQuestnaireSubSelectionDO; +import com.panzhihua.service_community.dao.*; +import com.panzhihua.service_community.model.dos.*; 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; import com.panzhihua.common.model.vos.community.ComActQuestnaireSubSelectionVO; import com.panzhihua.common.model.vos.community.ComActQuestnaireSubVO; import com.panzhihua.common.model.vos.community.ComActQuestnaireVO; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; /** * @Author: llming @@ -46,6 +41,8 @@ @Resource ComActQuestnaireSubDAO questnaireSubDAO; @Resource + ComActDynUserDAO userDAO; + @Resource ComActQuestnaireSubSelectionDAO questnaireSubSelectionDAO; @Resource ComActQuestnaireAnswerContentDAO questnaireAnswerContentDAO; @@ -53,8 +50,11 @@ ComActQuestnaireSubServiceImpl questnaireSubService; @Resource ComActQuestnaireSubSelectionServiceImpl subSelectionService; + @Resource + ComActQuestnaireAnswerContentServiceImpl answerContentService; @Override + @Transactional(rollbackFor = Exception.class) public R addQuestnaire(QuestnaireVO questnaireVO, Long communityId, Long userId) { ComActQuestnaireDO comActQuestnaireDO = new ComActQuestnaireDO(); comActQuestnaireDO.setTitle(questnaireVO.getQueTitle()); @@ -63,52 +63,73 @@ comActQuestnaireDO.setJoinCount(0); comActQuestnaireDO.setCommunityId(communityId); comActQuestnaireDO.setCreateBy(userId); - comActQuestnaireDO.setForMesses(questnaireVO.getForMasses()); + comActQuestnaireDO.setIsHide(0); + comActQuestnaireDO.setForMasses(questnaireVO.getForMasses()); comActQuestnaireDO.setForParty(questnaireVO.getForParty()); comActQuestnaireDO.setForVolunteer(questnaireVO.getForVolunteer()); int questId = questnaireDAO.insert(comActQuestnaireDO); - questnaireVO.getQuestnaiteSubVOS().forEach(sub -> { - ComActQuestnaireSubDO comActQuestnaireSubDO = new ComActQuestnaireSubDO(); - comActQuestnaireSubDO.setType(sub.getType()); - comActQuestnaireSubDO.setContent(sub.getContent()); - comActQuestnaireSubDO.setSort(sub.getSort()); - comActQuestnaireSubDO.setQueId((long) questId); - comActQuestnaireSubDO.setCreateBy(userId); - int subId = questnaireSubDAO.insert(comActQuestnaireSubDO); - ArrayList<ComActQuestnaireSubSelectionDO> subSelectionList = Lists.newArrayList(); - sub.getQuestnaiteSubSelectionVOS().forEach(subSelect -> { - ComActQuestnaireSubSelectionDO subSelectionDO = new ComActQuestnaireSubSelectionDO(); - subSelectionDO.setQueSubId((long) subId); - subSelectionDO.setOptionName(subSelect.getOptionName()); - subSelectionDO.setSort(subSelect.getSort()); - subSelectionDO.setContent(subSelect.getContent()); - subSelectionDO.setCreateBy(userId); - subSelectionList.add(subSelectionDO); + if(questId!=1){ + return R.fail("创建失败"); + } + if(questnaireVO.getQuestnaiteSubVOS()!=null) { + questnaireVO.getQuestnaiteSubVOS().forEach(sub -> { + ComActQuestnaireSubDO comActQuestnaireSubDO = new ComActQuestnaireSubDO(); + comActQuestnaireSubDO.setType(sub.getType()); + comActQuestnaireSubDO.setContent(sub.getContent()); + comActQuestnaireSubDO.setSort(sub.getSort()); + comActQuestnaireSubDO.setQueId((long) comActQuestnaireDO.getId()); + comActQuestnaireSubDO.setCreateBy(userId); + int subId = questnaireSubDAO.insert(comActQuestnaireSubDO); + + ArrayList<ComActQuestnaireSubSelectionDO> subSelectionList = Lists.newArrayList(); + if(sub.getQuestnaiteSubSelectionVOS()!=null) { + List<QuestnaiteSubSelectionVO> l = sub.getQuestnaiteSubSelectionVOS(); + for(int i=0; i<l.size(); i++){ + QuestnaiteSubSelectionVO subSelect = l.get(i); + ComActQuestnaireSubSelectionDO subSelectionDO = new ComActQuestnaireSubSelectionDO(); + subSelectionDO.setQueSubId(comActQuestnaireSubDO.getId()); + if(subSelect.getType()==1){ + //添加选项名称 + subSelectionDO.setOptionName(subSelect.getOptionName()); + }else { + subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i))); + } + subSelectionDO.setSort(subSelect.getSort()); + subSelectionDO.setContent(subSelect.getContent()); + subSelectionDO.setCreateBy(userId); + subSelectionDO.setType(subSelect.getType()); + subSelectionList.add(subSelectionDO); + } + } + subSelectionService.saveBatch(subSelectionList); }); - subSelectionService.saveBatch(subSelectionList); - }); + } return R.ok(); } @Override - public R pageQuestnaire(PageQuestnaireDTO pageQuestnaireDTO) { - Page userPage = new Page(pageQuestnaireDTO.getPageNum(), pageQuestnaireDTO.getPageSize()); - LambdaQueryWrapper<ComActQuestnaireDO> lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(ComActQuestnaireDO::getCommunityId, 0); - //过滤隐藏字段 - lambdaQueryWrapper.eq(ComActQuestnaireDO::getIsHide, 0); - if (pageQuestnaireDTO.getTitle() != null) { - lambdaQueryWrapper.like(ComActQuestnaireDO::getTitle, pageQuestnaireDTO.getTitle()); + public R pageQuestnaire(PageQuestnaireDTO pageQuestnaireDTO, Long communityId) { + Page page = new Page<>(); + Long pageNum = pageQuestnaireDTO.getPageNum(); + Long pageSize = pageQuestnaireDTO.getPageSize(); + if (null == pageNum || 0 == pageNum) { + pageNum = 1l; } - if (pageQuestnaireDTO.getTitle() != null) { - lambdaQueryWrapper.eq(ComActQuestnaireDO::getState, pageQuestnaireDTO.getState()); + if (null == pageSize || 0 == pageSize) { + pageSize = 10l; } - if (pageQuestnaireDTO.getEndTime() != null && pageQuestnaireDTO.getStartTime() != null) { - lambdaQueryWrapper.ge(ComActQuestnaireDO::getCreateAt, pageQuestnaireDTO.getStartTime()); - lambdaQueryWrapper.lt(ComActQuestnaireDO::getCreateAt, pageQuestnaireDTO.getEndTime()); - } - IPage<ComActQuestnaireDO> doPager = questnaireDAO.selectPage(userPage, lambdaQueryWrapper.orderByDesc(ComActQuestnaireDO::getCreateAt)); - return R.ok(doPager); + page.setSize(pageSize); + page.setCurrent(pageNum); + IPage<QuestnaireListVo> voPage = questnaireDAO.selectPageList(page,pageQuestnaireDTO,communityId); + voPage.getRecords().forEach(record -> { + Integer userAnswerCount = questnaireAnswerContentDAO.selectUserCountByQuestnaireId(record.getId(), pageQuestnaireDTO.getUserId()); + if(userAnswerCount>0){ + record.setAnswer(true); + }else{ + record.setAnswer(false); + } + }); + return R.ok(voPage); } @Override @@ -119,8 +140,8 @@ if (questnaireDO == null) { return R.fail(500, "id有误!"); } - questnaireDO.setTitle(questnaireDO.getTitle()); - questnaireDO.setQueDescribe(questnaireDO.getQueDescribe()); + questnaireDO.setTitle(questnaireVO.getQueTitle()); + questnaireDO.setQueDescribe(questnaireVO.getQueDescribe()); //保存问卷调查 questnaireDAO.updateById(questnaireDO); questnaireVO.getQuestnaiteSubVOS().forEach(sub -> { @@ -145,6 +166,8 @@ }); }); + }else{ + return R.fail("参数有误"); } return R.ok(); } @@ -176,8 +199,12 @@ } @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)); + + if(comActQuestnaireDO==null){ + return R.fail("问卷已删除!"); + } QuestnaireAnswerStatVO usersAnswerStatVO = new QuestnaireAnswerStatVO(); //问卷信息 @@ -193,7 +220,7 @@ List<UsersSubAnswerStatVO> usersSubAnswerStatVOList = new ArrayList<>(); - comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO->{ + comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO -> { UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO(); ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO(); @@ -203,13 +230,16 @@ List<UserSubAnswerSelectionStatVO> userSubAnswerSelectionStatVOList = new ArrayList<>(); usersSubAnswerStatVO.setTotal(0); - usearSubAnswerSelectionStatVOList.forEach(stat ->{ - if(stat.getSubId()==comActQuestnaireSubDO.getId()){ + usearSubAnswerSelectionStatVOList.forEach(stat -> { + if (stat.getSubId().equals(comActQuestnaireSubDO.getId()) + && stat.getTotal()>0) { 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 +254,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 +265,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 +289,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)); @@ -281,4 +310,91 @@ 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<ComActQuestnaireAnswerContentVO> doPager = + questnaireAnswerContentDAO.selectVoByPage(userPage, pageQuestnaireSubDetailsDTO); + return R.ok(doPager); + } + + @Override + public R pageQuestnaireAnswer(PageQuestnaireAnswerDTO pageQuestnaireAnswerDTO) { + if(pageQuestnaireAnswerDTO.getPageNum()==null||pageQuestnaireAnswerDTO.getPageNum().longValue()==0){ + pageQuestnaireAnswerDTO.setPageNum(1l); + } + if(pageQuestnaireAnswerDTO.getPageSize()==null||pageQuestnaireAnswerDTO.getPageSize().longValue()==0){ + pageQuestnaireAnswerDTO.setPageSize(10l); + } + Page userPage = new Page(pageQuestnaireAnswerDTO.getPageNum(), pageQuestnaireAnswerDTO.getPageSize()); + 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(answerContent,answerContentDO); + answerContentDO.setUserId(userId); + answerContentDOList.add(answerContentDO); + } + boolean batchAddSuccess = answerContentService.saveBatch(answerContentDOList); + if(batchAddSuccess) { + /** + * 更新回答用户数量 + */ + Integer joinCount = questnaireDO.getJoinCount(); + questnaireDO.setJoinCount(joinCount != null ? joinCount + 1 : 1); + questnaireDAO.updateById(questnaireDO); + } + return R.ok(); + } } -- Gitblit v1.7.1