Przeglądaj źródła

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

zouxuan 3 lat temu
rodzic
commit
7db5794707

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -508,5 +508,8 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     Integer countQuitNum(@Param("queryInfo") IndexDataQueryInfo queryInfo);
 
     //乐团统计数据导出
+    Integer countMusicGroupCourseList(@Param("queryInfo") ExportUserAccountQueryInfo queryInfo);
+
+    //乐团统计数据导出
     List<MusicGroupExportDto> exportMusicGroupCourseList(@Param("queryInfo") ExportUserAccountQueryInfo queryInfo);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentStandardDto.java

@@ -17,7 +17,7 @@ public class StudentStandardDto {
 
     private String subjectName;
 
-    private Integer qualifiedFlag;
+    private Integer qualifiedFlag = 1;
 
     private String classDate;
 

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ExportService.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.entity.ManagerDownload;
 import com.ym.mec.biz.dal.enums.ExportEnum;
 import com.ym.mec.biz.dal.enums.ExportTypeEnum;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.page.ExportUserAccountQueryInfo;
 import com.ym.mec.biz.dal.page.StudentStatisticsQueryInfo;
 import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -295,5 +296,5 @@ public interface ExportService {
 
     void exportMusicGroupCourseScheduleDetail(queryMusicGroupCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload) throws IOException, InvocationTargetException, NoSuchMethodException, IllegalAccessException;
 
-    void exportMusicGroupCourseList(ManagerDownload managerDownload, List<MusicGroupExportDto> exportDtoList) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException, IOException;
+    void exportMusicGroupCourseList(ManagerDownload managerDownload, ExportUserAccountQueryInfo queryInfo) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException, IOException;
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -2984,7 +2984,8 @@ public class ExportServiceImpl implements ExportService {
     }
 
     @Override
-    public void exportMusicGroupCourseList(ManagerDownload managerDownload, List<MusicGroupExportDto> rows) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException, IOException {
+    public void exportMusicGroupCourseList(ManagerDownload managerDownload, ExportUserAccountQueryInfo queryInfo) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException, IOException {
+        List<MusicGroupExportDto> rows = musicGroupDao.exportMusicGroupCourseList(queryInfo);
         HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号", "乐团名称", "乐团主管","出勤率", "达标率", "作业提交率", "成团人数", "新增人数",
                         "退团人数", "在读人数","流失率"},
                 new String[]{"organName", "musicGroupId", "musicGroupName",

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1043,7 +1043,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         result.setVipStudentNum(cloudTeacherDao.getOrgansTotalVipStudentNum(organIds));
 //        result.seteVipStudentNum(studentDao.getOrgansTotalEVipStudentNum(organIds));
         result.setCloudStudyUseStudentNum(studentDao.getOrgansTotalCloudStudyStudentNum(organIds));
-        result.setCloudStudyTodayUseStudentNum(studentDao.getOrgansTodayTotalCloudStudyStudentNum(organIds));
+        //result.setCloudStudyTodayUseStudentNum(studentDao.getOrgansTodayTotalCloudStudyStudentNum(organIds));
         
         Calendar cal = Calendar.getInstance();    
         cal.setTime(new Date());    
@@ -1057,7 +1057,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         Date startTime = cal.getTime();
         
         result.setCloudStudyLivelyStudentNum(studentDao.getOrganTotalCloudStudyLivelyStudentNum(organIds, startTime, endTime));
-        result.setNewCloudStudyStudentNum(sysMusicCompareRecordDao.getOrgansTotalNewCloudStudyNum(organIds));
+        //result.setNewCloudStudyStudentNum(sysMusicCompareRecordDao.getOrgansTotalNewCloudStudyNum(organIds));
 //        if(result.getVipStudentNum()>0&&result.getTotalStudentNum()>0){
 //            result.setVipStudentDuty(new BigDecimal(result.getVipStudentNum()).divide(new BigDecimal(result.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
 //        }

+ 39 - 17
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}
+            AND 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 != ''">
@@ -1131,4 +1143,14 @@
         GROUP BY mg.id_
         ORDER BY o.id_
     </select>
+    <select id="countMusicGroupCourseList" resultType="Integer">
+        SELECT COUNT(DISTINCT mg.id_)
+        FROM music_group mg
+        <where>
+            mg.status_ = 'PROGRESS'
+            <if test="queryInfo.organId != null and queryInfo.organId != ''">
+                AND FIND_IN_SET(mg.organ_id_,#{queryInfo.organId})
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -935,7 +935,7 @@
         LEFT JOIN sys_user su ON smcr.user_id_=su.id_
         LEFT JOIN student stu ON smcr.user_id_=stu.user_id_
         WHERE su.del_flag_=0 AND stu.user_id_ IS NOT NULL
-        AND DATE(smcr.create_time_) = CURDATE()
+        AND smcr.create_time_ > date_sub(curdate(),INTERVAL 0 day)
             AND su.organ_id_ IN
             <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
                 #{organId}

+ 3 - 3
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -189,15 +189,15 @@ public class ExportController extends BaseController {
     public HttpResponseResult exportMusicGroupCourseList(ExportUserAccountQueryInfo queryInfo) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin()));
-        List<MusicGroupExportDto> exportDtoList = musicGroupDao.exportMusicGroupCourseList(queryInfo);
-        if (CollectionUtils.isEmpty(exportDtoList)) {
+        Integer i = musicGroupDao.countMusicGroupCourseList(queryInfo);
+        if (Objects.isNull(i) || i <= 0) {
             throw new BizException("没有可导出的记录");
         }
         ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.MUSIC_GROUP_DATA_EXPORT,sysUser.getId());
         ExecutorService executor = Executors.newCachedThreadPool();
         CompletableFuture.runAsync(()->{
             try {
-                exportService.exportMusicGroupCourseList(managerDownload,exportDtoList);
+                exportService.exportMusicGroupCourseList(managerDownload,queryInfo);
             } catch (Exception e) {
                 e.printStackTrace();
             }