Ver Fonte

学员小课统计

zouxuan há 3 anos atrás
pai
commit
560307ed94

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentBasicInfoDao.java

@@ -1,14 +1,16 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.entity.StudentStatistics;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.StudentBasicInfo;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface StudentBasicInfoDao extends BaseDAO<Integer, StudentBasicInfo> {
 
 
     Integer getMaxId();
 
-    //更新声部班老师
-    void updateSubjectTeacher();
+    List<StudentStatistics> queryStatisticsSubjectTeacher();
 }

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

@@ -12,7 +12,7 @@ import java.util.Map;
 public interface StudentStatisticsDao extends BaseDAO<Integer, StudentStatistics> {
 
     //更新乐团主管、指导老师
-    void updateTeacherAndEdu();
+    void queryStatisticsTeacherAndEdu();
 
     //更新总课时数、已完成、剩余课时数、最近30天课耗
     void updateCourseNum();

+ 10 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentStatisticsServiceImpl.java

@@ -38,22 +38,23 @@ public class StudentStatisticsServiceImpl extends BaseServiceImpl<Integer, Stude
 
 	@Override
 	public void updateStudentStatistics() {
-		//更新声部班老师
-		studentBasicInfoDao.updateSubjectTeacher();
+		List<StudentStatistics> statisticsList = new ArrayList<>();
+		//获取声部班老师
+		statisticsList.addAll(studentBasicInfoDao.queryStatisticsSubjectTeacher());
 		//更新乐团主管、指导老师
-		studentStatisticsDao.updateTeacherAndEdu();
+		statisticsList.addAll(studentStatisticsDao.queryStatisticsTeacherAndEdu());
 		//更新总课时数、已完成、剩余课时数、最近30天课耗、最近1年课耗
-		studentStatisticsDao.updateCourseNum();
+		statisticsList.addAll(studentStatisticsDao.queryStatisticsCourseNum());
 		//更新未排课总数
-		studentStatisticsDao.updateNoCourseNum();
+		statisticsList.addAll(studentStatisticsDao.queryStatisticsNoCourseNum());
 		//更新未开始价值总和
-		studentStatisticsDao.updateNotStartCourseFee();
+		statisticsList.addAll(studentStatisticsDao.queryStatisticsNotStartCourseFee());
 		//更新未排课价值
-		studentStatisticsDao.updateNoCourseFee();
+		statisticsList.addAll(studentStatisticsDao.queryStatisticsNoCourseFee());
 		//更新第一次课的时间\最近一次课时间
-		studentStatisticsDao.updateFirstAndLastCourseTime();
+		statisticsList.addAll(studentStatisticsDao.queryStatisticsFirstAndLastCourseTime());
 		//更新进行中课程组数量
-		studentStatisticsDao.updateNormalGroupNum();
+		statisticsList.addAll(studentStatisticsDao.queryStatisticsNormalGroupNum());
 	}
 
 	@Override

+ 32 - 3
mec-biz/src/main/resources/config/mybatis/StudentBasicInfoMapper.xml

@@ -82,9 +82,6 @@
 			</if>
 		</set> WHERE user_id_ = #{userId}
 	</update>
-	<update id="updateSubjectTeacher">
-		SELECT updateSubjectTeacher()
-	</update>
 
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
@@ -103,4 +100,36 @@
     <select id="getMaxId" resultType="java.lang.Integer">
 		SELECT MAX(id_) FROM student_basic_info
 	</select>
+	<select id="queryStatisticsSubjectTeacher" resultMap="StudentBasicInfo">
+		SELECT cssp.user_id_,COUNT(cssp.course_schedule_id_) total_course_num_,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) sub_course_num_,
+		COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN NULL ELSE 1 END) over_course_num_,
+		COUNT(CASE WHEN cs.status_ != 'NOT_START' AND cs.class_date_ >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 30 DAY),'%Y-%m-%d') THEN 1 ELSE NULL END) lately_course_consumer_,
+		COUNT(CASE WHEN cs.status_ != 'NOT_START' AND cs.class_date_ >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 YEAR),'%Y-%m-%d') THEN 1 ELSE NULL END) lately_year_course_consumer_,'PRACTICE' group_type_
+		FROM course_schedule_student_payment cssp
+		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.group_type_ = cssp.group_type_
+		WHERE cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cssp.group_type_ = 'PRACTICE'
+		GROUP BY cssp.user_id_
+		UNION ALL
+		SELECT cssp.user_id_,COUNT(cssp.course_schedule_id_) total_course_num_,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) sub_course_num_,
+		COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN NULL ELSE 1 END) over_course_num_,
+		COUNT(CASE WHEN cs.status_ != 'NOT_START' AND cs.class_date_ >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 30 DAY),'%Y-%m-%d') THEN 1 ELSE NULL END) lately_course_consumer_,
+		COUNT(CASE WHEN cs.status_ != 'NOT_START' AND cs.class_date_ >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 YEAR),'%Y-%m-%d') THEN 1 ELSE NULL END) lately_year_course_consumer_,'THEORY' group_type_
+		FROM course_schedule_student_payment cssp
+		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.group_type_ = cssp.group_type_
+		LEFT JOIN vip_group vg ON vg.id_ = cs.music_group_id_
+		LEFT JOIN vip_group_category vgc ON vgc.id_ = vg.vip_group_category_id_
+		WHERE vgc.name_ = '乐理课' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.group_type_ = 'VIP'
+		GROUP BY cssp.user_id_
+		UNION ALL
+		SELECT cssp.user_id_,COUNT(cssp.course_schedule_id_) total_course_num_,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) sub_course_num_,
+		COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN NULL ELSE 1 END) over_course_num_,
+		COUNT(CASE WHEN cs.status_ != 'NOT_START' AND cs.class_date_ >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 30 DAY),'%Y-%m-%d') THEN 1 ELSE NULL END) lately_course_consumer_,
+		COUNT(CASE WHEN cs.status_ != 'NOT_START' AND cs.class_date_ >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 YEAR),'%Y-%m-%d') THEN 1 ELSE NULL END) lately_year_course_consumer_,'VIP' group_type_
+		FROM course_schedule_student_payment cssp
+		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.group_type_ = cssp.group_type_
+		LEFT JOIN vip_group vg ON vg.id_ = cs.music_group_id_
+		LEFT JOIN vip_group_category vgc ON vgc.id_ = vg.vip_group_category_id_
+		WHERE vgc.name_ != '乐理课' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.group_type_ = 'VIP'
+		GROUP BY cssp.user_id_
+	</select>
 </mapper>

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

@@ -125,7 +125,7 @@
 		</if>
 		</set> WHERE id_ = #{id}
 	</update>
-	<update id="updateTeacherAndEdu">
+	<update id="queryStatisticsTeacherAndEdu">
 		SELECT updateTeacherAndEdu()
 	</update>
 	<update id="updateCourseNum">