springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UserSubAnswerSelectionStatVO.java
File was renamed from springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsearSubAnswerSelectionStatVO.java @@ -6,11 +6,15 @@ @Data @ApiModel("用户调查问卷题目-选择项统计信息") public class UsearSubAnswerSelectionStatVO { public class UserSubAnswerSelectionStatVO { @ApiModelProperty(value = "调查问卷题目ID", hidden = true) private Long subId; @ApiModelProperty("选项") private String optionName; @ApiModelProperty("问卷回答内容") private String answerContent; @ApiModelProperty("小计") private String total; private Integer total; @ApiModelProperty("比例") private String proportion; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsersSubAnswerStatVO.java
@@ -17,7 +17,7 @@ private ComActQuestnaireSubVO questSubVO; @ApiModelProperty(value = "用户回答统计") private List<UsearSubAnswerSelectionStatVO> usersAnswer; private List<UserSubAnswerSelectionStatVO> usersAnswer; @ApiModelProperty(value = "本题答题人数") private Integer total; springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
@@ -1363,4 +1363,14 @@ return comActQuestnaireService.deleteQuestnaire(questId,userId); } /** * 查看用户问卷调查统计信息 * @param questId 问卷ID * @return 用户问卷调查统计信息 */ @GetMapping("questnaire/stat") public R statistics(@RequestParam("questId") Long questId) { return comActQuestnaireService.statQuestnaire(questId); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java
@@ -1,9 +1,14 @@ package com.panzhihua.service_community.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; /** * @Author: llming @@ -11,4 +16,18 @@ */ @Mapper public interface ComActQuestnaireAnswerContentDAO extends BaseMapper<ComActQuestnaireAnswerContentDO> { /** * 查询问卷统计信息 * @param questId 问卷ID */ @Select("<script> " + "SELECT qs.id AS sub_id, ac.choice as option_name, COUNT(ac.user_id) as total, ac.answer_content as answerContent, \n" + " COUNT(ac.user_id) /(SELECT COUNT(*) FROM com_act_questnaire_answer_content WHERE sub_id = qs.id) *100 AS proportion\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" + "GROUP BY qs.id, ac.choice\n" + "ORDER BY qs.id"+ "</script>") List<UserSubAnswerSelectionStatVO> selectQuestnaireStat(@Param("questId")Long questId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireDO.java
@@ -41,7 +41,7 @@ /** * 提供居民 */ private Boolean forMasses; private Boolean forMesses; /** * 提供党员 */ springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
@@ -22,6 +22,7 @@ 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; @@ -184,11 +185,35 @@ BeanUtils.copyProperties(comActQuestnaireDO, comActQuestnaireVO); usersAnswerStatVO.setQuestnaire(comActQuestnaireVO); //问卷题目列表 List<ComActQuestnaireSubDO> comActQuestnaireSubDOList = questnaireSubDAO.selectList(new QueryWrapper<ComActQuestnaireSubDO>().lambda().eq(ComActQuestnaireSubDO::getQueId, questId)); //题目统计信息 List<UserSubAnswerSelectionStatVO> usearSubAnswerSelectionStatVOList = questnaireAnswerContentDAO.selectQuestnaireStat(questId); List<UsersSubAnswerStatVO> usersSubAnswerStatVOList = new ArrayList<>(); comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO->{ UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO(); ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO(); BeanUtils.copyProperties(comActQuestnaireSubDO, comActQuestnaireSubVO); usersSubAnswerStatVO.setQuestSubVO(comActQuestnaireSubVO); //questnaireAnswerContentDAO.selectQuestnaireStat(questId); List<UserSubAnswerSelectionStatVO> userSubAnswerSelectionStatVOList = new ArrayList<>(); usersSubAnswerStatVO.setTotal(0); usearSubAnswerSelectionStatVOList.forEach(stat ->{ if(stat.getSubId()==comActQuestnaireSubDO.getId()){ userSubAnswerSelectionStatVOList.add(stat); } }); usersSubAnswerStatVO.setUsersAnswer(userSubAnswerSelectionStatVOList); Integer count = questnaireAnswerContentDAO.selectCount(new QueryWrapper<ComActQuestnaireAnswerContentDO>().select(" DISTINCT sub_id, user_id ").lambda().eq(ComActQuestnaireAnswerContentDO::getSubId,comActQuestnaireSubDO.getId())); usersSubAnswerStatVO.setTotal(count); usersSubAnswerStatVOList.add(usersSubAnswerStatVO); }); usersAnswerStatVO.setUsersSubAnswerStat(usersSubAnswerStatVOList); return R.ok(usersAnswerStatVO); }