浏览代码

update:上课提醒、有课提醒

yonge 5 年之前
父节点
当前提交
767a63373d

+ 443 - 434
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1,447 +1,456 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
-    /**
-     * 根据教师ID获取当前课程信息
-     *
-     * @param courseID
-     * @return
-     */
-    TeacherAttendanceDto getCurrentCourseDetail(@Param("courseID") Long courseID);
-
-    /**
-     * @param startTime:
-     * @param endTime:
-     * @param teacherId:
-     * @return com.ym.mec.biz.dal.dto.TeacherAttendanceDto
-     * @describe 根据时间区间获取教师上课的课程
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    TeacherAttendanceDto getTeacherCourseByDateSpeed(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("teacherId") Long teacherId);
-
-    int batchAddCourseSchedules(List<CourseSchedule> courseSchedules);
-
-    /**
-     * @describe 批量删除课程计划
-     * @author Joburgess
-     * @date 2019/10/31
-     * @param courseScheduleIds: 课程编号列表
-     * @return int
-     */
-    int batchDeleteCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
-
-    /**
-     * @describe 统计教师再指定时间区段内存在冲突的课程数量
-     * @author Joburgess
-     * @date 2019/10/28
-     * @param teacherId: 教师编号
-     * @param classDate: 上课日期
-     * @param startTime: 开始时间
-     * @param endTime: 结束时间
-     * @return int
-     */
-    int countExistRepeatInDateZone(@Param("teacherId") Integer teacherId,
-                                   @Param("classDate") Date classDate,
-                                   @Param("startTime") Date startTime,
-                                   @Param("endTime") Date endTime);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/17
-     * 统计学生所属班级数量
-     */
-    Integer[] countStudentInClass(List<Integer> classGroupIDs);
-
-    /**
-     * @describe 根据课程编号列表获取课程列表
-     * @author Joburgess
-     * @date 2019/10/22
-     * @param courseScheduleIds: 课程编号列表
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
-     */
-    List<CourseSchedule> findByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
-
-    /**
-     * @describe 根据课程编号列表获取助教列表
-     * @author Joburgess
-     * @date 2019/10/23
-     * @param courseScheduleIds: 课程编号列表
-     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
-     */
-    List<CourseScheduleTeacherSalary> findTeachingTeachers(@Param("courseScheduleIds") List<Long> courseScheduleIds);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/17
-     * 根据日期获取当日排课信息
-     */
-    List<CourseScheduleDto> getCourseSchedulesWithDate(@Param("classDate") Date classDate);
-
-    /**
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
-     * @Author: Joburgess
-     * @Date: 2019/10/14
-     * @params [classDates, classGroupId]
-     * @describe 根据班级和上课日期获取课程计划
-     */
-    List<CourseSchedule> findByClassGroupAndDate(@Param("classDates") List<Date> classDates, @Param("classGroupId") Long classGroupId);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/17
-     * 根据日期获取学生当日排课信息
-     */
-    List<CourseScheduleDto> getStudentCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("studentId") Long studentId);
-
-    /**
-     * @return java.util.List<java.lang.String>
-     * @Author: Joburgess
-     * @Date: 2019/10/11
-     * @params [courseScheduleId]
-     * @describe 获取课程签到学生姓名
-     */
-    List<String> findStudentNamesByCourseSchedule(Long courseScheduleId);
-
-    /**
-     * @param classDate: 上课日期
-     * @param teacherId: 教师编号
-     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
-     * @describe 根据日期获取老师当日排课信息
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(@Param("classDate") Date classDate,
-                                                              @Param("teacherId") Long teacherId,
-                                                              @Param("type") String type);
-
-    /**
-     * @param params:
-     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
-     * @describe 根据日期获取排课
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<CourseScheduleDto> getCourseSchedulesWithDate(Map<String, Object> params);
-
-    int countCourseSchedulesWithDate(Map<String, Object> params);
-
-    /**
-     * @param musicGroupID: 乐团编号
-     * @return int
-     * @describe 根据乐团ID删除排课
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    int deleteCourseSchedulesByMusicGroupID(@Param("musicGroupID") Long musicGroupID);
-
-    /**
-     * @param musicGroupID: 乐团编号
-     * @param month:        月份
-     * @return java.util.List<java.util.Date>
-     * @describe 根据月份获取乐团在该月有课的日期
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Date> getCourseScheduleDateByMonth(@Param("musicGroupID") Long musicGroupID, @Param("month") Date month);
-
-    /**
-     * @param studentId:
-     * @param month:
-     * @param isAttend:
-     * @return java.util.List<java.util.Date>
-     * @describe 获取学生有课日期
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Date> getStudentCourseScheduleDate(@Param("studentId") Long studentId, @Param("month") Date month, @Param("isAttend") Integer isAttend);
-
-    /**
-     * @param teacherId:
-     * @param month:
-     * @return java.util.List<java.util.Date>
-     * @describe 获取教师有课日期
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Date> getTeacherCourseScheduleDate(@Param("teacherId") Long teacherId,
-                                            @Param("month") Date month,
-                                            @Param("type") String type);
-
-    /**
-     * @param month:
-     * @param organId:
-     * @return java.util.List<java.util.Date>
-     * @describe 获取当月有课的日期
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Date> getCourseScheduleDate(@Param("month") Date month, @Param("organId") Long organId);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 统计教师在一天内有时间重复的课数
-     */
-    int countTeacherCourseInOnDayRepeats(CourseSchedule courseSchedule);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 根据日期获取对应老师的课程
-     */
-    List<CourseSchedule> findTeacherCoursesInDates(@Param("dates") List<Date> dates, @Param("teacherId") Long teacherId);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 根据日期获取课程
-     */
-    List<CourseSchedule> findCoursesByDates(@Param("dates") List<Date> dates);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 获取在指定时间段内存在重复的课程
-     */
-    List<CourseSchedule> findOverLapCoursesInDay(@Param("dates") List<Date> dates,
-                                                 @Param("startClassTime") Date startClassTime,
-                                                 @Param("endClassTime") Date endClassTime);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/29
-     * 获取班级的声部
-     */
-    String[] findClassSubjects(List<Integer> ids);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 根据id批量获取课程
-     */
-    List<CourseSchedule> findCourseSchedulesByIds(@Param("ids") Long[] ids);
-
-    /**
-     * 获取班级未开始的课程计划
-     *
-     * @param classGroupTeacherMapperList
-     * @return
-     */
-    List<CourseSchedule> findClassGroupNoStartCourseSchedules(@Param("classGroupTeacherMapperList") List<ClassGroupTeacherMapper> classGroupTeacherMapperList);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/30
-     * 获取学生上课记录
-     */
-    List<StudentCourseScheduleRecordDto> findStudentCourseScheduleRecords(Map<String, Object> params);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/30
-     * 统计学生上课记录
-     */
-    int countStudentCourseScheduleRecords(Map<String, Object> params);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/30
-     * 获取学生未上课记录
-     */
-    List<StudentCourseScheduleRecordDto> findStudentCourseScheduleNotStartRecords(@Param("userId") Long userId, @Param("date") Date date);
-
-    /**
-     * @return int
-     * @Author: Joburgess
-     * @Date: 2019/10/8
-     * @params [classGroupId]
-     * @describe 统计已上课次
-     */
-    int countClassTimes(@Param("classGroupId") Long classGroupId,
-                        @Param("startClassTime") Date startClassTime);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/17
-     * 获取课程信息
-     */
-    CourseScheduleDto getCourseSchedules(@Param("courseScheduleId") Long courseScheduleId);
-
-    /**
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
-     * @Author: Joburgess
-     * @Date: 2019/10/14
-     * @params [vipGroupId]
-     * @describe 获取vip课排课计划
-     */
-    List<CourseSchedule> findVipGroupCourseSchedules(@Param("vipGroupId") Long vipGroupId);
-
-    /**
-     * @return java.lang.String
-     * @Author: Joburgess
-     * @Date: 2019/10/16
-     * @params [courseScheduleId]
-     * @describe 获取课程关联班级类型
-     */
-    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);
-
-    /**
-     * 查询已完成未更新状态的课程列表
-     *
-     * @return
-     */
-    List<CourseSchedule> queryFinishedWithNoUpdateStatus();
-
-    int batchUpdate(List<CourseSchedule> courseScheduleList);
-
-    /**
-     * 查询提前指定分钟数还未签到的用户
-     *
-     * @param minutes 分钟数
-     * @return
-     */
-    List<CourseSchedule> queryNoSignInListByBeforeMinutes(Integer minutes);
-
-    /**
-     * @param params: 参数
-     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
-     * @describe 查询老师指定班级的排课信息
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<TeacherClassCourseSchudeleDto> queryTeacherClassCourseSchedule(Map<String, Object> params);
-
-    /**
-     * @param params:
-     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
-     * @describe 查询老师指定班级历史排课信息
-     * @author Joburgess
-     * @date 2019/10/19
-     */
-    List<TeacherClassCourseSchudeleDto> queryTeacherHistoryClassCourseSchedule(Map<String, Object> params);
-
-    /**
-     * @param params: 参数
-     * @return int
-     * @describe 统计老师指定班级的排课数量
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    int countTeacherClassCourseSchedule(Map<String, Object> params);
-
-    /**
-     * @param params:
-     * @return int
-     * @describe 统计历史老师指定班级的排课数量
-     * @author Joburgess
-     * @date 2019/10/19
-     */
-    int countTeacherHistoryClassCourseSchedule(Map<String, Object> params);
-
-    /**
-     * @param musicGroupId: 乐团编号
-     * @return java.util.List<java.util.Map < java.lang.Long, java.lang.Integer>>
-     * @describe 统计乐团下班级的排课数
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Map<Integer, Long>> countClassCourseNumByMusicGroup(String musicGroupId);
-
-    /**
-     * @param courseSchedules: 课程计划编号列表
-     * @return java.util.List<java.util.Map < java.lang.Integer, java.lang.Integer>>
-     * @describe 根据课程计划获取对应课次
-     * @author Joburgess
-     * @date 2019/10/20
-     */
-    List<Map<Integer, Integer>> findCourseScheduleCurrentTimes(List<Integer> courseSchedules);
-
-    /**
-     * 根据乐团编号修改课程教学点
-     *
-     * @param musicGroupId
-     * @param schoolId
-     */
-    void updateByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("schoolId") Integer schoolId);
-
-    /**
-     * 获取班级某时间后相应节数的课程
-     *
-     * @param classGroupId
-     * @param startDate
-     * @param times
-     * @return
-     */
-    List<CourseSchedule> findCourseScheduleByClassGroupIdAndDate(@Param("classGroupId") Integer classGroupId, @Param("startDate") String startDate, @Param("times") int times);
-    
-    /**
-     * 根据时间范围查询老师指定类型的课程列表
-     * @param teacherId 老师编号
-     * @param type 课程类型 (如果为null,查询所有类型)
-     * @param startTime 开始时间
-     * @param endTime 结束时间
-     * @return
-     */
-    List<CourseSchedule> queryTeacherCourseScheduleListByTimeRangeAndType(@Param("teacherId") Integer teacherId, @Param("type") CourseScheduleType type,
-                                                                          @Param("startTime") Date startTime, @Param("endTime") Date endTime);
-
-    /**
-     * 查询班级未开始的课程
-     *
-     * @param classGroupId
-     * @return
-     */
-    List<CourseSchedule> findNoStartCoursesByClassGroupId(@Param("classGroupId") Integer classGroupId);
-
-    /**
-     * @describe 获取点名详情头部信息
-     * @author Joburgess
-     * @date 2019/10/24
-     * @param courseScheduleId: 课程编号
-     * @return com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto
-     */
-    CourseAttendanceDetailHeadInfoDto findByCourse(Long courseScheduleId);
-
-    /**
-     * 获取学员购买的所有乐团和vip编号分页列表
-     * @param params
-     * @return
-     */
-    List<String> queryMusicGroupIds(Map<String, Object> params);
-
-    /**
-     * @describe 获取时间段内的课程
-     * @author Joburgess
-     * @date 2019/10/31
-     * @param startTime: 开始时间
-     * @param endTime: 结束时间
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
-     */
-    List<CourseSchedule> findByDateZone(@Param("startTime") Date startTime,
-                                        @Param("endTime") Date endTime);
+	/**
+	 * 根据教师ID获取当前课程信息
+	 *
+	 * @param courseID
+	 * @return
+	 */
+	TeacherAttendanceDto getCurrentCourseDetail(@Param("courseID") Long courseID);
+
+	/**
+	 * @param startTime:
+	 * @param endTime:
+	 * @param teacherId:
+	 * @return com.ym.mec.biz.dal.dto.TeacherAttendanceDto
+	 * @describe 根据时间区间获取教师上课的课程
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	TeacherAttendanceDto getTeacherCourseByDateSpeed(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("teacherId") Long teacherId);
+
+	int batchAddCourseSchedules(List<CourseSchedule> courseSchedules);
+
+	/**
+	 * @describe 批量删除课程计划
+	 * @author Joburgess
+	 * @date 2019/10/31
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return int
+	 */
+	int batchDeleteCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
+	 * @describe 统计教师再指定时间区段内存在冲突的课程数量
+	 * @author Joburgess
+	 * @date 2019/10/28
+	 * @param teacherId: 教师编号
+	 * @param classDate: 上课日期
+	 * @param startTime: 开始时间
+	 * @param endTime: 结束时间
+	 * @return int
+	 */
+	int countExistRepeatInDateZone(@Param("teacherId") Integer teacherId, @Param("classDate") Date classDate, @Param("startTime") Date startTime,
+			@Param("endTime") Date endTime);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 统计学生所属班级数量
+	 */
+	Integer[] countStudentInClass(List<Integer> classGroupIDs);
+
+	/**
+	 * @describe 根据课程编号列表获取课程列表
+	 * @author Joburgess
+	 * @date 2019/10/22
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 */
+	List<CourseSchedule> findByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
+	 * @describe 根据课程编号列表获取助教列表
+	 * @author Joburgess
+	 * @date 2019/10/23
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+	 */
+	List<CourseScheduleTeacherSalary> findTeachingTeachers(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 根据日期获取当日排课信息
+	 */
+	List<CourseScheduleDto> getCourseSchedulesWithDate(@Param("classDate") Date classDate);
+
+	/**
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 * @Author: Joburgess
+	 * @Date: 2019/10/14
+	 * @params [classDates, classGroupId]
+	 * @describe 根据班级和上课日期获取课程计划
+	 */
+	List<CourseSchedule> findByClassGroupAndDate(@Param("classDates") List<Date> classDates, @Param("classGroupId") Long classGroupId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 根据日期获取学生当日排课信息
+	 */
+	List<CourseScheduleDto> getStudentCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("studentId") Long studentId);
+
+	/**
+	 * @return java.util.List<java.lang.String>
+	 * @Author: Joburgess
+	 * @Date: 2019/10/11
+	 * @params [courseScheduleId]
+	 * @describe 获取课程签到学生姓名
+	 */
+	List<String> findStudentNamesByCourseSchedule(Long courseScheduleId);
+
+	/**
+	 * @param classDate: 上课日期
+	 * @param teacherId: 教师编号
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+	 * @describe 根据日期获取老师当日排课信息
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("teacherId") Long teacherId, @Param("type") String type);
+
+	/**
+	 * @param params:
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+	 * @describe 根据日期获取排课
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<CourseScheduleDto> getCourseSchedulesWithDate(Map<String, Object> params);
+
+	int countCourseSchedulesWithDate(Map<String, Object> params);
+
+	/**
+	 * @param musicGroupID: 乐团编号
+	 * @return int
+	 * @describe 根据乐团ID删除排课
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	int deleteCourseSchedulesByMusicGroupID(@Param("musicGroupID") Long musicGroupID);
+
+	/**
+	 * @param musicGroupID: 乐团编号
+	 * @param month:        月份
+	 * @return java.util.List<java.util.Date>
+	 * @describe 根据月份获取乐团在该月有课的日期
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Date> getCourseScheduleDateByMonth(@Param("musicGroupID") Long musicGroupID, @Param("month") Date month);
+
+	/**
+	 * @param studentId:
+	 * @param month:
+	 * @param isAttend:
+	 * @return java.util.List<java.util.Date>
+	 * @describe 获取学生有课日期
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Date> getStudentCourseScheduleDate(@Param("studentId") Long studentId, @Param("month") Date month, @Param("isAttend") Integer isAttend);
+
+	/**
+	 * @param teacherId:
+	 * @param month:
+	 * @return java.util.List<java.util.Date>
+	 * @describe 获取教师有课日期
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Date> getTeacherCourseScheduleDate(@Param("teacherId") Long teacherId, @Param("month") Date month, @Param("type") String type);
+
+	/**
+	 * @param month:
+	 * @param organId:
+	 * @return java.util.List<java.util.Date>
+	 * @describe 获取当月有课的日期
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Date> getCourseScheduleDate(@Param("month") Date month, @Param("organId") Long organId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/23
+	 * 统计教师在一天内有时间重复的课数
+	 */
+	int countTeacherCourseInOnDayRepeats(CourseSchedule courseSchedule);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 根据日期获取对应老师的课程
+	 */
+	List<CourseSchedule> findTeacherCoursesInDates(@Param("dates") List<Date> dates, @Param("teacherId") Long teacherId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 根据日期获取课程
+	 */
+	List<CourseSchedule> findCoursesByDates(@Param("dates") List<Date> dates);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 获取在指定时间段内存在重复的课程
+	 */
+	List<CourseSchedule> findOverLapCoursesInDay(@Param("dates") List<Date> dates, @Param("startClassTime") Date startClassTime,
+			@Param("endClassTime") Date endClassTime);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/29
+	 * 获取班级的声部
+	 */
+	String[] findClassSubjects(List<Integer> ids);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 根据id批量获取课程
+	 */
+	List<CourseSchedule> findCourseSchedulesByIds(@Param("ids") Long[] ids);
+
+	/**
+	 * 获取班级未开始的课程计划
+	 *
+	 * @param classGroupTeacherMapperList
+	 * @return
+	 */
+	List<CourseSchedule> findClassGroupNoStartCourseSchedules(@Param("classGroupTeacherMapperList") List<ClassGroupTeacherMapper> classGroupTeacherMapperList);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/30
+	 * 获取学生上课记录
+	 */
+	List<StudentCourseScheduleRecordDto> findStudentCourseScheduleRecords(Map<String, Object> params);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/30
+	 * 统计学生上课记录
+	 */
+	int countStudentCourseScheduleRecords(Map<String, Object> params);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/30
+	 * 获取学生未上课记录
+	 */
+	List<StudentCourseScheduleRecordDto> findStudentCourseScheduleNotStartRecords(@Param("userId") Long userId, @Param("date") Date date);
+
+	/**
+	 * @return int
+	 * @Author: Joburgess
+	 * @Date: 2019/10/8
+	 * @params [classGroupId]
+	 * @describe 统计已上课次
+	 */
+	int countClassTimes(@Param("classGroupId") Long classGroupId, @Param("startClassTime") Date startClassTime);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 获取课程信息
+	 */
+	CourseScheduleDto getCourseSchedules(@Param("courseScheduleId") Long courseScheduleId);
+
+	/**
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 * @Author: Joburgess
+	 * @Date: 2019/10/14
+	 * @params [vipGroupId]
+	 * @describe 获取vip课排课计划
+	 */
+	List<CourseSchedule> findVipGroupCourseSchedules(@Param("vipGroupId") Long vipGroupId);
+
+	/**
+	 * @return java.lang.String
+	 * @Author: Joburgess
+	 * @Date: 2019/10/16
+	 * @params [courseScheduleId]
+	 * @describe 获取课程关联班级类型
+	 */
+	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);
+
+	/**
+	 * 查询已完成未更新状态的课程列表
+	 *
+	 * @return
+	 */
+	List<CourseSchedule> queryFinishedWithNoUpdateStatus();
+
+	int batchUpdate(List<CourseSchedule> courseScheduleList);
+
+	/**
+	 * 查询提前指定分钟数还未签到的用户
+	 *
+	 * @param minutes 分钟数
+	 * @return
+	 */
+	List<CourseSchedule> queryNoSignInListByBeforeMinutes(Integer minutes);
+
+	/**
+	 * @param params: 参数
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
+	 * @describe 查询老师指定班级的排课信息
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<TeacherClassCourseSchudeleDto> queryTeacherClassCourseSchedule(Map<String, Object> params);
+
+	/**
+	 * @param params:
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
+	 * @describe 查询老师指定班级历史排课信息
+	 * @author Joburgess
+	 * @date 2019/10/19
+	 */
+	List<TeacherClassCourseSchudeleDto> queryTeacherHistoryClassCourseSchedule(Map<String, Object> params);
+
+	/**
+	 * @param params: 参数
+	 * @return int
+	 * @describe 统计老师指定班级的排课数量
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	int countTeacherClassCourseSchedule(Map<String, Object> params);
+
+	/**
+	 * @param params:
+	 * @return int
+	 * @describe 统计历史老师指定班级的排课数量
+	 * @author Joburgess
+	 * @date 2019/10/19
+	 */
+	int countTeacherHistoryClassCourseSchedule(Map<String, Object> params);
+
+	/**
+	 * @param musicGroupId: 乐团编号
+	 * @return java.util.List<java.util.Map < java.lang.Long, java.lang.Integer>>
+	 * @describe 统计乐团下班级的排课数
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Map<Integer, Long>> countClassCourseNumByMusicGroup(String musicGroupId);
+
+	/**
+	 * @param courseSchedules: 课程计划编号列表
+	 * @return java.util.List<java.util.Map < java.lang.Integer, java.lang.Integer>>
+	 * @describe 根据课程计划获取对应课次
+	 * @author Joburgess
+	 * @date 2019/10/20
+	 */
+	List<Map<Integer, Integer>> findCourseScheduleCurrentTimes(List<Integer> courseSchedules);
+
+	/**
+	 * 根据乐团编号修改课程教学点
+	 *
+	 * @param musicGroupId
+	 * @param schoolId
+	 */
+	void updateByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("schoolId") Integer schoolId);
+
+	/**
+	 * 获取班级某时间后相应节数的课程
+	 *
+	 * @param classGroupId
+	 * @param startDate
+	 * @param times
+	 * @return
+	 */
+	List<CourseSchedule> findCourseScheduleByClassGroupIdAndDate(@Param("classGroupId") Integer classGroupId, @Param("startDate") String startDate,
+			@Param("times") int times);
+
+	/**
+	 * 根据时间范围查询老师指定类型的课程列表
+	 * @param teacherId 老师编号
+	 * @param type 课程类型 (如果为null,查询所有类型)
+	 * @param startTime 开始时间
+	 * @param endTime 结束时间
+	 * @return
+	 */
+	List<CourseSchedule> queryTeacherCourseScheduleListByTimeRangeAndType(@Param("teacherId") Integer teacherId, @Param("type") CourseScheduleType type,
+			@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+	/**
+	 * 查询班级未开始的课程
+	 *
+	 * @param classGroupId
+	 * @return
+	 */
+	List<CourseSchedule> findNoStartCoursesByClassGroupId(@Param("classGroupId") Integer classGroupId);
+
+	/**
+	 * @describe 获取点名详情头部信息
+	 * @author Joburgess
+	 * @date 2019/10/24
+	 * @param courseScheduleId: 课程编号
+	 * @return com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto
+	 */
+	CourseAttendanceDetailHeadInfoDto findByCourse(Long courseScheduleId);
+
+	/**
+	 * 获取学员购买的所有乐团和vip编号分页列表
+	 * @param params
+	 * @return
+	 */
+	List<String> queryMusicGroupIds(Map<String, Object> params);
+
+	/**
+	 * @describe 获取时间段内的课程
+	 * @author Joburgess
+	 * @date 2019/10/31
+	 * @param startTime: 开始时间
+	 * @param endTime: 结束时间
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 */
+	List<CourseSchedule> findByDateZone(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+	/**
+	 * 查询用户明天的课程数
+	 * @return
+	 */
+	List<Mapper> queryStudentCoursesTimesOfTomorrow();
+
+	/**
+	 * 查询90分钟内未上的课程
+	 * @return
+	 */
+	List<Mapper> queryNotStartCourseScheduleIn90Mins();
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -250,4 +250,14 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      */
     List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId);
 
+    /**
+     * 有课提醒
+     * @return
+     */
+    void coursesScheduleRemind();
+    
+    /**
+     * 上课提醒
+     */
+    void studentSignInRemind();
 }

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

