Joburgess 5 anos atrás
pai
commit
be8411b9f0

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -50,4 +50,12 @@ public class ClassGroupController extends BaseController {
     public Object queryPage(@RequestBody QueryInfo queryInfo) {
         return succeed(classGroupService.queryPage(queryInfo));
     }
+
+    @ApiOperation(value = "合奏班相关班级获取")
+    @GetMapping("findClassGroupAboutMix")
+    public Object findClassGroupAboutMix(@ApiParam(value = "乐团编号", required = true) @RequestParam Integer musicGroupId,
+                                         @ApiParam(value = "班级编号", required = false) Integer mixClassGroupId){
+        return succeed(classGroupService.findClassGroup(musicGroupId,mixClassGroupId));
+    }
+
 }

+ 41 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.web.dal.entity.CourseSchedule;
 import com.ym.mec.web.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.web.service.CourseScheduleService;
 import com.ym.mec.web.service.StudentAttendanceService;
@@ -10,6 +11,9 @@ import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * @Author Joburgess
  * @Date 2019/9/10
@@ -24,6 +28,43 @@ public class CourseScheduleController extends BaseController {
     @Autowired
     private StudentAttendanceService studentAttendanceService;
 
+    @ApiOperation(value = "排课")
+    @PutMapping("/batchAddCourseSchedule/{musicGroupID}")
+    public Object batchAddCourseSchedule(@RequestBody List<CourseSchedule> courseSchedules,
+                                         @ApiParam(value = "乐团编号", required = true) @PathVariable("musicGroupID") Long musicGroupID){
+        String s = scheduleService.batchAddCourseSchedule(courseSchedules);
+        if(s.isEmpty()){
+            return succeed();
+        }else{
+            return failed(s);
+        }
+    }
+
+    @ApiOperation(value = "批量跟新排课")
+    @PutMapping("/batchUpdateCourseSchedule/{musicGroupID}")
+    public Object batchUpdateCourseSchedule(@RequestBody List<CourseSchedule> courseSchedules,
+                                            @ApiParam(value = "乐团编号", required = true) @PathVariable("musicGroupID") Long musicGroupID){
+        String s = scheduleService.batchUpdateCourseSchedule(courseSchedules,musicGroupID);
+        if(s.isEmpty()){
+            return succeed();
+        }else{
+            return failed(s);
+        }
+    }
+
+    @ApiOperation(value = "根据月份获取乐团在该月有课的日期")
+    @GetMapping("/getCourseScheduleDateByMonth")
+        public Object getCourseScheduleDateByMonth(@ApiParam(value = "乐团编号", required = true) @RequestParam Long musicGroupID,
+                                                   @ApiParam(value = "月份", required = true) @RequestParam Date month) {
+        return succeed(scheduleService.getCourseScheduleDateByMonth(musicGroupID,month));
+    }
+
+    @ApiOperation(value = "根据日期获取当日排课")
+    @GetMapping("/getCourseSchedulesWithDate")
+    public Object getCourseSchedulesWithDate(@ApiParam(value = "日期", required = true) Date date){
+        return succeed(scheduleService.getCourseSchedulesWithDate(date));
+    }
+
     @ApiOperation(value = "根据课程ID查询正在或即将开始的课程")
     @GetMapping("/getCurrentCourseDetail/{courseID}")
     public Object getCurrentCourseDetail(@ApiParam(value = "课程ID", required = true) @PathVariable("courseID") Long courseID){

+ 16 - 4
mec-web/src/main/java/com/ym/mec/web/dal/dao/ClassGroupDao.java

@@ -1,10 +1,9 @@
 package com.ym.mec.web.dal.dao;
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.web.dal.entity.ClassGroup;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
 
@@ -16,4 +15,17 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      */
     List<ClassGroup> findClassGroup4Teacher(@Param("teacherId") Integer teacherId);
 
+    /**
+     * 获取所有合奏班
+     * @return
+     */
+    List<ClassGroup> findAllMixClassGroup(@Param("musicGroupId") Integer musicGroupId);
+
+    /**
+     * 根据合奏班ID查询该合奏班下的子班级
+     * @param mixClassGroupId
+     * @return
+     */
+    List<ClassGroup> findMixClassChildClassGroup(@Param("mixClassGroupId") Integer mixClassGroupId);
+
 }

+ 35 - 0
mec-web/src/main/java/com/ym/mec/web/dal/dao/CourseScheduleDao.java

@@ -1,10 +1,14 @@
 package com.ym.mec.web.dal.dao;
 
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.web.dal.dto.CourseScheduleDto;
 import com.ym.mec.web.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.web.dal.entity.CourseSchedule;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
+import java.util.List;
+
 public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
@@ -13,4 +17,35 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     TeacherAttendanceDto getCurrentCourseDetail(@Param("courseID") Long courseID);
+
+    int batchAddCourseSchedules(List<CourseSchedule> courseSchedules);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 统计学生所属班级数量
+     */
+    Integer[] countStudentInClass(List<Integer> classGroupIDs);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 根据日期获取当日排课信息
+     */
+    List<CourseScheduleDto> getCourseSchedulesWithDate(@Param("classDate") Date classDate);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 根据乐团ID删除排课
+     */
+    int deleteCourseSchedulesByMusicGroupID(@Param("musicGroupID") Long musicGroupID);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 根据月份获取乐团在该月有课的日期
+     */
+    List<Date> getCourseScheduleDateByMonth(@Param("musicGroupID") Long musicGroupID,
+                                            @Param("month") Date month);
 }

