CeDo
2021-04-10 0b9c149e03e17fc12a11e6ce7225bf739bf12626
add:用户问卷接口
9个文件已修改
4个文件已添加
487 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityQuestnaireApi.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ExcelQuestnaireAnswersDTO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageQuestnaireAnswerDTO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageQuestnaireSubDetailsDTO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/QuestnaireAnswersDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireAnswerContentVO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UserSubAnswerSelectionStatVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityQuestnaireApi.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActQuestnaireService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityQuestnaireApi.java
@@ -3,13 +3,20 @@
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.dtos.community.PageComCvtBusinessAppletsDTO;
import com.panzhihua.common.model.dtos.community.PageCommunityQuestnaireDTO;
import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO;
import com.panzhihua.common.model.dtos.community.PageQuestnaireSubDetailsDTO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActQuestnaireVO;
import com.panzhihua.common.model.vos.community.ComCvtBusinessVO;
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
import com.panzhihua.common.service.community.CommunityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @description: 社区通/调查问卷接口
@@ -21,35 +28,41 @@
@RestController
@RequestMapping("/questnaire")
public class CommunityQuestnaireApi extends BaseController {
    @Resource
    private CommunityService communityService;
    @ApiOperation(value = "分页查询调查问卷", response = ComActQuestnaireVO.class)
    @PostMapping("/page")
    public R page(@RequestBody PageCommunityQuestnaireDTO pageCommunityQuestnaireDTO) {
        return null;
    public R page(@RequestBody PageQuestnaireDTO pageQuestnaireDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        return communityService.pageQuestnaire(pageQuestnaireDTO, loginUserInfo.getCommunityId());
    }
    @ApiOperation(value = "创建调查问卷")
    @PostMapping("/add")
    public R add(@RequestBody ComActQuestnaireVO comActQuestnaireVO) {
        return null;
    public R add(@RequestBody QuestnaireVO questnaireVO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        return communityService.addQuestnaire(questnaireVO, loginUserInfo.getCommunityId(), loginUserInfo.getUserId());
    }
    @ApiOperation(value = "查看问卷", response = ComActQuestnaireVO.class)
    @GetMapping("/view")
    public R viewQuestnaire(@RequestBody ComActQuestnaireVO comActQuestnaireVO) {
        return null;
    public R viewQuestnaire(@RequestParam("questId") Long questId) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        return communityService.view(loginUserInfo.getUserId(), questId);
    }
    @ApiOperation(value = "在线统计信息", response = ComActQuestnaireVO.class)
    @GetMapping("/stat")
    public R stat(@RequestBody ComActQuestnaireVO comActQuestnaireVO) {
        return null;
    public R stat(@RequestParam("questId") Long questId) {
        return communityService.statistics(questId);
    }
    @ApiOperation(value = "在线统计详细", response = ComCvtBusinessVO.class)
    @GetMapping("/stat/details")
    public R statDetails(@RequestBody PageComCvtBusinessAppletsDTO comCvtBusinessAppletsDTO) {
        return null;
    public R statDetails(@RequestBody PageQuestnaireSubDetailsDTO pageQuestnaireSubDetailsDTO) {
        //问卷调查
        return communityService.qaQeustAnswerDetails(pageQuestnaireSubDetailsDTO);
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ExcelQuestnaireAnswersDTO.java
New file
@@ -0,0 +1,32 @@
package com.panzhihua.common.model.dtos.community;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import lombok.Data;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 用户问卷excel导出
 * @author: cedoo
 * @create: 2021-4-10 10:34:52
 **/
@Data
public class ExcelQuestnaireAnswersDTO {
    @ExcelProperty("姓名")
    private String name;
    @ExcelProperty("提交时间")
    private String submitTime;
    @ExcelProperty("题目答案")
    private List<String> answers;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageQuestnaireAnswerDTO.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.common.model.dtos.community;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("问卷列表-问卷题目答卷详细-参数")
public class PageQuestnaireAnswerDTO {
    @ApiModelProperty(value = "问卷ID")
    private String questId;
    @ApiModelProperty(value = "分页-当前页数", example = "1")
    private Long pageNum;
    @ApiModelProperty(value = "分页-每页记录数", example = "10")
    private Long pageSize;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageQuestnaireSubDetailsDTO.java
New file
@@ -0,0 +1,22 @@
package com.panzhihua.common.model.dtos.community;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @Author: llming
 * @Description:
 */
@Data
@ApiModel("问卷列表-问卷题目答卷详细-参数")
public class PageQuestnaireSubDetailsDTO {
    @ApiModelProperty(value = "问卷题目ID")
    private String subId;
    @ApiModelProperty(value = "分页-当前页数", example = "1")
    private Long pageNum;
    @ApiModelProperty(value = "分页-每页记录数", example = "10")
    private Long pageSize;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/QuestnaireAnswersDTO.java
New file
@@ -0,0 +1,23 @@
package com.panzhihua.common.model.dtos.community;
import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO;
import com.panzhihua.common.model.vos.community.ComActQuestnaireSubVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 用户问卷 所有答案 回答DTO
 * @author: cedoo
 * @create: 2021-4-10 10:34:52
 **/
@Data
public class QuestnaireAnswersDTO {
    @ApiModelProperty("题目列表")
    private List<ComActQuestnaireSubVO> subs;
    @ApiModelProperty("题目用户回答列表")
    private List<ComActQuestnaireAnswerContentVO> answers;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireAnswerContentVO.java
@@ -4,6 +4,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel("问卷回答记录内容")
public class ComActQuestnaireAnswerContentVO {
@@ -11,4 +13,12 @@
    private String choice;
    @ApiModelProperty("问卷回答内容")
    private String answerContent;
    @ApiModelProperty("问卷题目ID")
    private Long subId;
    @ApiModelProperty("用户Id")
    private Long userId;
    @ApiModelProperty("用户姓名")
    private String userName;
    @ApiModelProperty("创建时间")
    private String createAt;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UserSubAnswerSelectionStatVO.java
@@ -1,5 +1,6 @@
package com.panzhihua.common.model.vos.community.questnaire;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -8,6 +9,7 @@
@ApiModel("用户调查问卷题目-选择项统计信息")
public class UserSubAnswerSelectionStatVO {
    @ApiModelProperty(value = "调查问卷题目ID", hidden = true)
    @JsonIgnore
    private Long subId;
    @ApiModelProperty("选项")
    private String optionName;
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -1683,4 +1683,57 @@
     */
    @PostMapping("/questnaire/deletequestnaire")
    R editQuestnaireDO(@RequestParam("questId") Long questId,@RequestParam("userId") Long userId);
    /**
     * 问卷答题结果
     *
     * @param questId 问卷ID
     */
    @PostMapping("/questnaire/answerslist")
    R answerResultList(Long questId);
    /**
     * 问卷调查详细
     * @param questId 问卷ID
     * @return 用户问卷调查详细
     */
    @GetMapping("/questnaire/view")
    R view(@RequestParam("userId") Long userId, @RequestParam("questId") Long questId);
    /**
     * 用户问卷调查详细
     * @param userId 用户ID
     * @param questId 问卷ID
     * @return 用户问卷调查详细
     */
    @GetMapping("/questnaire/usersanswer")
    R answerInfoQuestnaire(@RequestParam("userId") Long userId, @RequestParam("questId") Long questId);
    /**
     * 查看用户问卷调查统计信息
     * @param questId 问卷ID
     * @return 用户问卷调查统计信息
     */
    @GetMapping("/questnaire/stat")
    R statistics(@RequestParam("questId") Long questId);
    /**
     * 问卷题目 答卷信息
     *
     * @param pageQuestnaireSubDetailsDTO 问卷ID
     */
    @GetMapping("/questnaire/qaqeustanswerdetails")
    R qaQeustAnswerDetails(PageQuestnaireSubDetailsDTO pageQuestnaireSubDetailsDTO);
    /**
     * 社区问卷分页
     * @param pageQuestnaireAnswerDTO 社区问卷分页参数
     * @return 分页数据
     */
    @GetMapping("/questnaire/pagequestnaireanswer")
    R pageQuestnaireAnswer(PageQuestnaireAnswerDTO pageQuestnaireAnswerDTO);
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityQuestnaireApi.java
@@ -6,16 +6,13 @@
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.enums.PopulIsOkEnum;
import com.panzhihua.common.enums.PopulPoliticalOutlookEnum;
import com.panzhihua.common.enums.PopulSexEnum;
import com.panzhihua.common.model.dtos.community.PageComCvtBusinessAppletsDTO;
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.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComCvtBusinessVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationExcelVo;
import com.panzhihua.common.model.vos.community.ComMngPopulationVO;
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
import com.panzhihua.common.service.community.CommunityService;
@@ -33,8 +30,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/**
 * @description: 社区通/调查问卷接口
@@ -50,11 +46,9 @@
    @Resource
    private CommunityService communityService;
    @Resource
    private UserService userService;
    @Resource
    private SFTPConfig sftpConfig;
    static {
    }
    @ApiOperation(value = "分页查询调查问卷", response = ComCvtBusinessVO.class)
    @PostMapping("/page")
@@ -76,50 +70,53 @@
        return communityService.editQuestnaireDO(editComActQuestnaireVo);
    }
    @ApiOperation(value = "删除问卷(隐藏)", response = ComCvtBusinessVO.class)
    @ApiOperation(value = "删除问卷", response = ComCvtBusinessVO.class)
    @GetMapping("/delete")
    public R delete(@RequestParam("questId") Long questId) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        return communityService.editQuestnaireDO(questId, loginUserInfo.getUserId());
    }
    @ApiOperation(value = "查看详细", response = ComCvtBusinessVO.class)
    @ApiOperation(value = "查看详细-问卷详细", response = ComCvtBusinessVO.class)
    @GetMapping("/view")
    public R viewQuestnaire(@RequestBody PageComCvtBusinessAppletsDTO comCvtBusinessAppletsDTO) {
        return null;
    public R viewQuestnaire(@RequestParam("questId") Long questId) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        return communityService.view(loginUserInfo.getUserId(), questId);
    }
    @ApiOperation(value = "查看详细-调查结果", response = ComCvtBusinessVO.class)
    @GetMapping("/stat")
    public R stat(@RequestBody PageComCvtBusinessAppletsDTO comCvtBusinessAppletsDTO) {
        return null;
    public R stat(@RequestParam("questId") Long questId) {
        return communityService.statistics(questId);
    }
    @ApiOperation(value = "查看详细-调查结果-查看详细信息", response = ComCvtBusinessVO.class)
    @GetMapping("/stat/details")
    public R statDetails(@RequestBody PageComCvtBusinessAppletsDTO comCvtBusinessAppletsDTO) {
        return null;
    public R statDetails(@RequestBody PageQuestnaireSubDetailsDTO pageQuestnaireSubDetailsDTO) {
        //问卷调查
        return communityService.qaQeustAnswerDetails(pageQuestnaireSubDetailsDTO);
    }
    @ApiOperation(value = "分页查看答卷情况", response = ComCvtBusinessVO.class)
    @ApiOperation(value = "答卷情况-分页", response = ComCvtBusinessVO.class)
    @GetMapping("/answer/page")
    public R pageAnswer(@RequestBody PageComCvtBusinessAppletsDTO comCvtBusinessAppletsDTO) {
        return null;
    public R pageAnswer(@RequestBody PageQuestnaireAnswerDTO pageQuestnaireAnswerDTO) {
        //问卷调查回答 用户分页数据
        return communityService.pageQuestnaireAnswer(pageQuestnaireAnswerDTO);
    }
    @ApiOperation(value = "查看答卷详细", response = ComCvtBusinessVO.class)
    @ApiOperation(value = "查看问卷答卷详细", response = ComCvtBusinessVO.class)
    @GetMapping("/answer/detail")
    public R answerDetail(@RequestBody PageComCvtBusinessAppletsDTO comCvtBusinessAppletsDTO) {
        return null;
    public R answerDetail(@RequestParam("questId") Long questId, @RequestParam("userId") Long userId) {
        return communityService.answerInfoQuestnaire(userId, questId);
    }
    @ApiOperation(value = "导出数据", response = ComCvtBusinessVO.class)
    @GetMapping("/export")
    public R export(@RequestParam("questId") Long questId) {
        //获取登陆用户
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        //LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        //获取登陆用户绑定社区id
        Long communityId = loginUserInfo.getCommunityId();
        //Long communityId = loginUserInfo.getCommunityId();
        //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
        String ftpUrl = "/mnt/data/web/excel/";
        String name = "问卷调查答题情况.xlsx";
@@ -130,31 +127,85 @@
            if (!existDir) {
                String property = System.getProperty("user.dir");
                String fileName = property + File.separator + name;
                // 这里 需要指定写用哪个class去写
                // 这里 需要指定写用哪个class去写
                ExcelWriter excelWriter = null;
                InputStream inputStream = null;
                try {
                    List<ComMngPopulationVO> populList = null;
                    populList = JSON.parseArray(JSON.toJSONString(communityService.getPopulationLists(questId).getData()), ComMngPopulationVO.class);
                    List<ComMngPopulationExcelVo> populationExcelVoList = new ArrayList<>();
                    if (populList != null && populList.size() > 0) {
                        for (ComMngPopulationVO popul : populList) {
                            ComMngPopulationExcelVo populationExcelVo = new ComMngPopulationExcelVo();
                            BeanUtils.copyProperties(popul, populationExcelVo);
                            //设置性别
                            populationExcelVo.setSex(PopulSexEnum.getCnDescByName(popul.getSex()));
                            //设置政治面貌
                            populationExcelVo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(popul.getPoliticalOutlook()));
                            //设置是否租住
                            populationExcelVo.setIsRent(PopulIsOkEnum.getCnDescByName(popul.getIsRent()));
                            populationExcelVoList.add(populationExcelVo);
                        }
                    /**
                     * 组合导出数据
                     * 用户问卷答案
                     */
                    R QuestnaireAnswersDTOR = communityService.answerResultList(questId);
                    QuestnaireAnswersDTO questnaireAnswersDTOS = JSON.parseObject(JSON.toJSONString(QuestnaireAnswersDTOR.getData()), QuestnaireAnswersDTO.class);
                    List<ComActQuestnaireSubVO> subVOList = questnaireAnswersDTOS.getSubs();
                    //构造表头
                    List<List<String>> headList = new ArrayList<List<String>>();
                    String firstRowContent = "调查结果";
                    List<String> head0 = new ArrayList<>();
                    head0.add(firstRowContent);
                    head0.add("姓名");
                    headList.add(head0);
                    List<String> head1 = new ArrayList<>();
                    head1.add(firstRowContent);
                    head1.add("提交时间");
                    headList.add(head1);
                    subVOList.forEach(sub -> {
                        List<String> headn = new ArrayList<>();
                        headn.add(firstRowContent);
                        headn.add(sub.getContent());
                        headList.add(headn);
                    });
                    List<List<Object>> datalist = new ArrayList<>();
                    List<ComActQuestnaireAnswerContentVO> answerContentVOList = questnaireAnswersDTOS.getAnswers();
                    if(answerContentVOList!=null && answerContentVOList.size()>0) {
                        Map<LoginUserInfoVO, LinkedHashMap<Long, List<ComActQuestnaireAnswerContentVO>>> answersMap = new HashMap<>();
                        List<ComActQuestnaireAnswerContentVO> usersAnswers = questnaireAnswersDTOS.getAnswers();
                        usersAnswers.forEach(userAnswers -> {
                            R<LoginUserInfoVO> loginUserInfoVOR = userService.getUserInfoByUserId(userAnswers.getUserId().toString());
                            if (R.isOk(loginUserInfoVOR)) {
                                LoginUserInfoVO loginUserInfoVO = loginUserInfoVOR.getData();
                                LinkedHashMap<Long, List<ComActQuestnaireAnswerContentVO>> theUserList = answersMap.get(loginUserInfoVO);
                                if (theUserList == null) {
                                    theUserList = new LinkedHashMap<>();
                                    answersMap.put(loginUserInfoVO, theUserList);
                                }
                                /**
                                 * 按题分类题目答案
                                 */
                                Long subId = userAnswers.getSubId();
                                List<ComActQuestnaireAnswerContentVO> answerContentVOList1 = theUserList.get(subId);
                                if(answerContentVOList1==null){
                                    answerContentVOList1 = new ArrayList<>();
                                    theUserList.put(subId, answerContentVOList1);
                                }
                                answerContentVOList1.add(userAnswers);
                            }
                        });
                        /**
                         * 构造导出数据
                         */
                        answersMap.forEach((user, answers) ->{
                            List<Object> userData = new ArrayList<>();
                            userData.add(user.getName());
                            userData.add("");
                            answers.forEach((id, answer )->{
                                StringBuilder usersAnswerContent = new StringBuilder("");
                                answer.forEach(ans ->{
                                    usersAnswerContent.append(ans.getChoice()+"."+ans.getAnswerContent()+"\n");
                                });
                                userData.add(usersAnswerContent.toString());
                            });
                            datalist.add(userData);
                        });
                    }
                    excelWriter = EasyExcel.write(fileName, ComMngPopulationExcelVo.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build();
                    WriteSheet writeSheet = EasyExcel.writerSheet("问卷调查答题导出数据").build();
                    excelWriter.write(populationExcelVoList, writeSheet);
                    WriteSheet writeSheet = EasyExcel.writerSheet("问卷调查答题导出数据").head(headList).build();
                    excelWriter.write(datalist, writeSheet);
                    excelWriter.finish();
                    File file = new File(fileName);
                    inputStream = new FileInputStream(file);
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
@@ -5,26 +5,22 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.dtos.community.*;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.SystemmanagementConfigVO;
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
import com.panzhihua.common.model.vos.user.UserPhoneVO;
import com.panzhihua.common.validated.AddGroup;
import com.panzhihua.service_community.model.dos.ComActActPrizeDO;
import com.panzhihua.service_community.model.dos.ComActDynDO;
import com.panzhihua.service_community.model.dos.ComActMicroWishDO;
import com.panzhihua.service_community.model.dos.ComMngStructAreaDO;
import com.panzhihua.service_community.service.*;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -1300,13 +1296,23 @@
    }
    /**
     * 查看用户问卷调查详细
     * 查看问卷调查详细
     * @param questId 问卷ID
     * @return 用户问卷调查详细
     */
    @GetMapping("questnaire/view")
    public R view(@RequestParam("questId") Long questId) {
        return comActQuestnaireService.infoQuestnaire(questId);
    public R view(@RequestParam("userId") Long userId, @RequestParam("questId") Long questId) {
        /**
         * 根据用户身份分别返回 数据
         */
        /* 问卷参与者, 已提交问卷则返回问卷详细, 否则返回空的问卷 */
        boolean isMember = true;//默认情况下,可不做逻辑判断,直接查询返回用户答卷
        if(isMember) {
            return comActQuestnaireService.answerInfoQuestnaire(userId, questId);
        }else {
            /*非问卷参与者 返回问卷“预览” */
            return comActQuestnaireService.infoQuestnaire(questId);
        }
    }
@@ -1373,4 +1379,33 @@
        return comActQuestnaireService.statQuestnaire(questId);
    }
    /**
     * 问卷答题结果
     *
     * @param questId 问卷ID
     */
    @PostMapping("questnaire/answerslist")
    public R answerResultList(@RequestParam("questId")Long questId){
        return  comActQuestnaireService.answerResultList(questId);
    }
    /**
     * 问卷题目 答卷信息
     *
     * @param pageQuestnaireSubDetailsDTO 问卷ID
     */
    @GetMapping("questnaire/qaqeustanswerdetails")
    public R qaQeustAnswerDetails(@RequestBody PageQuestnaireSubDetailsDTO pageQuestnaireSubDetailsDTO){
        return comActQuestnaireService.qaQeustDetails(pageQuestnaireSubDetailsDTO);
    }
    /**
     * 社区问卷回答用户分页
     * @param pageQuestnaireAnswerDTO
     * @return 分页数据
     */
    @GetMapping("questnaire/pagequestnaireanswer")
    public R pageQuestnaireAnswer(@RequestBody PageQuestnaireAnswerDTO pageQuestnaireAnswerDTO){
        return comActQuestnaireService.pageQuestnaireAnswer(pageQuestnaireAnswerDTO);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java
@@ -1,6 +1,10 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.dtos.community.PageQuestnaireAnswerDTO;
import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO;
import com.panzhihua.common.model.vos.community.questnaire.UserSubAnswerSelectionStatVO;
import com.panzhihua.service_community.model.dos.ComActQuestnaireAnswerContentDO;
import com.panzhihua.service_community.model.dos.ComActQuestnaireDO;
@@ -30,4 +34,32 @@
            "ORDER BY qs.id"+
            "</script>")
    List<UserSubAnswerSelectionStatVO> selectQuestnaireStat(@Param("questId")Long questId);
    /**
     * 查询问卷用户回答数据
     * @param questId 问卷ID
     */
    @Select("<script> " +
            "SELECT ac.* \n" +
            "FROM com_act_questnaire qn LEFT JOIN com_act_questnaire_sub qs ON qn.id = qs.que_Id\n" +
            " LEFT JOIN com_act_questnaire_answer_content ac ON qs.id = ac.sub_id\n" +
            "WHERE qn.id=#{questId}\n" +
            "ORDER BY ac.user_id, qs.id "+
            "</script>")
    List<ComActQuestnaireAnswerContentDO> selectListByQuestnaire(@Param("questId")Long questId);
    /**
     * 查询问卷用户回答数据
     * @param pageQuestnaireAnswerDTO 问卷ID
     */
    @Select("<script> " +
            "SELECT  u.name as user_name, ac.user_id , ac.create_at \n" +
            "FROM com_act_questnaire qn LEFT JOIN com_act_questnaire_sub qs ON qn.id = qs.que_Id\n" +
            " LEFT JOIN com_act_questnaire_answer_content ac ON qs.id = ac.sub_id\n" +
            " LEFT JOIN sys_user u ON ac.user_id = u.user_id \n" +
            "WHERE qn.id=#{pageQuestnaireAnswerDTO.questId}\n" +
            "GROUP BY user_id\n"+
            "ORDER BY ac.create_at\n"+
            "</script>")
    IPage<ComActQuestnaireAnswerContentVO> selectAnswersByPage(Page page, @Param("pageQuestnaireAnswerDTO") PageQuestnaireAnswerDTO pageQuestnaireAnswerDTO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActQuestnaireService.java
@@ -1,6 +1,8 @@
package com.panzhihua.service_community.service;
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.vos.R;
import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
@@ -69,4 +71,18 @@
     * @param questId 问卷ID
     */
    R answerResultList(Long questId);
    /**
     * 问答题详细回答列表
     * @param pageQuestnaireSubDetailsDTO 分页查询参数
     * @return 分页查询结果
     */
    R qaQeustDetails(PageQuestnaireSubDetailsDTO pageQuestnaireSubDetailsDTO);
    /**
     * 社区问卷 回答分页信息
     * @param pageQuestnaireAnswerDTO 分页查询数据
     * @return 分页信息
     */
    R pageQuestnaireAnswer(PageQuestnaireAnswerDTO pageQuestnaireAnswerDTO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
@@ -1,6 +1,6 @@
package com.panzhihua.service_community.service.impl;
import java.util.Comparator;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -10,7 +10,10 @@
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;
@@ -22,7 +25,6 @@
import com.panzhihua.service_community.model.dos.ComActQuestnaireSubDO;
import com.panzhihua.service_community.model.dos.ComActQuestnaireSubSelectionDO;
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;
@@ -31,8 +33,6 @@
import com.panzhihua.common.model.vos.community.ComActQuestnaireVO;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: llming
@@ -283,10 +283,46 @@
    @Override
    public R answerResultList(Long questId) {
        LambdaQueryWrapper<ComActQuestnaireSubDO> subParam = new LambdaQueryWrapper<ComActQuestnaireSubDO>().eq(ComActQuestnaireSubDO::getQueId, questId);
        List<ComActQuestnaireSubDO> subDOS = questnaireSubDAO.selectList(subParam);
        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);
        new LambdaQueryWrapper<ComActQuestnaireAnswerContentDO>().eq(ComActQuestnaireAnswerContentDO::get)
        questnaireAnswerContentDAO.selectList()
        return R.ok(questnaireAnswersDTO);
    }
    @Override
    public R qaQeustDetails(PageQuestnaireSubDetailsDTO pageQuestnaireSubDetailsDTO) {
        Page userPage = new Page(pageQuestnaireSubDetailsDTO.getPageNum(), pageQuestnaireSubDetailsDTO.getPageSize());
        IPage<ComActQuestnaireAnswerContentDO> doPager =
                questnaireAnswerContentDAO.selectPage(userPage, new QueryWrapper<ComActQuestnaireAnswerContentDO>()
                        .orderBy(true, true, "create_at").lambda().eq(ComActQuestnaireAnswerContentDO::getSubId, pageQuestnaireSubDetailsDTO.getSubId()));
        return R.ok(doPager);
    }
    @Override
    public R pageQuestnaireAnswer(PageQuestnaireAnswerDTO pageQuestnaireAnswerDTO) {
        Page userPage = new Page(pageQuestnaireAnswerDTO.getPageNum(), pageQuestnaireAnswerDTO.getPageSize());
        IPage<ComActQuestnaireAnswerContentVO> doPager = questnaireAnswerContentDAO.selectAnswersByPage(userPage, pageQuestnaireAnswerDTO);
        return R.ok(doPager);
    }
}