@@ -7,7 +7,7 @@ import java.io.InputStream;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.timevale.tgtext.text.pdf.en;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
@@ -16,8 +17,9 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.collections.ListUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,6 +28,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.Map.Entry;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -824,4 +827,31 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     public List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId) {
 		return courseScheduleDao.findNoStartCoursesByClassGroupId(classGroupId);
     }
+
+	@Override
+	public void coursesScheduleRemind() {
+		List<Mapper> mapperList = courseScheduleDao.queryStudentCoursesTimesOfTomorrow();
+		for (Mapper mapper : mapperList) {
+			Integer userId = (Integer) mapper.getKey();
+			Integer size = (Integer) mapper.getValue();
+
+			Map<Integer, String> receivers = new HashMap<Integer, String>();
+			receivers.put(userId, userId + "");
+
+			sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_HAVE_COURSE_MESSAGE, receivers, null, 0, "", size);
+		}
+	}
+
+	@Override
+	public void studentSignInRemind() {
+		List<Mapper> mapperList = courseScheduleDao.queryNotStartCourseScheduleIn90Mins();
+		if(mapperList != null && mapperList.size() > 0){
+			for(Mapper mapper : mapperList){
+				Map<Integer, String> receivers = new HashMap<Integer, String>();
+				receivers.put((Integer) mapper.getKey(), mapper.getKey() + "");
+				
+				sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_ATTEND_COURSE_MESSAGE, receivers, null, 0, "", mapper.getValue());
+			}
+		}
+	}
 }

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -25,6 +25,11 @@
         <result column="leave_student_num_" property="leaveStudentNum"/>
         <result column="schoole_id_" property="schoolId"/>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
