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); } }