From 763f3d8b1b23b309aa274fba4f62d1aaec33d87e Mon Sep 17 00:00:00 2001
From: CeDo <cedoogle@gmail.com>
Date: 星期五, 09 四月 2021 16:57:29 +0800
Subject: [PATCH] add: 问卷统计信息

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsersSubAnswerStatVO.java            |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java     |   19 +++++++++
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java                         |   10 +++++
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java |   31 ++++++++++++++-
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UserSubAnswerSelectionStatVO.java    |    8 +++-
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireDO.java             |    2 
 6 files changed, 65 insertions(+), 7 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsearSubAnswerSelectionStatVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UserSubAnswerSelectionStatVO.java
similarity index 62%
rename from springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsearSubAnswerSelectionStatVO.java
rename to springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UserSubAnswerSelectionStatVO.java
index d111398..29402ee 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsearSubAnswerSelectionStatVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UserSubAnswerSelectionStatVO.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;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsersSubAnswerStatVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsersSubAnswerStatVO.java
index 6208e69..fe52069 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsersSubAnswerStatVO.java
+++ b/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;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
index b060184..57ca6f3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
@@ -1360,4 +1360,14 @@
         return comActQuestnaireService.deleteQuestnaire(questId,userId);
     }
 
+    /**
+     * 查看用户问卷调查统计信息
+     * @param questId 问卷ID
+     * @return 用户问卷调查统计信息
+     */
+    @GetMapping("questnaire/stat")
+    public R statistics(@RequestParam("questId") Long questId) {
+        return comActQuestnaireService.statQuestnaire(questId);
+    }
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java
index 2068dcd..60e82e8 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireAnswerContentDAO.java
+++ b/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);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireDO.java
index db3abbf..3e8d9d7 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireDO.java
+++ b/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;
     /**
      * 提供党员
      */
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
index d8c5219..028406b 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
@@ -23,6 +23,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;
@@ -62,7 +63,7 @@
         comActQuestnaireDO.setJoinCount(0);
         comActQuestnaireDO.setCommunityId(communityId);
         comActQuestnaireDO.setCreateBy(userId);
-        comActQuestnaireDO.setForMasses(questnaireVO.getForMasses());
+        comActQuestnaireDO.setForMesses(questnaireVO.getForMasses());
         comActQuestnaireDO.setForParty(questnaireVO.getForParty());
         comActQuestnaireDO.setForVolunteer(questnaireVO.getForVolunteer());
         int questId = questnaireDAO.insert(comActQuestnaireDO);
@@ -184,11 +185,35 @@
         BeanUtils.copyProperties(comActQuestnaireDO, comActQuestnaireVO);
         usersAnswerStatVO.setQuestnaire(comActQuestnaireVO);
 
-        UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO();
+        //问卷题目列表
+        List<ComActQuestnaireSubDO> comActQuestnaireSubDOList =
+                questnaireSubDAO.selectList(new QueryWrapper<ComActQuestnaireSubDO>().lambda().eq(ComActQuestnaireSubDO::getQueId, questId));
+        //题目统计信息
+        List<UserSubAnswerSelectionStatVO> usearSubAnswerSelectionStatVOList = questnaireAnswerContentDAO.selectQuestnaireStat(questId);
 
+        List<UsersSubAnswerStatVO> usersSubAnswerStatVOList = new ArrayList<>();
 
-        //questnaireAnswerContentDAO.selectQuestnaireStat(questId);
+        comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO->{
+            UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO();
 
+            ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
+            BeanUtils.copyProperties(comActQuestnaireSubDO, comActQuestnaireSubVO);
+            usersSubAnswerStatVO.setQuestSubVO(comActQuestnaireSubVO);
+
+            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);
     }
 

--
Gitblit v1.7.1