+    	<result column="key_" property="key"/>
+    	<result column="value_" property="value"/>
+    </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseScheduleDto" id="courseScheduleDto" extends="CourseSchedule">
         <result column="teacher_name_" property="teacherName"/>
@@ -1087,4 +1092,12 @@
             WHERE cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d')
 
     </select>
+    
+    <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">
+    	select cssp.user_id_ key_,count(1) value_ from course_schedule cs right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_ where class_date_ = date(DATE_ADD(now(),INTERVAL 1 DAY)) group by cssp.user_id_
+    </select>
+    
+    <select id="queryNotStartCourseScheduleIn90Mins" resultMap="Mapper">
+    	select cssp.user_id_ key_,cs.name_ value_ from course_schedule cs right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_ where CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_ADD(now(),INTERVAL 90 MINUTE) and cs.status_ = 'NOT_START'
+    </select>
 </mapper>

+ 8 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -29,4 +29,12 @@ public interface TaskRemoteService {
 	@GetMapping("task/vipGroupTeacherSalarySettlement")
 	// vip课课酬结算
 	public void vipGroupTeacherSalarySettlement();
+	
+	@GetMapping("task/coursesScheduleRemind")
+	// vip课课酬结算
+	public void coursesScheduleRemind();
+	
+	@GetMapping("task/studentSignInRemind")
+	// vip课课酬结算
+	public void studentSignInRemind();
 }