+ 167 - 0
mec-web/src/main/java/com/ym/mec/web/dal/dto/CourseScheduleDto.java

@@ -0,0 +1,167 @@
+package com.ym.mec.web.dal.dto;
+
+import com.ym.mec.web.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.web.dal.enums.CourseStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/17
+ */
+public class CourseScheduleDto {
+
+    /**  */
+    private Long id;
+
+    /** 班级编号 */
+    @ApiModelProperty(value = "班级编号",required = false)
+    private Integer classGroupId;
+
+    /** 班级名称 */
+    @ApiModelProperty(value = "班级名称",required = false)
+    private String classGroupName;
+
+    /** 班级类型(普通班级、合奏班级) */
+    @ApiModelProperty(value = "班级类型(普通班级、合奏班级、提高课班级、VIP班级)",required = false)
+    private ClassGroupTypeEnum type;
+
+    /** 课程状态 */
+    @ApiModelProperty(value = "课程状态  NOT_START未开始,SIGN_IN已签到,SIGN_OUT已签退",required = false)
+    private CourseStatusEnum status;
+
+    /** 补贴 */
+    @ApiModelProperty(value = "补贴",required = false)
+    private long subsidy;
+
+    /** 上课日期 */
+    @ApiModelProperty(value = "上课日期",required = false)
+    private java.util.Date classDate;
+
+    /** 上课时间 */
+    @ApiModelProperty(value = "上课时间",required = false)
+    private java.util.Date startClassTime;
+
+    /** 结束时间 */
+    @ApiModelProperty(value = "结束时间",required = false)
+    private java.util.Date endClassTime;
+
+    /** 上课教师 */
+    @ApiModelProperty(value = "上课教师",required = false)
+    private Long teacherId;
+
+    /** 实际上课教师 */
+    @ApiModelProperty(value = "实际上课教师",required = false)
+    private Long actualTeacherId;
+
+    /**  */
+    private java.util.Date createTime;
+
+    /**  */
+    private java.util.Date updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+
+    public ClassGroupTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(ClassGroupTypeEnum type) {
+        this.type = type;
+    }
+
+    public CourseStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(CourseStatusEnum status) {
+        this.status = status;
+    }
+
+    public long getSubsidy() {
+        return subsidy;
+    }
+
+    public void setSubsidy(long subsidy) {
+        this.subsidy = subsidy;
+    }
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public Date getStartClassTime() {
+        return startClassTime;
+    }
+
+    public void setStartClassTime(Date startClassTime) {
+        this.startClassTime = startClassTime;
+    }
+
+    public Date getEndClassTime() {
+        return endClassTime;
+    }
+
+    public void setEndClassTime(Date endClassTime) {
+        this.endClassTime = endClassTime;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Long getActualTeacherId() {
+        return actualTeacherId;
+    }
+
+    public void setActualTeacherId(Long actualTeacherId) {
+        this.actualTeacherId = actualTeacherId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/dal/enums/ParamEnum.java

@@ -8,6 +8,7 @@ import com.ym.mec.common.enums.BaseEnum;
  */
 public enum  ParamEnum implements BaseEnum<Integer, ParamEnum> {
 
+    ONE(1,""),
     TEACHER_ATTENDANCE_TIME_GAP(-20,"教师正常签到时差");
 
     private Integer code;

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/service/ClassGroupService.java

@@ -14,4 +14,11 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      */
     List<ClassGroup> findClassGroup4Teacher(Integer teacherId);
 
+    /**
+     * 合奏班相关班级获取
+     * @param mixClassGroupId
+     * @return
+     */
+    List<ClassGroup> findClassGroup(Integer musicGroupId,Integer mixClassGroupId);
+
 }

+ 32 - 0
mec-web/src/main/java/com/ym/mec/web/service/CourseScheduleService.java

@@ -1,9 +1,13 @@
 package com.ym.mec.web.service;
 
 import com.ym.mec.common.service.BaseService;
+import com.ym.mec.web.dal.dto.CourseScheduleDto;
 import com.ym.mec.web.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.web.dal.entity.CourseSchedule;
 
+import java.util.Date;
+import java.util.List;
+
 public interface CourseScheduleService extends BaseService<Long, CourseSchedule> {
 
     /**
@@ -12,4 +16,32 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * 根据课程ID获取当前课程的信息
      */
     TeacherAttendanceDto getCurrentCourseDetail(Long courseID);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 批量插入课程计划
+     */
+    String batchAddCourseSchedule(List<CourseSchedule> courseSchedules);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 批量更新课程计划
+     */
+    String batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules,Long musicGroupID);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 根据日期获取当日排课信息
+     */
+    List<CourseScheduleDto> getCourseSchedulesWithDate(Date classDate);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
+     * 根据月份获取乐团在该月有课的日期
+     */
+    List<Date> getCourseScheduleDateByMonth(Long musicGroupID, Date month);
 }

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/service/impl/ClassGroupServiceImpl.java

@@ -26,4 +26,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     public List<ClassGroup> findClassGroup4Teacher(Integer teacherId) {
         return classGroupDao.findClassGroup4Teacher(teacherId);
     }
+
+	@Override
+	public List<ClassGroup> findClassGroup(Integer musicGroupId,Integer mixClassGroupId) {
+		if(null==mixClassGroupId){
+			return classGroupDao.findAllMixClassGroup(musicGroupId);
+		}else{
+			return classGroupDao.findMixClassChildClassGroup(mixClassGroupId);
+		}
+	}
 }

+ 75 - 0
mec-web/src/main/java/com/ym/mec/web/service/impl/CourseScheduleServiceImpl.java

@@ -3,6 +3,7 @@ package com.ym.mec.web.service.impl;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.web.dal.dao.CourseScheduleDao;
+import com.ym.mec.web.dal.dto.CourseScheduleDto;
 import com.ym.mec.web.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.web.dal.entity.CourseSchedule;
 import com.ym.mec.web.dal.enums.ParamEnum;
@@ -10,7 +11,11 @@ import com.ym.mec.web.service.CourseScheduleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSchedule>  implements CourseScheduleService {
@@ -30,4 +35,74 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		currentCourseDetail.setTeacherAttendanceTimeGap(ParamEnum.TEACHER_ATTENDANCE_TIME_GAP);
 		return currentCourseDetail;
 	}
+
+	@Override
+	public String batchAddCourseSchedule(List<CourseSchedule> courseSchedules) {
+		String result=checkCourseSchedule(courseSchedules);
+		if(result.isEmpty()){
+			courseScheduleDao.batchAddCourseSchedules(courseSchedules);
+			return result;
+		}else{
+			return result;
+		}
+	}
+
+	@Override
+	public String batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules, Long musicGroupID) {
+		String result=checkCourseSchedule(courseSchedules);
+		if(result.isEmpty()){
+			courseScheduleDao.deleteCourseSchedulesByMusicGroupID(musicGroupID);
+			courseScheduleDao.batchAddCourseSchedules(courseSchedules);
+			return result;
+		}else{
+			return result;
+		}
+	}
+
+	@Override
+	public List<CourseScheduleDto> getCourseSchedulesWithDate(Date classDate) {
+		return courseScheduleDao.getCourseSchedulesWithDate(classDate);
+	}
+
+	@Override
+	public List<Date> getCourseScheduleDateByMonth(Long musicGroupID, Date month) {
+		return courseScheduleDao.getCourseScheduleDateByMonth(musicGroupID,month);
+	}
+
+	/**
+	 * 判断课程安排中是否存在冲突
+	 * @param courseSchedules
+	 * @return
+	 */
+	private String checkCourseSchedule(List<CourseSchedule> courseSchedules){
+		Map<Date, List<CourseSchedule>> collect = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassDate));
+		for(Date keyDate:collect.keySet()){
+			List<CourseSchedule> currentCourses=collect.get(keyDate);
+			Map<Date, List<CourseSchedule>> collect1 = currentCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getStartClassTime));
+			if(currentCourses.size()==collect1.size()){
+				continue;
+			}else{
+				for(Date keyDate2:collect1.keySet()){
+					List<CourseSchedule> currentCourses1=collect.get(keyDate2);
+					if(currentCourses1.size()>ParamEnum.ONE.getCode()){
+						Map<Long, List<CourseSchedule>> collect2 = currentCourses1.stream().collect(
+								Collectors.groupingBy(CourseSchedule::getTeacherId));
+						for (Long teacherID:collect2.keySet()){
+							if(collect2.get(teacherID).size()>ParamEnum.ONE.getCode()){
+								return new SimpleDateFormat("yyyy-MM-dd").format(keyDate)+"日的课程安排在教师分配上有冲突!";
+							}
+						}
+						List<Integer> repeatClassGroupIds = currentCourses1.stream().map(CourseSchedule::getClassGroupId).collect(Collectors.toList());
+						Integer[] counts=courseScheduleDao.countStudentInClass(repeatClassGroupIds);
+						for (Integer i:counts){
+							if (i>ParamEnum.ONE.getCode()){
+								return new SimpleDateFormat("yyyy-MM-dd").format(keyDate)+"日的课程安排有学生重复!";
+							}
+						}
+					}
+				}
+			}
+		}
+		return "";
+	}
 }

