springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityQuestnaireApi.java
@@ -8,6 +8,7 @@ import javax.annotation.Resource; import com.panzhihua.common.utlis.DateUtils; import org.springframework.web.bind.annotation.*; import com.alibaba.excel.EasyExcel; @@ -188,69 +189,45 @@ List<ComActQuestnaireAnswerContentVO> answerContentVOList = questnaireAnswersDTOS.getAnswers(); if (answerContentVOList != null && answerContentVOList.size() > 0) { Map<LoginUserInfoVO, LinkedHashMap<Long, List<ComActQuestnaireAnswerContentVO>>> answersMap = new HashMap<>(); List<Object> userData = new ArrayList<>(); 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 reserveRecordId = null; StringBuffer sb = new StringBuffer(); Boolean isDX = false; for (ComActQuestnaireAnswerContentVO userAnswers:usersAnswers) { if(reserveRecordId == null){ reserveRecordId = userAnswers.getReserveRecordId(); userData.add(userAnswers.getNickName()); userData.add(DateUtils.format(userAnswers.getTime(),DateUtils.ymdhms_format)); } if(!reserveRecordId.equals(userAnswers.getReserveRecordId())){ if(isDX){ String answer = sb.toString(); userData.add(answer.substring(0,answer.length()-1)); sb = new StringBuffer(); isDX = false; } /** * 按题分类题目答案 */ Long subId = userAnswers.getSubId(); List<ComActQuestnaireAnswerContentVO> answerContentVOList1 = theUserList.get(subId); if (answerContentVOList1 == null) { answerContentVOList1 = new ArrayList<>(); theUserList.put(subId, answerContentVOList1); } answerContentVOList1.add(userAnswers); datalist.add(userData); userData = new ArrayList<>(); reserveRecordId = userAnswers.getReserveRecordId(); userData.add(userAnswers.getNickName()); userData.add(DateUtils.format(userAnswers.getTime(),DateUtils.ymdhms_format)); } }); /** * 构造导出数据 */ answersMap.forEach((user, answers) -> { List<Object> userData = new ArrayList<>(); userData.add(user.getName()); // 获取提交时间 Set<Long> keySet = answers.keySet(); String dateStr = ""; if (keySet != null && keySet.size() > 0) { try { ComActQuestnaireAnswerContentVO firstvo = answers.get(keySet.toArray()[0]).get(0); if (firstvo != null) { Date time = firstvo.getCreateAt(); if (time != null) { String sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time); dateStr = sd; } } } catch (Exception e) { dateStr = ""; } //判断是否是多选框 if(userAnswers.getOptionType().equals(1)){ isDX = true; sb.append(userAnswers.getAnswerContent() + ","); continue; } userData.add(dateStr); answers.forEach((id, answer) -> { StringBuilder usersAnswerContent = new StringBuilder(); answer.forEach(ans -> { String context = (ans.getChoice() != null ? (ans.getChoice() + ".") : "") + ans.getAnswerContent(); usersAnswerContent.append(context + "\n"); }); userData.add(usersAnswerContent.toString()); }); datalist.add(userData); }); userData.add(userAnswers.getAnswerContent()); } if(isDX){ String answer = sb.toString(); userData.add(answer.substring(0,answer.length()-1)); } datalist.add(userData); } WriteCellStyle headWriteCellStyle = new WriteCellStyle(); springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java
@@ -41,11 +41,11 @@ * @param questId * 问卷ID */ @Select("<script> " + "SELECT ac.* \n" + "FROM com_act_questnaire_answer_content ac left JOIN com_act_questnaire_sub qs ON ac.sub_id = qs.id \n" + " LEFT JOIN com_act_questnaire qn ON qs.que_Id = qn.id \n" + "WHERE qn.id=#{questId}\n" + "ORDER BY ac.user_id, qs.id " + "</script>") List<ComActQuestnaireAnswerContentDO> selectListByQuestnaire(@Param("questId") Long questId); // @Select("<script> " + "SELECT ac.* \n" // + "FROM com_act_questnaire_answer_content ac left JOIN com_act_questnaire_sub qs ON ac.sub_id = qs.id \n" // + " LEFT JOIN com_act_questnaire qn ON qs.que_Id = qn.id \n" + "WHERE qn.id=#{questId}\n" // + "ORDER BY ac.user_id, qs.id " + "</script>") List<ComActQuestnaireAnswerContentVO> selectListByQuestnaire(@Param("questId") Long questId); /** * 查询问卷用户回答数据 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireAnswerContentDO.java
@@ -43,4 +43,8 @@ * 题目选项id */ private Long selectionId; /** * 答题记录id */ private Long answerId; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
@@ -488,15 +488,9 @@ /** * 查询用户回答 */ List<ComActQuestnaireAnswerContentDO> questnaireAnswerContentDOList = List<ComActQuestnaireAnswerContentVO> 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); questnaireAnswersDTO.setAnswers(questnaireAnswerContentDOList); return R.ok(questnaireAnswersDTO); } @@ -587,7 +581,6 @@ Long queSubId = questnaireSubDO.getId(); // 根据上传的类型查询不同的题目选项 if (questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan)) { // 单选题处理 ComActQuestnaireSubSelectionDO subSelectionDO = questnaireSubSelectionDAO.selectOne(new QueryWrapper<ComActQuestnaireSubSelectionDO>().lambda() @@ -651,8 +644,6 @@ } // 新增用户填写的答卷 if (!answerContentList.isEmpty()) { answerContentService.saveBatch(answerContentList); // 更新回答用户数量 Integer joinCount = questnaireDO.getJoinCount(); questnaireDO.setJoinCount(joinCount != null ? joinCount + 1 : 1); @@ -666,6 +657,11 @@ userAnswerDO.setJsonObject(answerQuestnaireVO.getJsonObject()); comActQuestnaireUserAnswerMapper.insert(userAnswerDO); answerContentList.forEach(answerContent -> { answerContent.setAnswerId(userAnswerDO.getId()); }); answerContentService.saveBatch(answerContentList); } return R.ok(); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActQuestnaireAnswerContentDOMapper.xml
New file @@ -0,0 +1,43 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActQuestnaireAnswerContentDAO"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActQuestnaireAnswerContentDO"> <id column="id" property="id" /> <result column="create_by" property="createBy" /> <result column="create_at" property="createAt" /> <result column="update_by" property="updateBy" /> <result column="update_at" property="updateAt" /> <result column="choice" property="choice" /> <result column="answer_content" property="answerContent" /> <result column="sub_id" property="subId" /> <result column="user_id" property="userId" /> <result column="type" property="type" /> <result column="selection_id" property="selectionId" /> <result column="answer_id" property="answerId" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, create_by, create_at, update_by, update_at, choice, answer_content, sub_id, user_id, type, selection_id, answer_id </sql> <select id="selectListByQuestnaire" resultType="com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO"> SELECT qs.type AS optionType, ac.answer_id as reserveRecordId, ac.answer_content, su.nick_name, carr.create_at AS `time` FROM com_act_questnaire_answer_content ac LEFT JOIN com_act_questnaire_sub qs ON ac.sub_id = qs.id LEFT JOIN com_act_questnaire qn ON qs.que_Id = qn.id LEFT JOIN sys_user su ON ac.user_id = su.user_id LEFT JOIN com_act_questnaire_user_answer carr ON carr.id = ac.answer_id WHERE qn.id = #{questId} </select> </mapper>