+ 10 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -42,4 +42,14 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 		logger.info("vip课课酬结算的服务调用失败");
 	}
 
+	@Override
+	public void coursesScheduleRemind() {
+		logger.info("有课提醒的服务调用失败");
+	}
+
+	@Override
+	public void studentSignInRemind() {
+		logger.info("上课提醒的服务调用失败");
+	}
+
 }

+ 18 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/CoursesScheduleRemaindTask.java

@@ -0,0 +1,18 @@
+package com.ym.mec.task.jobs;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+
+public class CoursesScheduleRemaindTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.coursesScheduleRemind();
+	}
+}

+ 18 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/StudentSignInRemaindTask.java

@@ -0,0 +1,18 @@
+package com.ym.mec.task.jobs;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+
+public class StudentSignInRemaindTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.studentSignInRemind();
+	}
+}

+ 12 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -66,4 +66,16 @@ public class TaskController extends BaseController {
 	public void pushNoSignOutMessage() {
 		teacherAttendanceService.pushNoSignOutMessage();
 	}
+
+	@GetMapping("/coursesScheduleRemind")
+	// 有课提醒
+	public void coursesScheduleRemind() {
+		courseScheduleService.coursesScheduleRemind();
+	}
+
+	@GetMapping("/studentSignInRemind")
+	// 上课提醒
+	public void studentSignInRemind() {
+		courseScheduleService.studentSignInRemind();
+	}
 }