+ 19 - 4
mec-web/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -15,10 +15,10 @@
         <result column="update_time_" property="updateTime"/>
         <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <association property="musicGroupId" javaType="com.ym.mec.web.dal.entity.MusicGroup" >
-            <result column="name_" property="name"/>
-            <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        </association>
+        <!--<association property="musicGroupId" javaType="com.ym.mec.web.dal.entity.MusicGroup" >-->
+            <!--<result column="name_" property="name"/>-->
+            <!--<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>-->
+        <!--</association>-->
     </resultMap>
 
     <resultMap type="com.ym.mec.web.dal.entity.ClassGroup4Teacher" id="ClassGroup4Teacher">
@@ -125,4 +125,19 @@
         OR
         c.assistant_teacher_id_ = #{teacherId}
     </select>
+    <select id="findAllMixClassGroup" resultMap="ClassGroup">
+        SELECT
+            *
+        FROM
+            class_group cg
+        WHERE cg.type_="MIX" AND cg.music_group_id_=#{musicGroupId}
+    </select>
+    <select id="findMixClassChildClassGroup" resultMap="ClassGroup">
+        SELECT
+            cg.*
+        FROM
+            class_group_relation cgr
+        LEFT JOIN class_group cg ON cgr.class_group_id_=cg.id_
+        WHERE cgr.sub_class_group_id_=#{mixClassGroupId}
+    </select>
 </mapper>

