Quellcode durchsuchen

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into saas

yonge vor 3 Jahren
Ursprung
Commit
dc854b1cbf

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

@@ -30,20 +30,20 @@ public class CourseScheduleStatisticsServiceImpl extends BaseServiceImpl<Long, C
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void courseScheduleStatistics() {
-//		List<Long> delCourseId = new ArrayList<>();
-//		List<CourseScheduleStatistics> updateCourseScheduleStatisticsList = courseScheduleStatisticsDao.queryUpdateCourseScheduleStatistics();
-//		if(CollectionUtils.isNotEmpty(updateCourseScheduleStatisticsList)){
-//			courseScheduleStatisticsDao.batchUpdate(updateCourseScheduleStatisticsList);
-//			delCourseId.addAll(updateCourseScheduleStatisticsList.stream().map(e -> e.getCourseScheduleId()).collect(Collectors.toList()));
-//		}
+		List<Long> delCourseId = new ArrayList<>();
+		List<CourseScheduleStatistics> updateCourseScheduleStatisticsList = courseScheduleStatisticsDao.queryUpdateCourseScheduleStatistics();
+		if(CollectionUtils.isNotEmpty(updateCourseScheduleStatisticsList)){
+			courseScheduleStatisticsDao.batchUpdate(updateCourseScheduleStatisticsList);
+			delCourseId.addAll(updateCourseScheduleStatisticsList.stream().map(e -> e.getCourseScheduleId()).collect(Collectors.toList()));
+		}
 //		List<CourseScheduleStatistics> insertCourseScheduleStatisticsList = courseScheduleStatisticsDao.queryInsertCourseScheduleStatistics();
 //		if(CollectionUtils.isNotEmpty(insertCourseScheduleStatisticsList)){
 //			courseScheduleStatisticsDao.batchInsert(insertCourseScheduleStatisticsList);
 //			delCourseId.addAll(insertCourseScheduleStatisticsList.stream().map(e -> e.getCourseScheduleId()).collect(Collectors.toList()));
 //		}
-//		delCourseId.removeAll(Collections.singleton(null));
-//		if(CollectionUtils.isNotEmpty(delCourseId)){
-//			courseScheduleStatisticsDao.delWaitByCourseId(delCourseId);
-//		}
+		delCourseId.removeAll(Collections.singleton(null));
+		if(CollectionUtils.isNotEmpty(delCourseId)){
+			courseScheduleStatisticsDao.delWaitByCourseId(delCourseId);
+		}
 	}
 }

+ 28 - 16
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -1096,32 +1096,44 @@
     </resultMap>
     <select id="exportMusicGroupCourseList" resultMap="MusicGroupExportDto">
         SELECT o.name_ organ_name_,mg.id_ music_group_id_,mg.name_ music_group_name_,su.real_name_ educational_teacher_name_,
-        CONCAT(TRUNCATE((SUM(css.attendance_num_) + SUM(css.late_num_)) / SUM(css.course_student_total_num_) * 100,2),'%') attendance_rate_,
-        CONCAT(TRUNCATE(SUM(css.standard_num_) / SUM(css.course_student_total_num_) * 100,2),'%') standard_rate_,
-        CONCAT(TRUNCATE(SUM(css.homework_commit_num_) / SUM(CASE WHEN css.homework_flag_ = 1 THEN css.course_student_total_num_ ELSE 0 END) * 100,2),'%') homework_commit_rate_,
-        mg.group_member_num_,
-        COUNT(DISTINCT CASE WHEN sr.original_flag_ = 0 AND sr.music_group_status_ = 'NORMAL' THEN sr.id_ ELSE NULL END) add_stu_num_,
-        COUNT(DISTINCT CASE WHEN mgq.status_ = 'APPROVED' AND sr1.music_group_status_ = 'QUIT' THEN mgq.apply_user_id_ ELSE NULL END) quit_stu_num_,
-        COUNT(DISTINCT CASE WHEN sr1.music_group_status_ = 'NORMAL' THEN sr1.id_ ELSE NULL END) normal_num_,
-        COUNT(DISTINCT CASE WHEN sr1.music_group_status_ != 'APPLY' THEN sr1.id_ ELSE NULL END) total_num_,
-        CONCAT(TRUNCATE(COUNT(DISTINCT CASE WHEN mgq.status_ = 'APPROVED' AND sr1.music_group_status_ = 'QUIT' THEN mgq.apply_user_id_ ELSE NULL END) /
-        COUNT(DISTINCT CASE WHEN sr1.music_group_status_ != 'APPLY' THEN sr1.id_ ELSE NULL END) * 100,2),'%') lost_rate_
+        CONCAT(TRUNCATE((css.attendance_num_ + css.late_num_) / css.course_student_total_num_ * 100,2),'%') attendance_rate_,
+        CONCAT(TRUNCATE(css.standard_num_ / css.course_student_total_num_ * 100,2),'%') standard_rate_,
+        CONCAT(TRUNCATE(css.homework_commit_num_ / css.homework_num_ * 100,2),'%') homework_commit_rate_,
+        mg.group_member_num_,sr3.add_stu_num_,sr1.quit_stu_num_,sr2.normal_num_,sr2.total_num_,
+        CONCAT(TRUNCATE(sr1.quit_stu_num_ /sr2.total_num_ * 100,2),'%') lost_rate_
         FROM music_group mg
