瀏覽代碼

乐团梯队数据导出

zouxuan 1 年之前
父節點
當前提交
7854e6de49

+ 6 - 13
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -372,7 +372,9 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @author Joburgess
      * @date 2019/10/18
      */
-    List<Date> getCourseScheduleDateByMonth(@Param("musicGroupID") Long musicGroupID, @Param("month") Date month);
+    List<Date> getCourseScheduleDateByMonth(@Param("musicGroupID") Long musicGroupID,
+                                            @Param("firstDayOfMonth") String firstDayOfMonth,
+                                            @Param("lastDayOfMonth") String lastDayOfMonth);
 
     /**
      * @param studentId:
@@ -556,15 +558,6 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     String findClassTypeByCourse(@Param("courseScheduleId") Long courseScheduleId);
 
     /**
-     * 根据课程状态查询老师指定月份的VIP课程记录数
-     *
-     * @param monthDate 指定月份
-     * @param status    课程状态
-     * @return
-     */
-    List<Map<Integer, Integer>> queryVipGroupTeachereClassTimesByMonth(@Param("monthDate") Date monthDate, @Param("status") CourseStatusEnum status, @Param("tenantId") Integer tenantId);
-
-    /**
      * 查询已完成未更新状态的课程列表
      *
      * @return
@@ -991,7 +984,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param vipGroupId
      * @return
      */
-    Integer findCourseNoStartNum(Long vipGroupId);
+    Integer findCourseNoStartNum(String vipGroupId);
 
     /**
      * 已上课时数
@@ -999,7 +992,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param vipGroupId
      * @return
      */
-    Integer findCourseEndNum(Long vipGroupId);
+    Integer findCourseEndNum(String vipGroupId);
 
     /**
      * 统计vip课时数
@@ -1008,7 +1001,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param teachMode
      * @return
      */
-    Integer countCourseNum(@Param("vipGroupId") Long vipGroupId, @Param("teachMode") String teachMode);
+    Integer countCourseNum(@Param("vipGroupId") String vipGroupId, @Param("teachMode") String teachMode);
 
     /**
      * @param courseIds: 课程编号列表

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

@@ -72,7 +72,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @params [vipGroupId]
      * @describe 统计已结算课程数量
      */
-    int countIsSalaryNum(Long vipGroupId);
+    int countIsSalaryNum(String vipGroupId);
 
     /**
      * @return int
@@ -81,7 +81,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @params [vipGroupId]
      * @describe 统计被投诉课程数量
      */
-    int countComplaintsNum(Long vipGroupId);
+    int countComplaintsNum(String vipGroupId);
 
     /**
      * @return com.ym.mec.biz.dal.dto.TeachingRecordBaseInfo
@@ -90,7 +90,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @params [vipGroupId]
      * @describe 获取vip课的总课次及已上课次
      */
