package com.panzhihua.service_community.service.impl;
|
|
import java.util.Comparator;
|
import java.util.Date;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.PageQuestnaireDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
|
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.service.ComActQuestnaireService;
|
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 com.panzhihua.common.model.vos.community.questnaire.UsersAnswerVO;
|
import com.panzhihua.common.model.vos.community.questnaire.UsersSubAnswerVO;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* @Author: llming
|
* @Description:
|
*/
|
@Service
|
public class ComActQuestnaireServiceImpl implements ComActQuestnaireService {
|
@Resource
|
ComActQuestnaireDAO questnaireDAO;
|
@Resource
|
ComActQuestnaireSubDAO questnaireSubDAO;
|
@Resource
|
ComActQuestnaireSubSelectionDAO questnaireSubSelectionDAO;
|
@Resource
|
ComActQuestnaireAnswerContentDAO questnaireAnswerContentDAO;
|
@Resource
|
ComActQuestnaireSubServiceImpl questnaireSubService;
|
@Resource
|
ComActQuestnaireSubSelectionServiceImpl subSelectionService;
|
|
@Override
|
public R AddQuestnaire(QuestnaireVO questnaireVO, Long communityId, Long userId) {
|
ComActQuestnaireDO comActQuestnaireDO = new ComActQuestnaireDO();
|
comActQuestnaireDO.setTitle(questnaireVO.getQueTitle());
|
comActQuestnaireDO.setQueDescribe(questnaireVO.getQueDescribe());
|
comActQuestnaireDO.setState(QuestnaireState.CONTINUED.getCode());
|
comActQuestnaireDO.setJoinCount(0);
|
comActQuestnaireDO.setCommunityId(communityId);
|
comActQuestnaireDO.setCreateBy(userId);
|
comActQuestnaireDO.setParterType(questnaireVO.getParterType());
|
int questnaireId = 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) questnaireId);
|
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.getOption());
|
subSelectionDO.setSort(subSelect.getSort());
|
subSelectionDO.setContent(subSelect.getContent());
|
subSelectionDO.setCreateBy(userId);
|
subSelectionList.add(subSelectionDO);
|
});
|
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();
|
if (pageQuestnaireDTO.getTitle() != null) {
|
lambdaQueryWrapper.like(ComActQuestnaireDO::getTitle, pageQuestnaireDTO.getTitle());
|
}
|
if (pageQuestnaireDTO.getTitle() != null) {
|
lambdaQueryWrapper.eq(ComActQuestnaireDO::getState, pageQuestnaireDTO.getState());
|
}
|
if (pageQuestnaireDTO.getParterType() != null) {
|
lambdaQueryWrapper.eq(ComActQuestnaireDO::getParterType, pageQuestnaireDTO.getParterType());
|
}
|
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);
|
}
|
|
@Override
|
public R editQuestnaire(QuestnaireVO questnaireVO, Long communityId, Long userId) {
|
ComActQuestnaireDO questnaireDO = null;
|
if (questnaireVO.getQueId() != null && questnaireVO.getQueId() != 0L) {
|
questnaireDO = questnaireDAO.selectById(questnaireVO.getQueId());
|
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为空!");
|
}
|
ComActQuestnaireSubDO subDO = questnaireSubDAO.selectById(sub.getQueSubId());
|
if (subDO == null || sub.getContent() == null) {
|
throw new ServiceException("500", "修改问卷题目数据有误!");
|
}
|
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);
|
});
|
});
|
|
}
|
return R.ok();
|
}
|
|
@Override
|
public R deleteQuestnaire() {
|
return null;
|
}
|
|
@Override
|
public R infoQuestnaire() {
|
return null;
|
}
|
|
@Override
|
public R answerInfoQuestnaire(Long userId, Long questId) {
|
|
ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectById(questId);
|
if(comActQuestnaireDO==null){
|
return R.fail("问卷不存在!");
|
}
|
|
UsersAnswerVO usersAnswerVO = new UsersAnswerVO();
|
ComActQuestnaireVO comActQuestnaireVO = new ComActQuestnaireVO();
|
BeanUtils.copyProperties(comActQuestnaireDO, comActQuestnaireVO);
|
usersAnswerVO.setQuestnaire(comActQuestnaireVO);
|
|
List<ComActQuestnaireSubDO> list = questnaireSubDAO.selectList(new QueryWrapper<ComActQuestnaireSubDO>().lambda().eq(ComActQuestnaireSubDO::getQueId, questId));
|
list.sort(Comparator.comparing(ComActQuestnaireSubDO::getSort).reversed());
|
List<UsersSubAnswerVO> usersSubAnswerVOList = new ArrayList<>();
|
|
list.forEach(comActQuestnaireSubDO ->{
|
UsersSubAnswerVO usersSubAnswerVO = new UsersSubAnswerVO();
|
//问卷调查题目
|
ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
|
BeanUtils.copyProperties(comActQuestnaireSubDO, comActQuestnaireSubVO);
|
usersSubAnswerVO.setQuestSubVO(comActQuestnaireSubVO);
|
|
//问卷调查题目-选项
|
Long subId = comActQuestnaireSubDO.getId();
|
List<ComActQuestnaireSubSelectionDO> comActQuestnaireSubSelectionDOs =
|
questnaireSubSelectionDAO.selectList(new QueryWrapper<ComActQuestnaireSubSelectionDO>().lambda().eq(ComActQuestnaireSubSelectionDO::getQueSubId, subId));
|
|
|
List<ComActQuestnaireSubSelectionVO> comActQuestnaireSubSelectionVOs = new ArrayList<>();
|
comActQuestnaireSubSelectionDOs.forEach(comActQuestnaireSubSelectionDO -> {
|
ComActQuestnaireSubSelectionVO comActQuestnaireSubSelectionVO = new ComActQuestnaireSubSelectionVO();
|
BeanUtils.copyProperties(comActQuestnaireSubSelectionDO, comActQuestnaireSubSelectionVO);
|
comActQuestnaireSubSelectionVOs.add(comActQuestnaireSubSelectionVO);
|
});
|
usersSubAnswerVO.setQuestSelectionList(comActQuestnaireSubSelectionVOs);
|
//用户回答
|
List<ComActQuestnaireAnswerContentDO> questnaireAnswerContentDOList =
|
questnaireAnswerContentDAO.selectList(new QueryWrapper<ComActQuestnaireAnswerContentDO>().lambda().eq(ComActQuestnaireAnswerContentDO::getUserId, userId)
|
.eq(ComActQuestnaireAnswerContentDO::getSubId, subId));
|
|
List<ComActQuestnaireAnswerContentVO> questnaireAnswerContentVOList = new ArrayList<>();
|
questnaireAnswerContentDOList.forEach(questnaireAnswerContentDO->{
|
ComActQuestnaireAnswerContentVO comActQuestnaireSubSelectionVO = new ComActQuestnaireAnswerContentVO();
|
BeanUtils.copyProperties(questnaireAnswerContentDO, comActQuestnaireSubSelectionVO);
|
questnaireAnswerContentVOList.add(comActQuestnaireSubSelectionVO);
|
});
|
|
usersSubAnswerVO.setUsersAnswer(questnaireAnswerContentVOList);
|
usersSubAnswerVOList.add(usersSubAnswerVO);
|
}
|
);
|
usersAnswerVO.setUsersSubAnswer(usersSubAnswerVOList);
|
|
return R.ok(usersAnswerVO);
|
}
|
}
|