-        LEFT JOIN course_schedule_statistics css ON mg.id_ = css.music_group_id_ AND css.course_status_ = 'OVER'
+        LEFT JOIN (SELECT music_group_id_,SUM(attendance_num_) attendance_num_,SUM(late_num_) late_num_,
+        SUM(course_student_total_num_) course_student_total_num_,SUM(standard_num_) standard_num_,SUM(homework_commit_num_) homework_commit_num_,
+        SUM(CASE WHEN homework_flag_ = 1 THEN course_student_total_num_ ELSE 0 END) homework_num_
+        FROM course_schedule_statistics
+        WHERE course_status_ = 'OVER'
         <if test="queryInfo.startTime != null and queryInfo.startTime != ''">
             AND css.class_date_ BETWEEN #{queryInfo.startTime} AND #{queryInfo.endTime}
         </if>
+        GROUP BY music_group_id_) css ON css.music_group_id_ = mg.id_
         LEFT JOIN organization o ON o.id_ = mg.organ_id_
         LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
-        LEFT JOIN student_registration sr1 ON sr1.music_group_id_ = mg.id_
-        LEFT JOIN student_registration sr ON sr.music_group_id_ = mg.id_
+        LEFT JOIN (SELECT sr.music_group_id_,COUNT(DISTINCT mgq.apply_user_id_) quit_stu_num_
+        FROM student_registration sr
+        LEFT JOIN music_group_quit mgq ON mgq.music_group_id_ = sr.music_group_id_
+        WHERE sr.music_group_status_ = 'QUIT' AND mgq.status_ = 'APPROVED'
         <if test="queryInfo.startTime != null and queryInfo.startTime != ''">
-            AND DATE_FORMAT(sr.create_time_,"%Y-%m-%d") BETWEEN #{queryInfo.startTime} AND #{queryInfo.endTime}
+            AND DATE_FORMAT(mgq.create_time_,"%Y-%m-%d") BETWEEN #{queryInfo.startTime} AND #{queryInfo.endTime}
         </if>
-        LEFT JOIN music_group_quit mgq ON mgq.music_group_id_ = mg.id_
+        GROUP BY sr.music_group_id_) sr1 ON sr1.music_group_id_ = mg.id_
+        LEFT JOIN (SELECT sr.music_group_id_,
+        COUNT(DISTINCT CASE WHEN sr.music_group_status_ = 'NORMAL' THEN sr.id_ ELSE NULL END) normal_num_,
+        COUNT(DISTINCT sr.id_) total_num_
+        FROM student_registration sr
+        WHERE sr.music_group_status_ != 'APPLY'
+        GROUP BY sr.music_group_id_)sr2 ON sr2.music_group_id_ = mg.id_
+        LEFT JOIN (SELECT music_group_id_,COUNT(DISTINCT CASE WHEN original_flag_ = 0 THEN id_ ELSE NULL END) add_stu_num_
+        FROM student_registration
+        WHERE music_group_status_ = 'NORMAL'
         <if test="queryInfo.startTime != null and queryInfo.startTime != ''">
-            AND DATE_FORMAT(mgq.create_time_,"%Y-%m-%d") BETWEEN #{queryInfo.startTime} AND #{queryInfo.endTime}
+            AND DATE_FORMAT(create_time_,"%Y-%m-%d") BETWEEN #{queryInfo.startTime} AND #{queryInfo.endTime}
         </if>
+        GROUP BY music_group_id_) sr3 ON sr3.music_group_id_ = mg.id_
         <where>
             mg.status_ = 'PROGRESS'
             <if test="queryInfo.organId != null and queryInfo.organId != ''">