-    TeachingRecordBaseInfo getClassTimes(Long vipGroupId);
+    TeachingRecordBaseInfo getClassTimes(String vipGroupId);
 
     /**
      * @return java.util.List<com.ym.mec.biz.dal.dto.StudentManageVipGroupDto>

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1043,7 +1043,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         if (Objects.isNull(month) || Objects.isNull(musicGroupID)) {
             throw new BizException("请选择日期并指定乐团!");
         }
-        return courseScheduleDao.getCourseScheduleDateByMonth(musicGroupID, month);
+		String firstDayOfMonth = DateUtil.format(DateUtil.getFirstDayOfMonth(month),DateUtil.DEFAULT_PATTERN);
+		String lastDayOfMonth = DateUtil.format(DateUtil.getLastDayOfMonth(month),DateUtil.DEFAULT_PATTERN);
+		return courseScheduleDao.getCourseScheduleDateByMonth(musicGroupID, firstDayOfMonth,lastDayOfMonth);
     }
 
     @Override

+ 27 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -4187,6 +4187,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return subjectDao.getSubjectListByIdAndCoopId(musicGroupId,coopId);
     }
 
+	private static final Map<String, String> gradeMap = createGradeMap();
+
 	@Override
 	public Map<String, List<ExportMusicGroupEchelonDataDto>> queryMusicGroupEchelonData(List<Integer> organIds) {
 		List<ExportMusicGroupEchelonDataDto> coopEchelonDataDtos = musicGroupDao.queryCoopEchelonData(organIds);
@@ -4199,7 +4201,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 		List<ExportMusicGroupEchelonDataDto> musicGroupEchelonDataDtos = musicGroupDao.queryMusicGroupEchelonData(musicGroupIds);
 		//按乐团编号分组
 		Map<String, List<ExportMusicGroupEchelonDataDto>> musicGroupEchelonDataMap =
-				musicGroupEchelonDataDtos.stream().collect(Collectors.groupingBy(ExportMusicGroupEchelonDataDto::getMusicGroupId));
+				musicGroupEchelonDataDtos.stream()
+						.map(e -> {
+							String gradeName = gradeMap.getOrDefault(e.getMusicGroupName(), "一年级");
+							e.setMusicGroupName(gradeName);
+							return e;
+						})
+						.collect(Collectors.groupingBy(ExportMusicGroupEchelonDataDto::getMusicGroupId));
 		//按合作单位分组
 		Map<Integer, List<ExportMusicGroupEchelonDataDto>> coopEchelonDataMap =
 				coopEchelonDataDtos.stream().collect(Collectors.groupingBy(ExportMusicGroupEchelonDataDto::getCoopId));
@@ -4227,6 +4235,24 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 		return resultMap;
 	}
 
+	// 辅助方法:创建年级映射
+	private static Map<String, String> createGradeMap() {
+		Map<String, String> gradeMap = new HashMap<>();
+		gradeMap.put("1", "一年级");
+		gradeMap.put("2", "二年级");
+		gradeMap.put("3", "三年级");
+		gradeMap.put("4", "四年级");
+		gradeMap.put("5", "五年级");
+		gradeMap.put("6", "六年级");
+		gradeMap.put("7", "七年级");
+		gradeMap.put("8", "八年级");
+		gradeMap.put("9", "九年级");
+		gradeMap.put("10", "高一");
+		gradeMap.put("11", "高二");
+		gradeMap.put("12", "高三");
+		return gradeMap;
+	}
+
 	List<String> gradeOrder = Arrays.asList(
 			"一年级",
 			"二年级",

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

@@ -1763,7 +1763,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         if (Objects.isNull(vipGroup)) {
             throw new BizException("课程组不存在");
         }
-        Integer courseEndNum = courseScheduleDao.findCourseEndNum(vipGroupId);
+        Integer courseEndNum = courseScheduleDao.findCourseEndNum(vipGroupId.toString());
         if (courseEndNum > 0) {
             throw new BizException("此状态课程组不支持删除");
         }
@@ -2044,10 +2044,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         pageInfo.setRows(dataList);
 //		TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(queryInfo.getVipGroupId());
         TeachingRecordBaseInfo classTimes = new TeachingRecordBaseInfo();
-        classTimes.setCourseNoStartNum(courseScheduleDao.findCourseNoStartNum(vipGroupId));
-        classTimes.setCourseEndNum(courseScheduleDao.findCourseEndNum(vipGroupId));
-        classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId));
-        classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId));
+        classTimes.setCourseNoStartNum(courseScheduleDao.findCourseNoStartNum(vipGroupId.toString()));
+        classTimes.setCourseEndNum(courseScheduleDao.findCourseEndNum(vipGroupId.toString()));
+        classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId.toString()));
+        classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId.toString()));
         Map<String, Object> result = new HashMap<>();
         result.put("pageInfo", pageInfo);
         result.put("baseInfo", classTimes);
@@ -2056,9 +2056,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
     @Override
     public TeachingRecordBaseInfo findTeachingRecordBaseInfo(Long vipGroupId) {
-        TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(vipGroupId);
-        classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId));
-        classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId));
+        TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(vipGroupId.toString());
+        classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId.toString()));
+        classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId.toString()));
         return classTimes;
     }
 
@@ -2173,8 +2173,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
         vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()), ","));
         ClassGroupTeacherSalary byVipGoupAndTeacher = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupId.intValue(), vipGroupBaseInfo.getUserId());
-        Integer onlineNum = courseScheduleDao.countCourseNum(vipGroupId, "ONLINE");
-        Integer offlineNum = courseScheduleDao.countCourseNum(vipGroupId, "OFFLINE");
+        Integer onlineNum = courseScheduleDao.countCourseNum(vipGroupId.toString(), "ONLINE");
+        Integer offlineNum = courseScheduleDao.countCourseNum(vipGroupId.toString(), "OFFLINE");
         vipGroupBaseInfo.setOnlineClassesNum(onlineNum);
         vipGroupBaseInfo.setOfflineClassesNum(offlineNum);
         if (Objects.nonNull(byVipGoupAndTeacher)) {

+ 3 - 17
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -877,9 +877,9 @@
         SELECT cs.class_date_
         FROM course_schedule cs
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
-        WHERE DATE_FORMAT(cs.class_date_, '%Y%m') = DATE_FORMAT(#{month}, '%Y%m')
+        WHERE cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth}
           AND cg.music_group_id_ = #{musicGroupID}
-          AND cg.group_type_ = 'MUSIC' AND cs.pre_course_flag_ != 1
+          AND cg.group_type_ = 'MUSIC' AND cs.pre_course_flag_ = 0
         GROUP BY cs.class_date_
     </select>
 
@@ -1333,20 +1333,6 @@
         WHERE cs.id_ = #{courseScheduleId}
     </select>
 
-    <select id="queryVipGroupTeachereClassTimesByMonth" resultType="map" parameterType="map">
-        SELECT vp.organ_id_          organ_id_,
-               cs.actual_teacher_id_ teacher_id_,
-               COUNT(cs.id_)         times,
-               t.is_support_course_schedule_rewards_rules_
-        FROM course_schedule cs
-                 LEFT JOIN vip_group vp ON cs.music_group_id_ = vp.id_
-                 LEFT JOIN teacher t ON cs.actual_teacher_id_ = t.id_
-        WHERE cs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-          AND date_format(#{monthDate}, '%Y%m') = date_format(cs.class_date_, '%Y%m')
-          and cs.tenant_id_ = #{tenantId}
-        GROUP BY vp.organ_id_, cs.actual_teacher_id_
-    </select>
-
     <select id="queryFinishedWithNoUpdateStatus" resultMap="CourseSchedule">
         select *
         from course_schedule
@@ -2284,7 +2270,7 @@
         WHERE cs.music_group_id_ = #{vipGroupId}
           AND cs.group_type_ = 'VIP'
           AND cs.status_ != 'NOT_START'
-          AND cs.del_flag_ != '1'
+          AND cs.del_flag_ = '0'
     </select>
     <select id="countCourseNum" resultType="java.lang.Integer">
         SELECT COUNT(cs.id_) FROM course_schedule cs

+ 14 - 12
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -1283,14 +1283,15 @@
     </select>
     <select id="queryCoopEchelonData" resultType="com.ym.mec.biz.dal.dto.ExportMusicGroupEchelonDataDto">
         select mg.id_ musicGroupId,co.id_ coopId,co.name_ coopName,mg.name_ musicGroupName,
-               COUNT(if(sr.actual_subject_id_ = 2,1,null)) 'flute',COUNT(if(sr.actual_subject_id_ = 4,1,null)) 'clarinet',
-                COUNT(if(sr.actual_subject_id_ = 5,1,null)) 'saxophone',COUNT(if(sr.actual_subject_id_ = 12,1,null)) 'trumpet',
-                COUNT(if(sr.actual_subject_id_ = 13,1,null)) 'horn',COUNT(if(sr.actual_subject_id_ = 14,1,null)= 14) 'trombone',
-                COUNT(if(sr.actual_subject_id_ = 15,1,null)) 'euphonium',COUNT(if(sr.actual_subject_id_ = 17,1,null)) 'tuba',
-                COUNT(if(sr.actual_subject_id_ = 23,1,null)) 'snareDrum',COUNT(distinct sr.user_id_) 'total'
+        COUNT(if(st.subject_id_list_ = '2',1,null)) 'flute',COUNT(if(st.subject_id_list_ = '4',1,null)) 'clarinet',
+        COUNT(if(st.subject_id_list_ = '5',1,null)) 'saxophone',COUNT(if(st.subject_id_list_ = '12',1,null)) 'trumpet',
+        COUNT(if(st.subject_id_list_ = '13',1,null)) 'horn',COUNT(if(st.subject_id_list_ = '14',1,null)= 14) 'trombone',
+        COUNT(if(st.subject_id_list_ = '15',1,null)) 'euphonium',COUNT(if(st.subject_id_list_ = '17',1,null)) 'tuba',
+        COUNT(if(st.subject_id_list_ = '23',1,null)) 'snareDrum',COUNT(distinct sr.user_id_) 'total'
         from cooperation_organ co
                  left join music_group mg ON mg.cooperation_organ_id_ = co.id_
                  left join student_registration sr ON sr.music_group_id_ = mg.id_
+                 left join student st ON st.user_id_ = sr.user_id_
         where co.del_flag_ = '0' AND co.is_enable_ = true and sr.music_group_status_ = 'NORMAL' AND mg.status_ = 'PROGRESS'
         <if test="organIds != null and organIds.size > 0">
             AND co.organ_id_ IN
@@ -1301,18 +1302,19 @@
         group by mg.id_
     </select>
     <select id="queryMusicGroupEchelonData" resultType="com.ym.mec.biz.dal.dto.ExportMusicGroupEchelonDataDto">
-        select sr.music_group_id_ musicGroupId,sr.current_grade_ musicGroupName,
-        COUNT(if(sr.actual_subject_id_ = 2,1,null)) 'flute',COUNT(if(sr.actual_subject_id_ = 4,1,null)) 'clarinet',
-        COUNT(if(sr.actual_subject_id_ = 5,1,null)) 'saxophone',COUNT(if(sr.actual_subject_id_ = 12,1,null)) 'trumpet',
-        COUNT(if(sr.actual_subject_id_ = 13,1,null)) 'horn',COUNT(if(sr.actual_subject_id_ = 14,1,null)= 14) 'trombone',
-        COUNT(if(sr.actual_subject_id_ = 15,1,null)) 'euphonium',COUNT(if(sr.actual_subject_id_ = 17,1,null)) 'tuba',
-        COUNT(if(sr.actual_subject_id_ = 23,1,null)) 'snareDrum',COUNT(distinct sr.user_id_) 'total'
+        select sr.music_group_id_ musicGroupId,st.current_grade_num_ musicGroupName,
+        COUNT(if(st.subject_id_list_ = '2',1,null)) 'flute',COUNT(if(st.subject_id_list_ = '4',1,null)) 'clarinet',
+        COUNT(if(st.subject_id_list_ = '5',1,null)) 'saxophone',COUNT(if(st.subject_id_list_ = '12',1,null)) 'trumpet',
+        COUNT(if(st.subject_id_list_ = '13',1,null)) 'horn',COUNT(if(st.subject_id_list_ = '14',1,null)= 14) 'trombone',
+        COUNT(if(st.subject_id_list_ = '15',1,null)) 'euphonium',COUNT(if(st.subject_id_list_ = '17',1,null)) 'tuba',
+        COUNT(if(st.subject_id_list_ = '23',1,null)) 'snareDrum',COUNT(distinct sr.user_id_) 'total'
         from student_registration sr
+        left join student st ON st.user_id_ = sr.user_id_
         where sr.music_group_status_ = 'NORMAL' AND
         sr.music_group_id_ IN
         <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
             #{musicGroupId}
         </foreach>
-        group by sr.music_group_id_,sr.current_grade_ order by sr.music_group_id_,sr.current_grade_
+        group by sr.music_group_id_,st.current_grade_num_ order by sr.music_group_id_,st.current_grade_num_
     </select>
 </mapper>