huanghongfa
2021-09-02 b4e0a04a66331d21bfbf11b1d22c40d6889347d8
bug修复
4个文件已修改
1个文件已添加
168 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityQuestnaireApi.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireAnswerContentDO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActQuestnaireAnswerContentDOMapper.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>