+ 68 - 0
mec-web/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -20,6 +20,22 @@
         <result column="update_time_" property="updateTime"/>
     </resultMap>
 
+    <resultMap type="com.ym.mec.web.dal.dto.CourseScheduleDto" id="courseScheduleDto">
+        <result column="id_" property="id"/>
+        <result column="class_group_id_" property="classGroupId"/>
+        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="subsidy_" property="subsidy"/>
+        <result column="class_date_" property="classDate"/>
+        <result column="start_class_time_" property="startClassTime"/>
+        <result column="end_class_time_" property="endClassTime"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="actual_teacher_id_" property="actualTeacherId"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="name_" property="classGroupName"/>
+        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+    </resultMap>
+
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="CourseSchedule">
 		SELECT * FROM course_schedule WHERE id_ = #{id} 
@@ -43,6 +59,15 @@
         VALUES(#{id},#{classGroupId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},#{endClassTime},#{teacherId},#{actualTeacherId},now(),now())
     </insert>
 
+    <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+        INSERT INTO course_schedule
+        (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_)
+        VALUE
+        <foreach collection="list" item="course" separator=",">
+            (#{course.id},#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.actualTeacherId},now(),now())
+        </foreach>
+    </insert>
+
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.web.dal.entity.CourseSchedule">
         UPDATE course_schedule
@@ -83,6 +108,15 @@
 		DELETE FROM course_schedule WHERE id_ = #{id} 
 	</delete>
 
+    <delete id="deleteCourseSchedulesByMusicGroupID">
+        DELETE
+          cs
+        FROM
+            course_schedule cs
+        INNER JOIN class_group cg ON cs.class_group_id_=cg.id_
+        WHERE cg.music_group_id_=#{musicGroupID}
+    </delete>
+
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="CourseSchedule" parameterType="map">
         SELECT * FROM course_schedule ORDER BY id_
@@ -163,4 +197,38 @@
         LEFT JOIN `subject` s ON cg.subject_id_=s.id_
         WHERE cgsm.class_group_id_=#{classID} AND cgsm.status_!="DROP_OUT"
     </select>
+
+    <select id="countStudentInClass" resultType="java.lang.Integer">
+        SELECT
+            COUNT(class_group_id_)
+        FROM
+            class_group_student_mapper cgsm
+        WHERE class_group_id_ IN
+        <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        GROUP BY user_id_
+    </select>
+
+    <select id="getCourseSchedulesWithDate" resultMap="courseScheduleDto">
+        SELECT
+            cg.*,
+            cs.class_date_,
+            cs.start_class_time_
+        FROM
+            course_schedule cs
+        LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
+        WHERE cs.class_date_=DATE_FORMAT(#{classDate},'%Y%m%d')
+    </select>
+
+    <select id="getCourseScheduleDateByMonth" resultType="java.util.Date">
+        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')
+        AND cg.music_group_id_=#{musicGroupID}
+        GROUP BY cs.class_date_
+    </select>
 </mapper>

+ 55 - 0
mec-web/src/test/java/com/ym/webApplicationTest.java

@@ -2,7 +2,11 @@ package com.ym;
 
 import com.ym.mec.common.security.SecurityUtils;
 import com.ym.mec.web.WebApplication;
+import com.ym.mec.web.dal.dao.ClassGroupDao;
+import com.ym.mec.web.dal.dao.CourseScheduleDao;
 import com.ym.mec.web.dal.dao.StudentAttendanceDao;
+import com.ym.mec.web.dal.dto.CourseScheduleDto;
+import com.ym.mec.web.dal.entity.CourseSchedule;
 import com.ym.mec.web.dal.entity.StudentAttendance;
 import com.ym.mec.web.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.web.service.CourseScheduleService;
@@ -19,7 +23,10 @@ import org.springframework.web.client.RestTemplate;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Unit test for simple App.
@@ -39,6 +46,12 @@ public class webApplicationTest
     @Autowired
     private StudentAttendanceDao sad;
 
+    @Autowired
+    private ClassGroupDao cgd;
+
+    @Autowired
+    private CourseScheduleDao csd;
+
     @Test
     public void test(){
 
@@ -76,4 +89,46 @@ public class webApplicationTest
         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new StringBuilder("2019-09-11 15:10:01").toString()));
     }
 
+    @Test
+    public void test3() throws ParseException {
+        List<CourseSchedule> courseSchedules=new ArrayList<>();
+        CourseSchedule cs1=new CourseSchedule();
+        cs1.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
+        cs1.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 15:00:00"));
+        cs1.setClassGroupId(1);
+        courseSchedules.add(cs1);
+        CourseSchedule cs2=new CourseSchedule();
+        cs2.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
+        cs2.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 15:00:00"));
+        cs2.setClassGroupId(1);
+        courseSchedules.add(cs2);
+        CourseSchedule cs3=new CourseSchedule();
+        cs3.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
+        cs3.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 16:00:00"));
+        cs3.setClassGroupId(1);
+        courseSchedules.add(cs3);
+        Map<Date, List<CourseSchedule>> collect = courseSchedules.stream().collect(
+                Collectors.groupingBy(CourseSchedule::getClassDate));
+        for(Date keyDate:collect.keySet()){
+            List<CourseSchedule> currentCourses=collect.get(keyDate);
+            Map<Date, List<CourseSchedule>> collect1 = currentCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getStartClassTime));
+            System.out.println(collect1.size());
+        }
+    }
+
+    @Test
+    public void test4(){
+        List<Integer> temp=new ArrayList<>();
+        temp.add(1);
+        temp.add(2);
+        Integer[] integers = csd.countStudentInClass(temp);
+        System.out.println(integers.length);
+    }
+
+    @Test
+    public void test5() throws ParseException {
+        List<CourseScheduleDto> courseSchedules = csd.getCourseSchedulesWithDate(new SimpleDateFormat("yyyyMMdd").parse("20190912"));
+        System.out.println(courseSchedules.size());
+    }
+
 }