Explorar o código

管乐迷需求一大堆

zouxuan %!s(int64=2) %!d(string=hai) anos
pai
achega
2f39194ccb

+ 10 - 7
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -2142,18 +2142,21 @@
 		GROUP BY spo.user_id_,spo.create_time_,spo.organ_id_;
 	</select>
     <select id="getCurrentCourseError" resultType="java.lang.Integer">
-		select COUNT(ss.user_id_) from student_statistics ss
-		left join (select cssp.user_id_ from course_schedule cs
-		left join course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
-		where DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.type_ = 'VIP' AND cssp.group_type_ = 'VIP' and cssp.user_id_ IS NOT NULL
+		select COUNT(DISTINCT ss.user_id_) from student_statistics ss
+		left join (select su.id_ from sys_user su
+		left join course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
+		left join course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+		AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.type_ = 'VIP' AND cssp.group_type_ = 'VIP' and cssp.user_id_ IS NOT NULL
+		where
 		<if test="organIdList != null and organIdList.size > 0">
-			AND cs.organ_id_ IN
+			su.organ_id_ IN
 			<foreach collection="organIdList" open="(" close=")" item="item" separator=",">
 				#{item}
 			</foreach>
 		</if>
-		group by cssp.user_id_ having COUNT(distinct cssp.course_schedule_id_) &lt; 4) cs ON cs.user_id_ = ss.user_id_
-		where ss.no_schedule_num_ + ss.sub_course_num_ > 4 and ss.group_type_ = 'VIP' AND cs.user_id_ = ss.user_id_;
+		group by su.id_ having COUNT(distinct cs.id_) &lt; 4 OR COUNT(distinct cs.id_) IS NULL) cs ON cs.id_ = ss.user_id_
+		where (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
+		AND cs.id_ = ss.user_id_ and ss.group_type_ = 'VIP'
 	</select>
 	<select id="getWaitRenewInfo" resultType="java.lang.Integer">
 		select COUNT(ss.user_id_) from student_statistics ss

+ 9 - 8
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -1207,23 +1207,24 @@
     </resultMap>
     <select id="cloudTeacherSum" resultMap="CloudTeacherSumDto">
         select o.name_ organ_name_,COUNT(distinct s.user_id_) normal_num_,COUNT(distinct smcr.user_id_) train_student_num_,
-        COUNT(CASE WHEN smcr.train_time_ &lt; 60 THEN 1 END) 'train1',
-        COUNT(CASE WHEN smcr.train_time_ >= 60 AND smcr.train_time_ &lt; 120 THEN 1 END) 'train2',
-        COUNT(CASE WHEN smcr.train_time_ >= 120 AND smcr.train_time_ &lt; 240 THEN 1 END) 'train3',
-        COUNT(CASE WHEN smcr.train_time_ >= 240 THEN 1 END) 'train4',
-        SUM(smcr.train_time_) train_total_time_,COUNT(CASE WHEN smcr.train_time_ > 60 THEN 1 END) 'train0'
+        COUNT(distinct CASE WHEN smcr.train_time_ &lt; 60 THEN smcr.user_id_ END) 'train1',
+        COUNT(distinct CASE WHEN smcr.train_time_ >= 60 AND smcr.train_time_ &lt; 120 THEN smcr.user_id_ END) 'train2',
+        COUNT(distinct CASE WHEN smcr.train_time_ >= 120 AND smcr.train_time_ &lt; 240 THEN smcr.user_id_ END) 'train3',
+        COUNT(distinct CASE WHEN smcr.train_time_ >= 240 THEN smcr.user_id_ END) 'train4',
+        SUM(smcr.train_time_) train_total_time_,COUNT(distinct CASE WHEN smcr.train_time_ > 60 THEN smcr.user_id_ END) 'train0'
         from music_group mg
         left join student_registration sr ON mg.id_ = sr.music_group_id_
         left join student s ON sr.user_id_ = s.user_id_
         left join (select smcr.user_id_,ROUND(SUM(smcr.play_time_)/60/#{queryInfo.weekBetween}) train_time_ from sys_music_compare_record smcr
         where smcr.create_time_ between #{queryInfo.startDate} AND #{queryInfo.endDate}
         group by smcr.user_id_) smcr ON s.user_id_ = smcr.user_id_
-        left join organization o ON o.id_ = mg.organ_id_
+        left JOIN sys_user su ON su.id_ = sr.user_id_
+        left join organization o ON o.id_ = su.organ_id_
         where mg.status_ = 'PROGRESS' AND sr.music_group_status_ = 'NORMAL' AND s.membership_end_time_ >= NOW()
         <if test="queryInfo.organId != null and queryInfo.organId != ''">
-            AND FIND_IN_SET(mg.organ_id_,#{queryInfo.organId})
+            AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
         </if>
-        group by mg.organ_id_
+        group by su.organ_id_
     </select>
     <select id="getAgainBuyNum" resultType="java.util.Map">
         select mg.organ_id_ 'key',COUNT(DISTINCT sr.user_id_) 'value' from student_registration sr

+ 14 - 7
mec-biz/src/main/resources/config/mybatis/StudentStatisticsMapper.xml

@@ -561,7 +561,8 @@
 		group by cssp.user_id_) cs ON cs.user_id_ = ss.user_id_
 		left join sys_user su ON su.id_ = ss.user_id_
 		left join organization o ON o.id_ = su.organ_id_
-		where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
+		where ss.group_type_ = 'VIP'
+		AND (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
 		<if test="queryInfo.organId != null and queryInfo.organId != ''">
 			AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
 		</if>
@@ -581,7 +582,8 @@
 		group by cssp.user_id_) cs ON cs.user_id_ = ss.user_id_
 		left join sys_user su ON su.id_ = ss.user_id_
 		left join organization o ON o.id_ = su.organ_id_
-		where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
+		where ss.group_type_ = 'VIP'
+		AND (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
 		<if test="queryInfo.organId != null and queryInfo.organId != ''">
 			AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
 		</if>
@@ -607,7 +609,8 @@
 		group by cssp.user_id_) cs ON cs.user_id_ = ss.user_id_
 		left join sys_user su ON su.id_ = ss.user_id_
 		left join organization o ON o.id_ = su.organ_id_
-		where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
+		where ss.group_type_ = 'VIP'
+		AND (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
 		<if test="queryInfo.organId != null and queryInfo.organId != ''">
 			AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
 		</if>
@@ -633,7 +636,8 @@
 		group by cssp.user_id_) cs ON cs.user_id_ = ss.user_id_
 		left join sys_user su ON su.id_ = ss.user_id_
 		left join organization o ON o.id_ = su.organ_id_
-		where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
+		where ss.group_type_ = 'VIP'
+		AND (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
 		<if test="organId != null and organId != ''">
 			AND FIND_IN_SET(su.organ_id_,#{organId})
 		</if>
@@ -647,7 +651,8 @@
 		select COUNT(DISTINCT ss.user_id_)
 		from student_statistics ss
 		left join sys_user su ON su.id_ = ss.user_id_
-		where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
+		where ss.group_type_ = 'VIP'
+		AND (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
 		<if test="organId != null and organId != ''">
 			AND FIND_IN_SET(su.organ_id_,#{organId})
 		</if>
@@ -669,7 +674,8 @@
 		group by cssp.user_id_) cs ON ss.user_id_ = cs.user_id_
 		left join sys_user su ON su.id_ = ss.user_id_
 		left join organization o ON o.id_ = su.organ_id_
-		where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
+		where ss.group_type_ = 'VIP'
+		AND (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
 		<if test="organId != null and organId != ''">
 			AND FIND_IN_SET(su.organ_id_,#{organId})
 		</if>
@@ -683,7 +689,8 @@
 		select COUNT(DISTINCT ss.user_id_)
 		from student_statistics ss
 		left join sys_user su ON su.id_ = ss.user_id_
-		where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
+		where ss.group_type_ = 'VIP'
+		AND (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
 		<if test="organId != null and organId != ''">
 			AND FIND_IN_SET(su.organ_id_,#{organId})
 		</if>