zouxuan преди 3 години
родител
ревизия
99e18f22d4

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupExportDto.java

@@ -18,13 +18,13 @@ public class MusicGroupExportDto extends BaseEntity {
     private String eduName;
 
     @ApiModelProperty(value = "出勤率")
-    private String attendanceRate;
+    private String attendanceRate = "0.00%";
 
     @ApiModelProperty(value = "达标率")
-    private String standardRate;
+    private String standardRate = "0.00%";
 
     @ApiModelProperty(value = "作业提交率")
-    private String homeworkCommitRate;
+    private String homeworkCommitRate = "0.00%";
 
     @ApiModelProperty(value = "成团人数")
     private int groupMemberNum;
@@ -42,7 +42,7 @@ public class MusicGroupExportDto extends BaseEntity {
     private int totalNum;
 
     @ApiModelProperty(value = "流失率")
-    private String lostRate;
+    private String lostRate = "0.00%";
 
     public String getLostRate() {
         return lostRate;

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

@@ -1095,16 +1095,17 @@
         <result property="lostRate" column="lost_rate_"/>
     </resultMap>
     <select id="exportMusicGroupCourseList" resultMap="MusicGroupExportDto">
-        SELECT o.name_ organ_name_,css.music_group_id_,mg.name_ music_group_name_,su.real_name_ educational_teacher_name_,
-        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.course_student_total_num_ * 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.user_id_ ELSE NULL END) add_stu_num_,
+        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' THEN mgq.apply_user_id_ ELSE NULL END) quit_stu_num_,
-        COUNT(CASE WHEN sr.music_group_status_ = 'NORMAL' THEN 1 ELSE NULL END) normal_num_,
-        COUNT(CASE WHEN sr.music_group_status_ != 'APPLY' THEN 1 ELSE NULL END) total_num_,
+        COUNT(DISTINCT CASE WHEN sr.music_group_status_ = 'NORMAL' THEN sr.id_ ELSE NULL END) normal_num_,
+        COUNT(DISTINCT CASE WHEN sr.music_group_status_ != 'APPLY' THEN sr.id_ ELSE NULL END) total_num_,
         CONCAT(TRUNCATE(COUNT(DISTINCT CASE WHEN mgq.status_ = 'APPROVED' THEN mgq.apply_user_id_ ELSE NULL END) /
-               COUNT(CASE WHEN sr.music_group_status_ != 'APPLY' THEN 1 ELSE NULL END) * 100,2),'%') lost_rate_
+        COUNT(DISTINCT CASE WHEN sr.music_group_status_ != 'APPLY' THEN sr.id_ ELSE NULL END) * 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'
         <if test="queryInfo.startTime != null and queryInfo.startTime != ''">