From 91275344f85d2777be0f276e9d9da3f6f3fa6728 Mon Sep 17 00:00:00 2001
From: tangxiaobao <303826152@qq.com>
Date: 星期五, 20 八月 2021 18:48:44 +0800
Subject: [PATCH] 实有人口和社区关系以及对应标签修改
---
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java | 714 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 606 insertions(+), 108 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 d8c5219..3e92a2d 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,8 +1,12 @@
package com.panzhihua.service_community.service.impl;
-import java.util.Comparator;
-import java.util.Date;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -11,39 +15,43 @@
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.dtos.community.questnaire.StatisticsSummaryDTO;
+import com.panzhihua.common.model.vos.LoginUserInfoVO;
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.common.service.user.UserService;
+import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.ComActQuestnaireService;
+import lombok.extern.slf4j.Slf4j;
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
* @Description:
*/
+@Slf4j
@Service
public class ComActQuestnaireServiceImpl implements ComActQuestnaireService {
@Resource
ComActQuestnaireDAO questnaireDAO;
@Resource
ComActQuestnaireSubDAO questnaireSubDAO;
+ @Resource
+ ComActDynUserDAO userDAO;
@Resource
ComActQuestnaireSubSelectionDAO questnaireSubSelectionDAO;
@Resource
@@ -52,131 +60,299 @@
ComActQuestnaireSubServiceImpl questnaireSubService;
@Resource
ComActQuestnaireSubSelectionServiceImpl subSelectionService;
+ @Resource
+ ComActQuestnaireAnswerContentServiceImpl answerContentService;
+ @Resource
+ UserService userService;
+ @Resource
+ private ComActQuestnaireUserAnswerMapper comActQuestnaireUserAnswerMapper;
@Override
- public R addQuestnaire(QuestnaireVO questnaireVO, Long communityId, Long userId) {
+ @Transactional(rollbackFor = Exception.class)
+ public R addQuestnaire(QuestnaireVO questnaireVO) {
+ Long userId = questnaireVO.getUserId();
+ if(questnaireVO.getAdverPositionPopup().equals(ComActQuestnaireDO.isOk.yes)){
+ //查询当前时间段是否已有弹窗提醒了
+ Integer count = questnaireDAO.getAdvPopupCount(questnaireVO.getCommunityId(),questnaireVO.getStartTime(),questnaireVO.getEndTime(),null);
+ if(count > 0){
+ return R.fail("所选时间段已设置了问卷调查弹窗,暂不支持再次添加!");
+ }
+ }
ComActQuestnaireDO comActQuestnaireDO = new ComActQuestnaireDO();
- comActQuestnaireDO.setTitle(questnaireVO.getQueTitle());
- comActQuestnaireDO.setQueDescribe(questnaireVO.getQueDescribe());
- comActQuestnaireDO.setState(QuestnaireState.CONTINUED.getCode());
+ Date nowDate = new Date();
+ BeanUtils.copyProperties(questnaireVO,comActQuestnaireDO);
+ comActQuestnaireDO.setState(ComActQuestnaireDO.state.dfb);
+ comActQuestnaireDO.setTitle(questnaireVO.getTitle());
comActQuestnaireDO.setJoinCount(0);
- comActQuestnaireDO.setCommunityId(communityId);
comActQuestnaireDO.setCreateBy(userId);
- 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);
+ comActQuestnaireDO.setCreateAt(nowDate);
+ Date startDate = DateUtils.stringToDate(questnaireVO.getStartTime(),DateUtils.ymdhms_format);
+ if(startDate != null && startDate.getTime() <= nowDate.getTime()){
+ comActQuestnaireDO.setState(ComActQuestnaireDO.state.dyz);
+ comActQuestnaireDO.setPublishTime(nowDate);
+ }
+ Date endDate = DateUtils.stringToDate(questnaireVO.getEndTime(),DateUtils.ymdhms_format);
+ if(endDate != null && endDate.getTime() <= nowDate.getTime()){
+ comActQuestnaireDO.setState(ComActQuestnaireDO.state.yjs);
+ }
+ comActQuestnaireDO.setStartTime(startDate);
+ comActQuestnaireDO.setEndTime(endDate);
+ if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.jm)){
+ comActQuestnaireDO.setForMasses(ComActQuestnaireDO.isOk.yes);
+ }else if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.dy)){
+ comActQuestnaireDO.setForParty(ComActQuestnaireDO.isOk.yes);
+ }else if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.zyz)){
+ comActQuestnaireDO.setForVolunteer(ComActQuestnaireDO.isOk.yes);
+ }
+
+ if(questnaireVO.getIsRelease() != null && questnaireVO.getIsRelease().equals(1)){
+ comActQuestnaireDO.setStartTime(nowDate);
+ }
+ //统计该调查问卷填报题目数量
+ int count = 0;
+ List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(questnaireVO.getJsonObject().toString(),QuestnaiteSubVO.class);
+ if(!questnaiteSubVOS.isEmpty()){
+ count = questnaiteSubVOS.size();
+ }
+ comActQuestnaireDO.setCount(count);
+ comActQuestnaireDO.setJsonObject(questnaireVO.getJsonObject());
+
+ int quesCount = questnaireDAO.insert(comActQuestnaireDO);
+ if(quesCount !=1 ){
+ return R.fail("创建失败");
+ }
+
+ if(!questnaiteSubVOS.isEmpty()) {
+ questnaiteSubVOS.forEach(sub -> {
+ ComActQuestnaireSubDO comActQuestnaireSubDO = new ComActQuestnaireSubDO();
+ comActQuestnaireSubDO.setType(sub.getType());
+ comActQuestnaireSubDO.setContent(sub.getLabel());
+ comActQuestnaireSubDO.setSort(sub.getSort());
+ comActQuestnaireSubDO.setQueId(comActQuestnaireDO.getId());
+ comActQuestnaireSubDO.setCreateBy(userId);
+ comActQuestnaireSubDO.setKey(sub.getKey());
+ questnaireSubDAO.insert(comActQuestnaireSubDO);
+ ArrayList<ComActQuestnaireSubSelectionDO> subSelectionList = Lists.newArrayList();
+ if(sub.getOptions() != null && !sub.getOptions().isEmpty()) {
+ List<QuestnaiteSubSelectionVO> subOptions = sub.getOptions();
+ for(int i=0; i<subOptions.size(); i++){
+ QuestnaiteSubSelectionVO subSelect = subOptions.get(i);
+ ComActQuestnaireSubSelectionDO subSelectionDO = new ComActQuestnaireSubSelectionDO();
+ subSelectionDO.setQueSubId(comActQuestnaireSubDO.getId());
+ if(subSelect.getType().equals(1)){
+ //添加选项名称
+ subSelectionDO.setOptionName(subSelect.getOptionName());
+ }else {
+ subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i)));
+ }
+ subSelectionDO.setContent(subSelect.getLabel());
+ subSelectionDO.setQueId(comActQuestnaireDO.getId());
+ subSelectionDO.setCreateBy(userId);
+ subSelectionDO.setType(subSelect.getType());
+ subSelectionDO.setKey(subSelect.getKey());
+ 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());
- }
- if (pageQuestnaireDTO.getTitle() != null) {
- lambdaQueryWrapper.eq(ComActQuestnaireDO::getState, pageQuestnaireDTO.getState());
- }
- 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);
+ IPage<QuestnaireListVo> voPage = questnaireDAO.selectPageList(new Page<>(pageQuestnaireDTO.getPageNum(),pageQuestnaireDTO.getPageSize()),pageQuestnaireDTO);
+ return R.ok(voPage);
}
@Override
- public R editQuestnaire(QuestnaireVO questnaireVO) {
- ComActQuestnaireDO questnaireDO = null;
- if (questnaireVO.getQuestId() != null && questnaireVO.getQuestId() != 0L) {
- questnaireDO = questnaireDAO.selectById(questnaireVO.getQuestId());
- if (questnaireDO == null) {
- return R.fail(500, "id有误!");
- }
- questnaireDO.setTitle(questnaireDO.getTitle());
- questnaireDO.setQueDescribe(questnaireDO.getQueDescribe());
- //保存问卷调查
- questnaireDAO.updateById(questnaireDO);
- questnaireVO.getQuestnaiteSubVOS().forEach(sub -> {
- if (sub.getQueSubId() == null) {
- throw new ServiceException("500", "问卷题目Id为空!");
+ public R pageQuestnaireAdmin(PageQuestnaireDTO pageQuestnaireDTO) {
+ IPage<QuestnaireListAdminVO> voPage = questnaireDAO.selectPageListAdmin(new Page<>(pageQuestnaireDTO.getPageNum(),pageQuestnaireDTO.getPageSize()),pageQuestnaireDTO);
+ if(!voPage.getRecords().isEmpty()){
+ voPage.getRecords().forEach(vo -> {
+ //判断调查人员身份
+ if(vo.getForMasses().equals(ComActQuestnaireDO.isOk.yes)){
+ vo.setIdentity("全部居民");
+ }else if(vo.getForParty().equals(ComActQuestnaireDO.isOk.yes)){
+ vo.setIdentity("党员");
+ }else if(vo.getForVolunteer().equals(ComActQuestnaireDO.isOk.yes)){
+ vo.setIdentity("志愿者");
}
- ComActQuestnaireSubDO subDO = questnaireSubDAO.selectById(sub.getQueSubId());
- if (subDO == null || sub.getContent() == null) {
- throw new ServiceException("500", "修改问卷题目数据有误!");
+ //判断广告位置
+ StringBuilder sb = new StringBuilder();
+ if(vo.getAdverPositionPopup().equals(ComActQuestnaireDO.isOk.yes)){
+ sb.append("首页弹窗,");
}
- subDO.setContent(sub.getContent());
- //更新问卷题目
- questnaireSubDAO.updateById(subDO);
- sub.getQuestnaiteSubSelectionVOS().forEach(subSelection -> {
- if (subSelection.getQueSubSelectionId() == null || subSelection.getContent() == null) {
- throw new ServiceException("500", "问卷题目选项数据有误!");
- }
- ComActQuestnaireSubSelectionDO subSelectionDO = questnaireSubSelectionDAO.selectById(subSelection.getQueSubSelectionId());
- subSelectionDO.setContent(subSelection.getContent());
- //更新问卷选项
- questnaireSubSelectionDAO.updateById(subSelectionDO);
- });
+ if(vo.getAdverPositionTop().equals(ComActQuestnaireDO.isOk.yes)){
+ sb.append("首页顶部,");
+ }
+ if(vo.getAdverPositionApplication().equals(ComActQuestnaireDO.isOk.yes)){
+ sb.append("首页应用,");
+ }
+ String advertPosition = sb.toString();
+ if(advertPosition.length() > 0){
+ vo.setAdvertPosition(advertPosition.substring(0,advertPosition.length()-1));
+ }else{
+ vo.setAdvertPosition("无");
+ }
});
+ }
+ return R.ok(voPage);
+ }
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R editQuestnaire(QuestnaireVO questnaireVO) {
+ Long queId = questnaireVO.getId();
+ Long userId = questnaireVO.getUserId();
+ ComActQuestnaireDO questnaireDO = this.questnaireDAO.selectById(queId);
+ if(questnaireDO == null){
+ return R.fail("未查询到该问卷调查");
+ }
+
+ if(!questnaireDO.getState().equals(1)){
+ return R.fail("该调查问卷不是待发布状态,不可编辑");
+ }
+
+ if(questnaireVO.getAdverPositionPopup().equals(ComActQuestnaireDO.isOk.yes)){
+ //查询当前时间段是否已有弹窗提醒了
+ Integer count = questnaireDAO.getAdvPopupCount(questnaireVO.getCommunityId(),questnaireVO.getStartTime(),questnaireVO.getEndTime(),queId);
+ if(count > 0){
+ return R.fail("所选时间段已设置了问卷调查弹窗,暂不支持再次添加!");
+ }
+ }
+
+ //更新调查问卷信息
+ Date nowDate = new Date();
+ BeanUtils.copyProperties(questnaireVO,questnaireDO);
+ questnaireDO.setState(ComActQuestnaireDO.state.dfb);
+ questnaireDO.setTitle(questnaireVO.getTitle());
+ questnaireDO.setUpdateBy(userId);
+ questnaireDO.setUpdateAt(nowDate);
+ Date startDate = DateUtils.stringToDate(questnaireVO.getStartTime(),DateUtils.ymdhms_format);
+ if(startDate != null && startDate.getTime() <= nowDate.getTime()){
+ questnaireDO.setState(ComActQuestnaireDO.state.dyz);
+ questnaireDO.setPublishTime(nowDate);
+ }
+ Date endDate = DateUtils.stringToDate(questnaireVO.getEndTime(),DateUtils.ymdhms_format);
+ if(endDate != null && endDate.getTime() <= nowDate.getTime()){
+ questnaireDO.setState(ComActQuestnaireDO.state.yjs);
+ }
+ questnaireDO.setStartTime(startDate);
+ questnaireDO.setEndTime(endDate);
+ if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.jm)){
+ questnaireDO.setForMasses(ComActQuestnaireDO.isOk.yes);
+ }else if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.dy)){
+ questnaireDO.setForParty(ComActQuestnaireDO.isOk.yes);
+ }else if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.zyz)){
+ questnaireDO.setForVolunteer(ComActQuestnaireDO.isOk.yes);
+ }
+
+ if(questnaireVO.getIsRelease() != null && questnaireVO.getIsRelease().equals(1)){
+ questnaireDO.setStartTime(nowDate);
+ }
+ //统计该调查问卷填报题目数量
+ int count = 0;
+ List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(questnaireVO.getJsonObject().toString(),QuestnaiteSubVO.class);
+ if(!questnaiteSubVOS.isEmpty()){
+ count = questnaiteSubVOS.size();
+ }
+ questnaireDO.setCount(count);
+ questnaireDO.setJsonObject(questnaireVO.getJsonObject());
+ questnaireDAO.updateById(questnaireDO);
+ //删除原调查问卷题目以及选项,重新进行新增
+ questnaireDAO.deleteQuesSubAll(queId);
+ //重新新增题目以及题目选项
+ if(!questnaiteSubVOS.isEmpty()) {
+ questnaiteSubVOS.forEach(sub -> {
+ ComActQuestnaireSubDO comActQuestnaireSubDO = new ComActQuestnaireSubDO();
+ comActQuestnaireSubDO.setType(sub.getType());
+ comActQuestnaireSubDO.setContent(sub.getLabel());
+ comActQuestnaireSubDO.setSort(sub.getSort());
+ comActQuestnaireSubDO.setKey(sub.getKey());
+ comActQuestnaireSubDO.setQueId(queId);
+ comActQuestnaireSubDO.setCreateBy(userId);
+ questnaireSubDAO.insert(comActQuestnaireSubDO);
+ ArrayList<ComActQuestnaireSubSelectionDO> subSelectionList = Lists.newArrayList();
+ if(sub.getOptions() != null && !sub.getOptions().isEmpty()) {
+ List<QuestnaiteSubSelectionVO> subOptions = sub.getOptions();
+ for(int i=0; i<subOptions.size(); i++){
+ QuestnaiteSubSelectionVO subSelect = subOptions.get(i);
+ ComActQuestnaireSubSelectionDO subSelectionDO = new ComActQuestnaireSubSelectionDO();
+ subSelectionDO.setQueSubId(comActQuestnaireSubDO.getId());
+ if(subSelect.getType().equals(1)){
+ //添加选项名称
+ subSelectionDO.setOptionName(subSelect.getOptionName());
+ }else {
+ subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i)));
+ }
+ subSelectionDO.setKey(subSelect.getKey());
+ subSelectionDO.setContent(subSelect.getLabel());
+ subSelectionDO.setQueId(queId);
+ subSelectionDO.setCreateBy(userId);
+ subSelectionDO.setType(subSelect.getType());
+ subSelectionList.add(subSelectionDO);
+ }
+ }
+ subSelectionService.saveBatch(subSelectionList);
+ });
}
return R.ok();
}
@Override
- public R editQuestnaireDO(EditComActQuestnaireVo editComActQuestnaireVo, Long userId) {
- LambdaQueryWrapper<ComActQuestnaireDO> subParam = new LambdaQueryWrapper<ComActQuestnaireDO>().eq(ComActQuestnaireDO::getId, editComActQuestnaireVo.getQuestId());
+ public R editQuestnaireDO(EditComActQuestnaireVo editComActQuestnaireVo) {
+ Long userId = editComActQuestnaireVo.getUserId();
+ LambdaQueryWrapper<ComActQuestnaireDO> subParam = new LambdaQueryWrapper<ComActQuestnaireDO>()
+ .eq(ComActQuestnaireDO::getId, editComActQuestnaireVo.getQuestId());
ComActQuestnaireDO questDO = questnaireDAO.selectOne(subParam);
if (questDO == null) {
- return R.fail(500, "Id有误!");
+ return R.fail("未查询到调查问卷记录");
}
- questDO.setState(editComActQuestnaireVo.getState());
+ if(editComActQuestnaireVo.getType().equals(EditComActQuestnaireVo.type.jx)){
+ questDO.setEndTime(DateUtils.stringToDate(editComActQuestnaireVo.getEndTime(),DateUtils.ymdhms_format));
+ questDO.setState(ComActQuestnaireDO.state.dyz);
+ }else if(editComActQuestnaireVo.getType().equals(EditComActQuestnaireVo.type.tz)){
+ questDO.setState(ComActQuestnaireDO.state.yjs);
+ }else if(editComActQuestnaireVo.getType().equals(EditComActQuestnaireVo.type.fb)){
+ questDO.setState(ComActQuestnaireDO.state.dyz);
+ questDO.setStartTime(new Date());
+ }
questDO.setUpdateBy(userId);
- questnaireDAO.updateById(questDO);
- return R.ok();
+ questDO.setUpdateAt(new Date());
+ if(questnaireDAO.updateById(questDO) > 0){
+ return R.ok();
+ }else{
+ return R.fail();
+ }
}
@Override
public R deleteQuestnaire(Long questId, Long userId) {
- LambdaQueryWrapper<ComActQuestnaireDO> subParam = new LambdaQueryWrapper<ComActQuestnaireDO>().eq(ComActQuestnaireDO::getId, questId);
- ComActQuestnaireDO queDO = questnaireDAO.selectOne(subParam);
+ ComActQuestnaireDO queDO = questnaireDAO.selectById(questId);
if (queDO == null) {
- return R.fail();
+ return R.fail("未查询到调查问卷记录");
+ }
+ if(!queDO.getState().equals(ComActQuestnaireDO.state.dfb)){
+ return R.fail("该调查问卷不是待发布状态,不可删除");
}
queDO.setUpdateBy(userId);
+ queDO.setUpdateAt(new Date());
queDO.setIsHide(1);
- questnaireDAO.updateById(queDO);
- return R.ok();
+ if(questnaireDAO.updateById(queDO) > 0){
+ return R.ok();
+ }else{
+ return R.fail();
+ }
}
@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();
//问卷信息
@@ -184,11 +360,38 @@
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().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()));
+ usersSubAnswerStatVO.setTotal(count);
+ usersSubAnswerStatVOList.add(usersSubAnswerStatVO);
+ });
+ usersAnswerStatVO.setUsersSubAnswerStat(usersSubAnswerStatVOList);
return R.ok(usersAnswerStatVO);
}
@@ -199,10 +402,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();
@@ -211,10 +413,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();
@@ -235,7 +437,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));
@@ -256,4 +458,300 @@
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
+ @Transactional(rollbackFor = Exception.class)
+ public R usersAnsweQuestnaire(UsersAnswerQuestnaireVO answerQuestnaireVO) {
+ if (answerQuestnaireVO == null || answerQuestnaireVO.getJsonObject() == null) {
+ return R.fail("数据为空!");
+ }
+ Long userId = answerQuestnaireVO.getUserId();
+ Long questId = answerQuestnaireVO.getQuestId();
+ Date nowDate = new Date();
+ ComActQuestnaireDO questnaireDO = questnaireDAO.selectById(questId);
+ if (questnaireDO == null) {
+ return R.fail("调查问卷不存在!");
+ }
+
+ if(!questnaireDO.getState().equals(ComActQuestnaireDO.state.dyz)){
+ return R.fail("该调查问卷已结束,不可提交!");
+ }
+
+ ComActQuestnaireUserAnswerDO oldUserAnswerDO = comActQuestnaireUserAnswerMapper.selectOne(new QueryWrapper<ComActQuestnaireUserAnswerDO>().lambda()
+ .eq(ComActQuestnaireUserAnswerDO::getQuestnaireId,questId).eq(ComActQuestnaireUserAnswerDO::getUserId,userId));
+ if(oldUserAnswerDO != null){
+ return R.fail("您已填写该问卷,不可重复提交");
+ }
+
+ //查询填报人员信息
+ R<LoginUserInfoVO> userResult = userService.getUserInfoByUserId(userId + "");
+ if(!R.isOk(userResult)){
+ log.error("填写问卷调查失败,未查询到用户信息");
+ return R.fail("填写失败");
+ }
+ LoginUserInfoVO userInfo = userResult.getData();
+ if(questnaireDO.getForParty().equals(ComActQuestnaireDO.isOk.yes)){
+ if(!userInfo.getIsPartymember().equals(1)){
+ return R.fail("您还未进行党员认证,无法填报");
+ }
+ }
+ if(questnaireDO.getForVolunteer().equals(ComActQuestnaireDO.isOk.yes)){
+ if(!userInfo.getIsVolunteer().equals(1)){
+ return R.fail("您还未进行志愿者认证,无法填报");
+ }
+ }
+
+ List<ComActQuestnaireAnswerContentDO> answerContentList = new ArrayList<>();
+
+ //解析用户上传json数据
+ List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(answerQuestnaireVO.getJsonObject().toString(),QuestnaiteSubVO.class);
+ if(!questnaiteSubVOS.isEmpty()){
+ for (QuestnaiteSubVO questnaiteSub:questnaiteSubVOS) {
+ //查询用户填写题目
+ ComActQuestnaireSubDO questnaireSubDO = questnaireSubDAO.selectOne(new QueryWrapper<ComActQuestnaireSubDO>().lambda()
+ .eq(ComActQuestnaireSubDO::getQueId,questId).eq(ComActQuestnaireSubDO::getKey,questnaiteSub.getKey()));
+ if(questnaireSubDO == null){
+ log.error("未查询到调查问卷题目,题目名称:" + questnaiteSub.getLabel() + "题目key:" + questnaiteSub.getKey());
+ continue;
+ }
+
+ Long queSubId = questnaireSubDO.getId();
+ //根据上传的类型查询不同的题目选项
+ if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan)){
+
+ //单选题处理
+ ComActQuestnaireSubSelectionDO subSelectionDO = questnaireSubSelectionDAO.selectOne(new QueryWrapper<ComActQuestnaireSubSelectionDO>()
+ .lambda().eq(ComActQuestnaireSubSelectionDO::getQueSubId,queSubId).eq(ComActQuestnaireSubSelectionDO::getQueId,questId)
+ .eq(ComActQuestnaireSubSelectionDO::getKey,questnaiteSub.getValues()));
+ if(subSelectionDO == null){
+ log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+ continue;
+ }
+
+ ComActQuestnaireAnswerContentDO answerContentDO = new ComActQuestnaireAnswerContentDO();
+ answerContentDO.setUserId(userId);
+ answerContentDO.setCreateAt(nowDate);
+ answerContentDO.setCreateBy(userId);
+ answerContentDO.setSelectionId(subSelectionDO.getId());
+ answerContentDO.setSubId(queSubId);
+ answerContentDO.setType(1);
+ answerContentDO.setChoice(subSelectionDO.getOptionName());
+ answerContentDO.setAnswerContent(subSelectionDO.getContent());
+ answerContentList.add(answerContentDO);
+ }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.duoxuan)){
+ //多选题处理
+ String values = questnaiteSub.getValues();
+ String []value = values.split(",");
+ for (int i = 0; i < value.length; i++) {
+ ComActQuestnaireSubSelectionDO subSelectionDO = questnaireSubSelectionDAO.selectOne(new QueryWrapper<ComActQuestnaireSubSelectionDO>()
+ .lambda().eq(ComActQuestnaireSubSelectionDO::getQueSubId,queSubId).eq(ComActQuestnaireSubSelectionDO::getQueId,questId)
+ .eq(ComActQuestnaireSubSelectionDO::getKey,value[i]));
+ if(subSelectionDO == null){
+ log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+ continue;
+ }
+ ComActQuestnaireAnswerContentDO answerContentDO = new ComActQuestnaireAnswerContentDO();
+ answerContentDO.setUserId(userId);
+ answerContentDO.setCreateAt(nowDate);
+ answerContentDO.setCreateBy(userId);
+ answerContentDO.setSelectionId(subSelectionDO.getId());
+ answerContentDO.setSubId(queSubId);
+ answerContentDO.setType(1);
+ answerContentDO.setChoice(subSelectionDO.getOptionName());
+ answerContentDO.setAnswerContent(subSelectionDO.getContent());
+ answerContentList.add(answerContentDO);
+ }
+ }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.wenda)){
+ //问答题处理
+ String values = questnaiteSub.getValues();
+ ComActQuestnaireAnswerContentDO answerContentDO = new ComActQuestnaireAnswerContentDO();
+ answerContentDO.setUserId(userId);
+ answerContentDO.setCreateAt(nowDate);
+ answerContentDO.setCreateBy(userId);
+ answerContentDO.setSubId(queSubId);
+ answerContentDO.setType(2);
+ answerContentDO.setAnswerContent(values);
+ answerContentList.add(answerContentDO);
+ }
+ }
+ }
+ //新增用户填写的答卷
+ if(!answerContentList.isEmpty()){
+ answerContentService.saveBatch(answerContentList);
+
+ //更新回答用户数量
+ Integer joinCount = questnaireDO.getJoinCount();
+ questnaireDO.setJoinCount(joinCount != null ? joinCount + 1 : 1);
+ questnaireDAO.updateById(questnaireDO);
+
+ //新增用户答题记录
+ ComActQuestnaireUserAnswerDO userAnswerDO = new ComActQuestnaireUserAnswerDO();
+ userAnswerDO.setQuestnaireId(questId);
+ userAnswerDO.setUserId(userId);
+ userAnswerDO.setCreateAt(nowDate);
+ userAnswerDO.setJsonObject(answerQuestnaireVO.getJsonObject());
+ comActQuestnaireUserAnswerMapper.insert(userAnswerDO);
+
+ }
+ return R.ok();
+ }
+
+ /**
+ * 社区后台-查询问卷调查详情
+ * @param questId 问卷id
+ * @return 问卷调查详情
+ */
+ @Override
+ public R getQuesDetailAdmin(Long questId){
+ QuestnaireDetailAdminVO result = questnaireDAO.getQuesDetailAdmin(questId);
+ if(result == null){
+ return R.fail("未查询到该记录");
+ }
+ return R.ok(result);
+ }
+
+ /**
+ * 小程序-问卷调查详情
+ * @param userId 用户id
+ * @param questId 问卷id
+ * @return 问卷调查详情
+ */
+ @Override
+ public R getQuesDetail(Long questId,Long userId){
+ QuestnaireDetailAdminVO result = questnaireDAO.getQuesDetail(questId,userId);
+ if(result == null){
+ return R.fail("未查询到该记录");
+ }
+ ComActQuestnaireUserAnswerDO oldUserAnswerDO = comActQuestnaireUserAnswerMapper.selectOne(new QueryWrapper<ComActQuestnaireUserAnswerDO>().lambda()
+ .eq(ComActQuestnaireUserAnswerDO::getQuestnaireId,questId).eq(ComActQuestnaireUserAnswerDO::getUserId,userId));
+ if(oldUserAnswerDO != null){
+ result.setIsOk(1);
+ }
+
+ return R.ok(result);
+ }
+
+ @Override
+ public R statisticsSummary(StatisticsSummaryDTO summaryDTO){
+ IPage<QuestnaireStatisticsSummaryAdminVO> summaryAdminList = questnaireDAO.getStatisticsSummaryAdmin(new Page(summaryDTO.getPageNum(),summaryDTO.getPageSize()),summaryDTO);
+ summaryAdminList.getRecords().forEach(summary -> {
+ if(summary.getAllCount().equals(0)){
+ summary.setTag(BigDecimal.ZERO);
+ }else{
+ summary.setTag(BigDecimal.valueOf(summary.getCount()).divide(BigDecimal.valueOf(summary.getAllCount()),2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+ }
+ });
+ return R.ok(questnaireDAO.getStatisticsSummaryAdmin(new Page(summaryDTO.getPageNum(),summaryDTO.getPageSize()),summaryDTO));
+ }
+
+ @Override
+ public R statisticsSummaryExport(Long questId){
+ List<QuestnaireStatisticsSummaryExcelAdminVO> summaryExcelList = questnaireDAO.getStatisticsSummaryExcelAdmin(questId);
+ summaryExcelList.forEach(summary -> {
+ if(summary.getAllCount().equals(0)){
+ summary.setTag(BigDecimal.ZERO);
+ }else{
+ summary.setTag(BigDecimal.valueOf(summary.getCount()).divide(BigDecimal.valueOf(summary.getAllCount()),2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+ }
+ });
+ return R.ok(summaryExcelList);
+ }
+
+ @Override
+ public R statisticsSummaryHeader(Long questId){
+ QuestnaireStatisticsSummaryHeaderAdminVO summaryHeaderAdminVO = this.questnaireDAO.statisticsSummaryHeader(questId);
+ return R.ok(summaryHeaderAdminVO);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R timedTaskQuestionnaire(){
+ Date nowDate = new Date();
+ //查询所有开始时间已经超过当前时间的待发布状态调查问卷
+ List<ComActQuestnaireDO> questnaireDOList = questnaireDAO.selectList(new QueryWrapper<ComActQuestnaireDO>().lambda()
+ .eq(ComActQuestnaireDO::getState,ComActQuestnaireDO.state.dfb).eq(ComActQuestnaireDO::getIsHide,0)
+ .ge(ComActQuestnaireDO::getStartTime,nowDate));
+ questnaireDOList.forEach(questnaire -> {
+ questnaire.setState(ComActQuestnaireDO.state.dyz);
+ questnaire.setPublishTime(nowDate);
+ questnaireDAO.updateById(questnaire);
+ });
+
+ //查询所有结束时间已经超过当前时间的调研中状态调查问卷
+ List<ComActQuestnaireDO> questnaireList = questnaireDAO.selectList(new QueryWrapper<ComActQuestnaireDO>().lambda()
+ .eq(ComActQuestnaireDO::getState,ComActQuestnaireDO.state.dyz).eq(ComActQuestnaireDO::getIsHide,0)
+ .ge(ComActQuestnaireDO::getEndTime,nowDate));
+ questnaireList.forEach(questnaire -> {
+ questnaire.setState(ComActQuestnaireDO.state.yjs);
+ questnaireDAO.updateById(questnaire);
+ });
+ return R.ok();
+ }
+
+ @Override
+ public R addQuestnaireView(Long questId){
+ ComActQuestnaireDO questnaireDO = questnaireDAO.selectById(questId);
+ if(questnaireDO != null){
+ questnaireDO.setViewNum(questnaireDO.getViewNum() + 1);
+ questnaireDAO.updateById(questnaireDO);
+ }
+ return R.ok();
+ }
+
+ @Override
+ public R addNoNotice(Long questId,Long userId){
+ questnaireDAO.addNoNotice(questId,userId);
+ return R.ok();
+ }
+
}
--
Gitblit v1.7.1