Browse Source

儿童节活动后台统计

zouxuan 4 years ago
parent
commit
a773098aa6

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayReserveDao.java

@@ -24,7 +24,7 @@ public interface ChildrenDayReserveDao extends BaseDAO<Integer, ChildrenDayReser
      * @param params
      * @return
      */
-    Integer countChildrenStatistics(Map<String, Object> params);
+    int countChildrenStatistics(Map<String, Object> params);
 
     /**
      * 根据用户id获取用户预约信息

+ 14 - 10
mec-biz/src/main/resources/config/mybatis/ChildrenDayReserveMapper.xml

@@ -87,14 +87,12 @@
         <result property="reserveNum" column="reserve_num_"/>
     </resultMap>
     <select id="queryChildrenStatistics" resultMap="ChildrenStatisticsDtoMap">
-        SELECT o.name_ organ_name_,co.name_ cooperation_organ_name_,mg.name_ music_group_name_,COUNT(sr.user_id_)
-        normal_num_,
-        COUNT(CASE WHEN cdr.is_reserve_ = 1 THEN 1 ELSE NULL END) 'reserve_num_',
-        COUNT(CASE WHEN cdr.is_reserve_ = 0 THEN 1 ELSE NULL END) 'no_reserve_num_'
+        SELECT o.name_ organ_name_,co.name_ cooperation_organ_name_,mg.name_ music_group_name_,COUNT(sr.user_id_) normal_num_,
+        COUNT(DISTINCT CASE WHEN cdr.is_reserve_ = 1 THEN 1 ELSE NULL END) 'reserve_num_',
+        COUNT(DISTINCT CASE WHEN cdr.is_reserve_ = 0 THEN 1 ELSE NULL END) 'no_reserve_num_'
         FROM children_day_reserve cdr
         LEFT JOIN music_group mg ON mg.id_ = cdr.music_group_id_
-        LEFT JOIN student_registration sr ON sr.music_group_id_ = cdr.music_group_id_ AND sr.music_group_status_ =
-        'NORMAL'
+        LEFT JOIN student_registration sr ON sr.music_group_id_ = cdr.music_group_id_ AND sr.music_group_status_ = 'NORMAL' AND cdr.user_id_ = sr.user_id_
         LEFT JOIN cooperation_organ co ON co.id_ = cdr.cooperation_organ_id_
         LEFT JOIN organization o ON o.id_ = cdr.organ_id_
         <include refid="queryChildrenStatisticsSql"/>
@@ -102,11 +100,11 @@
         ORDER BY cdr.id_ DESC
         <include refid="global.limit"/>
     </select>
-    <select id="countChildrenStatistics" resultType="java.lang.Integer">
-        SELECT COUNT(cdr.id_)
+    <select id="countChildrenStatistics" resultType="int">
+        SELECT COUNT(c.id_) FROM (SELECT COUNT(cdr.id_) id_
         FROM children_day_reserve cdr
         <include refid="queryChildrenStatisticsSql"/>
-        GROUP BY cdr.music_group_id_
+        GROUP BY cdr.music_group_id_) c
     </select>
     <sql id="queryChildrenStatisticsSql">
         <where>
@@ -134,7 +132,7 @@
         <result property="isReserve" column="is_reserve_"/>
         <result property="phone" column="phone_"/>
     </resultMap>
-    <select id="countChildrenStatisticsDetail" resultType="java.lang.Integer">
+    <select id="countChildrenStatisticsDetail" resultType="int">
         SELECT COUNT(cdr.id_) FROM children_day_reserve cdr
         LEFT JOIN sys_user su ON su.id_ = cdr.user_id_
         <include refid="queryChildrenStatisticsDetailSql"/>
@@ -155,6 +153,12 @@
             <if test="isReserve != null">
                 AND cdr.is_reserve_ = #{isReserve}
             </if>
+            <if test="musicGroupId != null and musicGroupId != ''">
+                AND cdr.music_group_id_ = #{musicGroupId}
+            </if>
+            <if test="musicGroupId == null">
+                AND cdr.music_group_id_ IS NULL
+            </if>
         </where>
     </sql>
 </mapper>