package com.panzhihua.service_community.service.impl;
|
|
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.model.dtos.community.PageQuestnaireDTO;
|
import com.panzhihua.common.model.vos.R;
|
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.AddQuestnaireVO;
|
import com.panzhihua.common.model.vos.community.questnaire.UsersAnswerVO;
|
import com.panzhihua.common.model.vos.community.questnaire.UsersSubAnswerVO;
|
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 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(AddQuestnaireVO addQuestnaireVO, Long communityId, Long userId) {
|
ComActQuestnaireDO comActQuestnaireDO = new ComActQuestnaireDO();
|
comActQuestnaireDO.setTitle(addQuestnaireVO.getQueTitle());
|
comActQuestnaireDO.setQueDescribe(addQuestnaireVO.getQueDescribe());
|
comActQuestnaireDO.setState(QuestnaireState.CONTINUED.getCode());
|
comActQuestnaireDO.setJoinCount(0);
|
comActQuestnaireDO.setCommunityId(communityId);
|
comActQuestnaireDO.setCreatBy(userId);
|
int questnaireId = questnaireDAO.insert(comActQuestnaireDO);
|
addQuestnaireVO.getQuestnaiteSubVOS().forEach(sub -> {
|
ComActQuestnaireSubDO comActQuestnaireSubDO = new ComActQuestnaireSubDO();
|
comActQuestnaireSubDO.setType(sub.getType());
|
comActQuestnaireSubDO.setContent(sub.getContent());
|
comActQuestnaireSubDO.setSort(sub.getSort());
|
comActQuestnaireSubDO.setQueId((long) questnaireId);
|
comActQuestnaireSubDO.setCreatBy(userId);
|
int subId = questnaireSubDAO.insert(comActQuestnaireSubDO);
|
ArrayList<ComActQuestnaireSubSelectionDO> subSelectionList = Lists.newArrayList();
|
sub.getQuestnaiteSubSelectionVOS().forEach(subSelect -> {
|
ComActQuestnaireSubSelectionDO subSelectionDO = new ComActQuestnaireSubSelectionDO();
|
subSelectionDO.setQueSubId((long) subId);
|
subSelectionDO.setSort(subSelect.getSort());
|
subSelectionDO.setContent(subSelect.getContent());
|
subSelectionDO.setCreatBy(userId);
|
subSelectionList.add(subSelectionDO);
|
});
|
subSelectionService.saveBatch(subSelectionList);
|
});
|
return R.ok();
|
}
|
|
@Override
|
public R ListQuestnaire(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() {
|
return null;
|
}
|
|
@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<UsersSubAnswerVO> usersSubAnswerVOList = new ArrayList<>();
|
|
list.forEach(comActQuestnaireSubDO ->{
|
UsersSubAnswerVO usersSubAnswerVO = new UsersSubAnswerVO();
|
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);
|
}
|
}
|