Ver Fonte

课程查询加上预排课条件

zouxuan há 4 anos atrás
pai
commit
4e62d10af0

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

@@ -1,6 +1,5 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
@@ -9,7 +8,6 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
-
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -1112,7 +1110,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                                          @Param("preCourseFlag") Integer preCourseFlag);
 
     /**
-     * 根据班级编号count总课时
+     * 根据班级编号count预排课总课时
      *
      * @param classGroupIds
      * @return
@@ -1319,6 +1317,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
      */
     List<CourseSchedule> queryTeacherCourse(Map<String, Object> params);
+
     int countTeacherCourse(Map<String, Object> params);
 
     /**

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

@@ -629,14 +629,14 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 */
 	void courseRepeatCheck();
 
-	/**
-	 * @describe 将被合并的课程替换为主课程
-	 * @author qnc99
-	 * @date 2020/12/7 0007
-	 * @param courseSchedules:
-	 * @return void
-	 */
-	List<CourseSchedule> classGroupNotStartMergeCourseReplace(Long classGroupId);
+//	/**
+//	 * @describe 将被合并的课程替换为主课程
+//	 * @author qnc99
+//	 * @date 2020/12/7 0007
+//	 * @param courseSchedules:
+//	 * @return void
+//	 */
+//	List<CourseSchedule> classGroupNotStartMergeCourseReplace(Long classGroupId);
 
 	/**
 	 * @describe 课程合并

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

@@ -5702,37 +5702,37 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		System.out.println("重复课程数量:" + courseRepeatIdMap.size());
 	}
 
-	@Override
-	public List<CourseSchedule> classGroupNotStartMergeCourseReplace(Long classGroupId) {
-		List<CourseSchedule> courseSchedules = courseScheduleDao.getClassGroupCourses(classGroupId);
-		Set<Long> newCourseIds = courseSchedules.stream().filter(c -> Objects.nonNull(c.getNewCourseId())).map(CourseSchedule::getNewCourseId).collect(Collectors.toSet());
-		if(CollectionUtils.isEmpty(newCourseIds)){
-			return Collections.EMPTY_LIST;
-		}
-
-		Date now = new Date();
-
-		List<CourseSchedule> mainCourses = courseScheduleDao.findByCourseScheduleIds(new ArrayList<>(newCourseIds));
-		Map<Long, CourseSchedule> idCourseMap = mainCourses.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c, (c1, c2) -> c1));
-		Iterator<CourseSchedule> iterator = courseSchedules.iterator();
-		while (iterator.hasNext()){
-			CourseSchedule next = iterator.next();
-			if(Objects.isNull(next.getNewCourseId())){
-				continue;
-			}
-			CourseSchedule mainCourse = idCourseMap.get(next.getNewCourseId());
-			if(next.getClassGroupId().equals(mainCourse.getClassGroupId())||mainCourse.getStartClassTime().compareTo(now)<0){
-				iterator.remove();
-			}
-		}
-		for (CourseSchedule courseSchedule : courseSchedules) {
-			if(Objects.isNull(courseSchedule.getNewCourseId())){
-				continue;
-			}
-			courseSchedule = idCourseMap.get(courseSchedule.getId());
-		}
-		return courseSchedules;
-	}
+//	@Override
+//	public List<CourseSchedule> classGroupNotStartMergeCourseReplace(Long classGroupId) {
+//		List<CourseSchedule> courseSchedules = courseScheduleDao.getClassGroupCourses(classGroupId);
+//		Set<Long> newCourseIds = courseSchedules.stream().filter(c -> Objects.nonNull(c.getNewCourseId())).map(CourseSchedule::getNewCourseId).collect(Collectors.toSet());
+//		if(CollectionUtils.isEmpty(newCourseIds)){
+//			return Collections.EMPTY_LIST;
+//		}
+//
+//		Date now = new Date();
+//
+//		List<CourseSchedule> mainCourses = courseScheduleDao.findByCourseScheduleIds(new ArrayList<>(newCourseIds));
+//		Map<Long, CourseSchedule> idCourseMap = mainCourses.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c, (c1, c2) -> c1));
+//		Iterator<CourseSchedule> iterator = courseSchedules.iterator();
+//		while (iterator.hasNext()){
+//			CourseSchedule next = iterator.next();
+//			if(Objects.isNull(next.getNewCourseId())){
+//				continue;
+//			}
+//			CourseSchedule mainCourse = idCourseMap.get(next.getNewCourseId());
+//			if(next.getClassGroupId().equals(mainCourse.getClassGroupId())||mainCourse.getStartClassTime().compareTo(now)<0){
+//				iterator.remove();
+//			}
+//		}
+//		for (CourseSchedule courseSchedule : courseSchedules) {
+//			if(Objects.isNull(courseSchedule.getNewCourseId())){
+//				continue;
+//			}
+//			courseSchedule = idCourseMap.get(courseSchedule.getId());
+//		}
+//		return courseSchedules;
+//	}
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)

+ 82 - 79
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -480,7 +480,7 @@
         WHERE cs.actual_teacher_id_ = #{teacherId}
           AND (CONCAT(cs.class_date_, ' ', cs.end_class_time_) BETWEEN #{startTime} AND #{endTime})
           AND cs.schoole_id_ = #{schoolId}
-          AND ta.sign_in_time_ IS NOT NULL
+          AND ta.sign_in_time_ IS NOT NULL AND cs.pre_course_flag_ = 0
         ORDER BY cs.id_
     </select>
 
@@ -556,7 +556,7 @@
                 LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
             </if>
         WHERE
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
             <if test="organIds!=null and organIds.size()>0">
                 AND cs.organ_id_ IN
                 <foreach collection="organIds" item="organId" separator="," open="(" close=")">
@@ -596,7 +596,7 @@
                 LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
             </if>
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
         AND cs.id_ IS NOT NULL
         <if test="organIds!=null and organIds.size()>0">
             AND cs.organ_id_ IN
@@ -650,7 +650,7 @@
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
-        AND cssp.user_id_ = #{studentId}
+        AND cssp.user_id_ = #{studentId} AND cs.pre_course_flag_ = 0
         <if test="quitClassGroupIds != null and quitClassGroupIds.size()>0">
             AND cssp.class_group_id_ NOT IN
             <foreach collection="quitClassGroupIds" item="quitClassGroupId" open="(" close=")" separator=",">
@@ -697,7 +697,7 @@
         <if test="type!=null and type!=''">
             AND cs.type_=#{type}
         </if>
-        AND csts.user_id_ = #{teacherId}
+        AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
         ORDER BY start_class_time_
     </select>
 
@@ -784,7 +784,7 @@
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
           AND cs.class_date_ = DATE_FORMAT(#{classDate}, '%Y%m%d')
           AND csts.user_id_ = #{teacherId}
-          AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) &lt; NOW()
+          AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) &lt; NOW() AND cs.pre_course_flag_ = 0
         ORDER BY start_class_time_
     </select>
 
@@ -794,7 +794,7 @@
                  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}
-          AND cg.group_type_ = 'MUSIC'
+          AND cg.group_type_ = 'MUSIC' AND cs.pre_course_flag_ = 0
         GROUP BY cs.class_date_
     </select>
 
@@ -893,7 +893,7 @@
     <!-- 获取班级未开始的课程 -->
     <select id="findClassGroupNoStartCourseSchedules" resultMap="CourseSchedule">
         SELECT * FROM course_schedule
-        WHERE status_ = 'NOT_START'
+        WHERE status_ = 'NOT_START' AND pre_course_flag_ = 0
         AND class_group_id_ IN
         <foreach collection="classGroupIds" item="classGroupId" index="index" open="(" close=")" separator=",">
             #{classGroupId}
@@ -912,7 +912,7 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-        AND cssp.user_id_ = #{studentId}
+        AND cssp.user_id_ = #{studentId} AND cs.pre_course_flag_ = 0
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
         </if>
@@ -936,7 +936,7 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-        AND csts.user_id_ = #{teacherId}
+        AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
         </if>
@@ -989,7 +989,7 @@
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
         AND csts.user_id_ = #{teacherId}
-        AND cg.del_flag_ = 0
+        AND cg.del_flag_ = 0 AND cs.pre_course_flag_ = 0
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
         </if>
@@ -1033,7 +1033,7 @@
                 LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
             </if>
         WHERE
-            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
             <if test="organIds!=null and organIds.size()>0">
                 AND cs.organ_id_ IN
                 <foreach collection="organIds" item="organId" separator="," open="(" close=")">
@@ -1073,7 +1073,7 @@
             cssp.user_id_=#{userId}
             AND cs.status_ != 'NOT_START'
             AND cs.del_flag_ = 0
-            AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
+            AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL) AND cs.pre_course_flag_ = 0
             <if test="teachMode!=null and teachMode!=''">
                 AND cs.teach_mode_=#{teachMode}
             </if>
@@ -1142,7 +1142,7 @@
             AND cs.status_ = 'NOT_START'
             AND cgsm.user_id_ = #{userId}
             AND cs.class_date_ = DATE_FORMAT(#{date}, '%Y%m%d')
-            AND cgsm.status_ != 'QUIT'
+            AND cgsm.status_ != 'QUIT' AND cs.pre_course_flag_ = 0
         ORDER BY cs.class_date_, cs.start_class_time_
     </select>
     <select id="findCourseScheduleByMusicGroup" resultMap="CourseSchedule">
@@ -1156,7 +1156,7 @@
         SELECT COUNT(*)
         FROM course_schedule
         WHERE class_group_id_ = #{classGroupId}
-          AND CONCAT(class_date_, ' ', end_class_time_) &lt;= #{startClassTime}
+          AND CONCAT(class_date_, ' ', end_class_time_) &lt;= #{startClassTime} AND pre_course_flag_ = 0
     </select>
     <select id="getCourseSchedules" resultMap="courseScheduleDto">
         SELECT cs.type_,
@@ -1374,7 +1374,7 @@
             update_time_ = NOW()
         WHERE music_group_id_ = #{groupId}
           AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-          AND NOW() &lt; CONCAT(class_date_,' ', start_class_time_);
+          AND NOW() &lt; CONCAT(class_date_,' ', start_class_time_)
     </update>
     <update id="batchUpdateLockByCourseIds">
         UPDATE course_schedule
@@ -1386,7 +1386,7 @@
         <foreach collection="courseId" open="(" close=")" item="item" separator=",">
             #{item}
         </foreach>
-    </update>
+        </update>
 
     <select id="queryNoSignInListByBeforeMinutes" resultMap="CourseSchedule">
         SELECT cs.*
@@ -1422,7 +1422,7 @@
         <where>
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-            AND cs.class_group_id_ = #{classGroupId}
+            AND cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
             <if test="userId != null">
                 AND csts.user_id_ = #{userId}
             </if>
@@ -1474,7 +1474,7 @@
 
     <sql id="teacherGroupCourseQueryCondition">
         <where>
-            cs.actual_teacher_id_=#{teacherId}
+            cs.actual_teacher_id_=#{teacherId} AND cs.pre_course_flag_ = 0
             AND cs.music_group_id_ = #{groupId}
             AND cs.group_type_ = #{groupType}
         </where>
@@ -1537,7 +1537,7 @@
         LEFT JOIN sys_user ssu ON sa.user_id_=ssu.id_
         LEFT JOIN school s ON cs.schoole_id_ = s.id_
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
         AND sa.class_group_id_=#{classGroupId}
         <if test="userId != null">
             AND sa.teacher_id_=#{userId}
@@ -1571,7 +1571,7 @@
         student_attendance sa
         LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
         AND sa.class_group_id_=#{classGroupId}
         <if test="userId != null">
             AND sa.teacher_id_=#{userId}
@@ -1592,7 +1592,7 @@
         FROM class_group cg
                  LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-          AND music_group_id_ = #{musicGroupId}
+          AND cg.music_group_id_ = #{musicGroupId} AND cs.pre_course_flag_ = 0
         GROUP BY cg.id_
     </select>
     <select id="findCourseScheduleCurrentTimes" resultType="java.util.Map">
@@ -1643,7 +1643,7 @@
         LEFT JOIN music_group mg ON cs.music_group_id_=mg.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND cs.teacher_id_=#{teacherId}
+        AND cs.teacher_id_=#{teacherId} AND cs.pre_course_flag_ = 0
         and CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) between #{startTime} and #{endTime}
         <if test="type != null">
             and cs.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -1659,7 +1659,7 @@
         </if>
         union all
         select ncs.* from course_schedule cs left join course_schedule ncs on ncs.id_ = cs.new_course_id_
-        where cs.new_course_id_ &gt; 0 and cs.class_group_id_ = #{classGroupId}
+        where cs.new_course_id_ &gt; 0 and cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
         <if test="status != null">
             and ncs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
@@ -1864,7 +1864,7 @@
         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))
+        where class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY)) AND cs.pre_course_flag_ = 0
         group by cssp.user_id_
     </select>
 
@@ -1873,7 +1873,7 @@
         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'
+          and cs.status_ = 'NOT_START' AND cs.pre_course_flag_ = 0
     </select>
 
     <select id="queryTeacherCoursesTimesOfTomorrow" resultMap="Mapper">
@@ -1881,7 +1881,7 @@
         from course_schedule cs
                  right join course_schedule_teacher_salary cssp on cs.id_ = cssp.course_schedule_id_
                  left join sys_user u on u.id_ = cssp.user_id_
-        where (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY))
+        where (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY)) AND cs.pre_course_flag_ = 0
         group by cssp.user_id_
     </select>
 
@@ -1890,7 +1890,7 @@
         from course_schedule cs
                  right join course_schedule_teacher_salary cssp on cs.id_ = cssp.course_schedule_id_
         where CONCAT(cs.class_date_, ' ', cs.start_class_time_) &lt; DATE_ADD(now(), INTERVAL 30 MINUTE)
-          and cs.status_ = 'NOT_START'
+          and cs.status_ = 'NOT_START' AND cs.pre_course_flag_ = 0
     </select>
 
     <resultMap id="IntegerAndIntegerListDto" type="com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto">
@@ -1952,7 +1952,7 @@
             (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
           AND cs.group_type_ = 'MUSIC'
-          AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0)
+          AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0) AND cs.pre_course_flag_ = 0
     </select>
 
     <select id="countIsSalaryGroupTypes" resultType="int">
@@ -2015,7 +2015,7 @@
                cs.schoole_id_
         from course_schedule cs
                  LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
-        where cs.class_group_id_ = #{classGroupId}
+        where cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
           AND cs.status_ = #{status}
     </select>
     <select id="findByClassGroups" resultMap="CourseSchedule">
@@ -2046,6 +2046,7 @@
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>
+        AND cs.pre_course_flag_ = 0
         ORDER BY start_class_time_
     </select>
     <select id="findStudentMap" resultType="java.util.Map">
@@ -2081,7 +2082,7 @@
     <select id="findOneCourseScheduleByClassGroupId" resultMap="CourseSchedule">
         SELECT *
         FROM course_schedule
-        WHERE class_group_id_ = #{classGroupId}
+        WHERE class_group_id_ = #{classGroupId}  AND pre_course_flag_ = 0
         LIMIT 1
     </select>
     <select id="countClassGroupCourseTimes" resultType="map">
@@ -2096,7 +2097,7 @@
                 <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
                     #{classGroupId}
                 </foreach>
-                AND del_flag_ = 0
+                AND del_flag_ = 0 AND pre_course_flag_ = 0
             </if>
         </where>
 
@@ -2106,7 +2107,7 @@
         SELECT COUNT(1)
         FROM course_schedule
         WHERE class_group_id_ = #{classGroupId}
-          AND (del_flag_ != 1 OR del_flag_ IS NULL)
+          AND (del_flag_ != 1 OR del_flag_ IS NULL) AND pre_course_flag_ = 0
     </select>
     <select id="findMusicGroupCourseSchedules" resultMap="CourseSchedule">
         SELECT cs.*
@@ -2114,14 +2115,14 @@
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE cg.music_group_id_ = #{musicGroupId}
           AND cs.group_type_ = #{groupType}
-          AND status_ = #{status}
+          AND status_ = #{status} AND cs.pre_course_flag_ = 0
     </select>
     <select id="findMusicGroupAllCourseSchedules" resultMap="CourseSchedule">
         SELECT cs.*
         FROM course_schedule cs
                  LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE cg.music_group_id_ = #{musicGroupId}
-          AND cs.group_type_ = #{groupType}
+          AND cs.group_type_ = #{groupType} AND cs.pre_course_flag_ = 0
     </select>
     <select id="findMusicGroupCourseSchedulesWithStudent" resultMap="CourseSchedule">
         SELECT cs.*
@@ -2131,7 +2132,7 @@
           AND cssp.music_group_id_ = #{musicGroupId}
           AND cssp.group_type_ = #{groupType}
           AND cs.status_ = #{status}
-          AND cssp.user_id_ = #{userId}
+          AND cssp.user_id_ = #{userId} AND cs.pre_course_flag_ = 0
     </select>
 
     <delete id="deleteMusicGroupCourseSchedulesWithStudent">
@@ -2229,7 +2230,7 @@
         FROM course_schedule
         WHERE class_group_id_ = #{classGroupId}
           AND CONCAT(class_date_, ' ', end_class_time_) &lt; #{currentCourseDate}
-          AND del_flag_ = 0
+          AND del_flag_ = 0 AND pre_course_flag_ = 0
     </select>
     <select id="countCourseScheduleByMusicGroupId" resultType="java.lang.Integer">
         SELECT count(cs.id_)
@@ -2237,7 +2238,7 @@
         WHERE cs.music_group_id_ = #{musicGroupId}
           and cs.group_type_ = 'MUSIC'
           and cs.status_ != 'OVER'
-          AND cs.del_flag_ = 0
+          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
         LIMIT 1
     </select>
     <select id="findClassGroupCourseSchedules" resultMap="CourseSchedule">
@@ -2262,7 +2263,7 @@
                cs.schoole_id_
         FROM course_schedule cs
         WHERE cs.class_group_id_ = #{classGroupId}
-          AND (cs.del_flag_ = 0 OR cs.del_flag_ IS NULL)
+          AND (cs.del_flag_ = 0 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
     </select>
     <select id="countVipGroupCourses" resultType="int">
         SELECT count(cs.id_)
@@ -2333,7 +2334,7 @@
         <if test="preCourseFlag != null">
             AND cs.pre_course_flag_ = #{preCourseFlag}
         </if>
-        AND cs.del_flag_ = 0
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
         GROUP BY cs.class_group_id_
     </select>
     <select id="countPreTotalNumByClassGroupId" resultType="java.util.Map">
@@ -2354,7 +2355,7 @@
         <if test="teacherId != null">
             AND cs.actual_teacher_id_ = #{teacherId}
         </if>
-        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ = 0
         GROUP BY cs.class_group_id_
     </select>
 
@@ -2381,7 +2382,7 @@
                cssp.expect_price_
         FROM course_schedule cs
                  LEFT JOIN course_schedule_student_payment cssp ON cs.id_ = cssp.course_schedule_id_
-        WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.pre_course_flag_ = 0
           <if test="groupType != null">
           AND cs.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
           </if>
@@ -2424,13 +2425,13 @@
         SELECT MIN(CONCAT(class_date_, ' ', start_class_time_))
         FROM course_schedule
         WHERE group_type_ = #{groupType}
-          AND music_group_id_ = #{groupId}
+          AND music_group_id_ = #{groupId} AND pre_course_flag_ = 0
     </select>
     <select id="getMaxCourseTime" resultType="java.util.Date">
         SELECT MAX(CONCAT(class_date_, ' ', end_class_time_))
         FROM course_schedule
         WHERE group_type_ = #{groupType}
-          AND music_group_id_ = #{groupId}
+          AND music_group_id_ = #{groupId} AND pre_course_flag_ = 0
     </select>
     <select id="findSurplusCourseWithGroup" resultMap="CourseSchedule">
         SELECT <include refid="resultSql"/>
@@ -2452,12 +2453,12 @@
         SELECT COUNT(*)
         FROM course_schedule
         WHERE class_group_id_ = #{classGroupId}
-          AND CONCAT(class_date_, ' ', end_class_time_) &lt; NOW()
+          AND CONCAT(class_date_, ' ', end_class_time_) &lt; NOW() AND pre_course_flag_ = 0
     </select>
 
     <sql id="endFindCourseSchedulesCondition">
         <where>
-            cs.del_flag_ = 0
+            cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
             <include refid="queryVipCourseScheduleIds"/>
         </where>
     </sql>
@@ -2546,7 +2547,7 @@
         WHERE FIND_IN_SET(cs.class_group_id_, #{classGroupIds})
           AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) &gt; NOW()
           AND cs.class_date_ &gt;= DATE_FORMAT(#{fromDate}, "%Y-%m-%d")
-          AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0)
+          AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0) AND cs.pre_course_flag_ = 0
     </select>
 
     <select id="findGroupCourseStartTime" resultType="java.util.Date">
@@ -2847,7 +2848,7 @@
           AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
           AND cs.class_group_id_ = #{courseSchedule.classGroupId}
-          AND (NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_) OR sa.sign_in_time_ IS NOT NULL)
+          AND (NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_) OR sa.sign_in_time_ IS NOT NULL) AND cs.pre_course_flag_ = 0
         LIMIT 1
     </select>
     <select id="queryTeacherContinueCourse" resultMap="CourseSchedule">
@@ -2858,7 +2859,7 @@
           AND TIMESTAMPDIFF(MINUTE, #{endDateTime}, CONCAT(cs.class_date_, ' ', cs.start_class_time_)) &lt;= #{continueCourseTime}
           AND cs.teacher_id_ = #{courseSchedule.teacherId}
           AND cs.class_group_id_ = #{courseSchedule.classGroupId}
-          AND (NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_) OR ta.sign_in_time_ IS NOT NULL)
+          AND (NOW() > CONCAT(cs.class_date_,' ', cs.start_class_time_) OR ta.sign_in_time_ IS NOT NULL) AND cs.pre_course_flag_ = 0
         LIMIT 1
     </select>
     <select id="getSingleClassMinutes" resultType="java.lang.Integer">
@@ -2889,7 +2890,7 @@
             course_schedule cs
         WHERE CONCAT(cs.class_date_, ' ', cs.start_class_time_) &lt; NOW()
             AND cs.group_type_ = #{groupType}
-            AND cs.music_group_id_ = #{groupId}
+            AND cs.music_group_id_ = #{groupId} AND cs.pre_course_flag_ = 0
     </select>
     <select id="findUserCourses" resultMap="CourseSchedule">
         SELECT
@@ -2912,7 +2913,7 @@
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
             #{teacherId}
         </foreach>
-        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL )
+        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ = 0
     </select>
     <select id="findUserCourses2" resultMap="CourseSchedule">
         SELECT
@@ -2935,7 +2936,7 @@
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
             #{teacherId}
         </foreach>
-        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL )
+        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ = 0
     </select>
     <select id="findUserCourses3" resultMap="CourseSchedule">
         SELECT
@@ -2957,7 +2958,7 @@
         <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
             #{teacherId}
         </foreach>
-        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL )
+        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ = 0
     </select>
     <select id="findUserCoursesWithPay" resultMap="CourseSchedule">
         SELECT
@@ -3000,7 +3001,7 @@
                 AND del_flag_ = 0) c
         WHERE cs.class_group_id_ = c.class_group_id_
           AND CONCAT(cs.class_date_, " ", cs.start_class_time_) &lt;= c.class_date_
-          AND cs.del_flag_ = 0
+          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
     </select>
     <select id="findCourseSchedulesByClassGroups" resultMap="CourseSchedule">
         SELECT
@@ -3032,7 +3033,7 @@
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>
-        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL )
+        AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL ) AND cs.pre_course_flag_ = 0
         ORDER BY start_class_time_
     </select>
 
@@ -3182,7 +3183,7 @@
         cs.status_
         FROM course_schedule cs
         LEFT JOIN course_schedule_evaluate cse ON cs.id_ = cse.course_schedule_id_
-        WHERE cs.group_type_ = #{groupType}
+        WHERE cs.group_type_ = #{groupType} AND cs.pre_course_flag_ = 0
         <if test="groupId != null">
             AND cs.music_group_id_ = #{groupId}
         </if>
@@ -3197,7 +3198,7 @@
         FROM course_schedule cs
         WHERE cs.music_group_id_ = #{groupId}
           AND cs.group_type_ = #{groupType}
-          AND NOW() > CONCAT(cs.class_date_, ' ', cs.end_class_time_)
+          AND NOW() > CONCAT(cs.class_date_, ' ', cs.end_class_time_) AND cs.pre_course_flag_ = 0
         ORDER BY cs.class_date_, cs.end_class_time_ ASC
         LIMIT 1
     </select>
@@ -3256,7 +3257,7 @@
         FROM course_schedule cs
         WHERE cs.music_group_id_ = #{groupId}
           AND cs.group_type_ = #{groupType}
-          AND cs.del_flag_ = 0
+          AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
     </select>
     <select id="findCourseByGroupIds" resultMap="CourseSchedule">
         SELECT
@@ -3264,7 +3265,7 @@
         FROM course_schedule cs
         WHERE cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         AND cs.del_flag_ = 0
-        AND (new_course_id_ is null or new_course_id_ = 0)
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.pre_course_flag_ = 0
         <if test="groupIds!=null and groupIds.size()>0">
             AND cs.music_group_id_ IN
             <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
@@ -3281,7 +3282,7 @@
           AND ta.sign_in_time_ IS NOT NULL
           AND MONTH(ta.sign_in_time_) = #{month}
           AND cs.teach_mode_ = 'ONLINE'
-          AND ta.teacher_id_ = cs.actual_teacher_id_
+          AND ta.teacher_id_ = cs.actual_teacher_id_ AND cs.pre_course_flag_ = 0
         GROUP BY ta.course_schedule_id_
         HAVING COUNT(sa.id_) > 0
     </select>
@@ -3383,7 +3384,7 @@
         WHERE cs.class_group_id_ = #{classGroupId}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) &lt;= #{continueCourseTime}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) >= 0
-        AND cs.actual_teacher_id_ = #{teacherId}
+        AND cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
         ORDER BY cs.class_date_ DESC,cs.end_class_time_ DESC
         LIMIT 1
     </select>
@@ -3492,14 +3493,14 @@
                cs.organ_id_ FROM course_schedule cs
         LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
         WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIds}) AND csts.teacher_role_ = #{teacherRole}
-        AND csts.user_id_ = #{teacherId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
+        AND csts.user_id_ = #{teacherId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
     </select>
     <select id="queryHasReatClass" resultType="java.util.Map">
         SELECT cgtm.class_group_id_ 'key',CASE WHEN COUNT(cs.id_) > 0 THEN 1 ELSE 0 END 'value'
         FROM class_group_teacher_mapper cgtm
         LEFT JOIN course_schedule cs ON cs.class_group_id_ = cgtm.class_group_id_
         AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
-        WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'MUSIC' AND cgtm.class_group_id_ IN
+        WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'MUSIC' AND cs.pre_course_flag_ = 0 AND cgtm.class_group_id_ IN
         <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
             #{classGroupId}
         </foreach>
@@ -3564,7 +3565,7 @@
             LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
         WHERE csts.user_id_=#{teacherId}
         AND cs.class_date_ = DATE_FORMAT(#{startClassTime},'%Y-%m-%d')
-        AND cs.start_class_time_ &lt; DATE_FORMAT(#{startClassTime},'%H:%i:%S')
+        AND cs.start_class_time_ &lt; DATE_FORMAT(#{startClassTime},'%H:%i:%S') AND cs.pre_course_flag_ = 0
         AND ta.sign_in_status_ IS NOT NULL
         ORDER BY start_class_time_ DESC LIMIT 1;
     </select>
@@ -3574,12 +3575,12 @@
 		(SELECT cs.type_ course_type_,SUM(TIMESTAMPDIFF(MINUTE,STR_TO_DATE(concat(cs.class_date_,' ',cs.start_class_time_),'%Y-%m-%d %H:%i:%s'),
         STR_TO_DATE(concat(cs.class_date_,' ',cs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_,COUNT(cs.id_) temp_merged_course_num_
 		FROM course_schedule cs WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.status_ = 'NOT_START'
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.member_flag_ = #{memberFlag} GROUP BY cs.type_
+		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.member_flag_ = #{memberFlag} AND cs.pre_course_flag_ = 0 GROUP BY cs.type_
 		UNION ALL
 		SELECT ncs.type_ course_type_,SUM(TIMESTAMPDIFF(MINUTE,STR_TO_DATE(concat(ncs.class_date_,' ',ncs.start_class_time_),'%Y-%m-%d %H:%i:%s'),
         STR_TO_DATE(concat(ncs.class_date_,' ',ncs.end_class_time_),'%Y-%m-%d %H:%i:%s'))) remain_minutes_,COUNT(cs.id_) temp_merged_course_num_
 		FROM course_schedule cs LEFT JOIN course_schedule ncs ON ncs.id_ = cs.new_course_id_
-		WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.new_course_id_ &gt; 0 AND ncs.status_ = 'NOT_START' AND cs.member_flag_ = #{memberFlag} GROUP BY ncs.type_) a
+		WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIdList}) AND cs.new_course_id_ &gt; 0 AND ncs.status_ = 'NOT_START' AND cs.pre_course_flag_ = 0 AND cs.member_flag_ = #{memberFlag} GROUP BY ncs.type_) a
 		group BY a.course_type_
     </select>
 
@@ -3623,14 +3624,15 @@
     </select>
 
     <select id="querySubCourseNumMap" resultType="java.util.Map">
-        SELECT cs.type_ 'key',COUNT(CASE WHEN (CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()) THEN 1 ELSE NULL END) 'value' FROM course_schedule cs
-        WHERE cs.class_group_id_ = #{classGroupId}
+        SELECT cs.type_ 'key',COUNT(CASE WHEN (CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()) THEN 1 ELSE NULL END) 'value'
+        FROM course_schedule cs
+        WHERE cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ = 0
         GROUP BY cs.type_
     </select>
     <select id="querySubCourseTimeMap" resultType="java.util.Map">
         SELECT cs.type_ 'key',SUM(ROUND((UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.end_class_time_)) - UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.start_class_time_)))/60)) 'value'
         FROM course_schedule cs
-        WHERE cs.class_group_id_ = #{classGroupId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
+        WHERE cs.class_group_id_ = #{classGroupId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
         GROUP BY cs.type_
     </select>
     <select id="findClassMaxCourseNumMap" resultType="java.util.Map">
@@ -3639,7 +3641,7 @@
         <foreach collection="classGroupIds" open="(" close=")" separator="," item="item">
             #{item}
         </foreach>
-        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW()
+        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
         GROUP BY cs.class_group_id_,cs.type_)c
         GROUP BY c.type_
     </select>
@@ -3656,7 +3658,7 @@
                 #{item}
             </foreach>
         </if>
-        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW()
+        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
         GROUP BY cssp.course_schedule_id_
     </select>
     <select id="findNoStudentCourseIds" resultType="Long">
@@ -3674,7 +3676,7 @@
         <foreach collection="classGroupIds" open="(" close=")" separator="," item="item">
             #{item}
         </foreach>
-        AND new_course_id_ IS NOT NULL
+        AND new_course_id_ IS NOT NULL AND pre_course_flag_ = 0
         AND status_ = 'NOT_START'
     </select>
     <select id="getLock" resultMap="CourseSchedule">
@@ -3692,6 +3694,7 @@
             <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
                 #{courseId}
             </foreach>
+        AND pre_course_flag_ = 0
         GROUP BY
             new_course_id_
     </select>
@@ -3714,7 +3717,7 @@
             LEFT JOIN practice_group vg ON vg.id_ = cs.music_group_id_
         </if>
         WHERE cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
-        AND vg.educational_teacher_id_ = #{teacherId}
+        AND vg.educational_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
         <include refid="global.limit"/>
     </select>
     <select id="countStudentNoStartCourse" resultType="int">
@@ -3727,7 +3730,7 @@
             LEFT JOIN practice_group vg ON vg.id_ = cs.music_group_id_
         </if>
         WHERE cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
-        AND vg.educational_teacher_id_ = #{teacherId}
+        AND vg.educational_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
     </select>
     <select id="findCoursesByClassGroupIdAndCourseIds" resultMap="CourseSchedule">
         SELECT * FROM course_schedule WHERE class_group_id_ = #{classGroupId}
@@ -3743,7 +3746,7 @@
         WHERE cs.class_group_id_ = #{classGroupId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
     </select>
     <select id="getUnderwayCourseNum" resultType="int">
-        SELECT COUNT(*) FROM course_schedule WHERE music_group_id_ = #{musicGroupId} AND group_type_ = #{groupType} AND status_=#{status}
+        SELECT COUNT(*) FROM course_schedule WHERE music_group_id_ = #{musicGroupId} AND group_type_ = #{groupType} AND status_=#{status} AND pre_course_flag_ = 0
     </select>
 
     <select id="getMusicGroupCourseInfo" resultMap="CourseSchedule"><![CDATA[
@@ -3755,7 +3758,7 @@
             AND cs.start_class_time_ >= DATE_FORMAT(#{startTime},'%H:%i:%S')
             AND cs.end_class_time_ <= DATE_FORMAT(#{endTime},'%H:%i:%S')
             AND cs.group_type_ = 'MUSIC'
-            AND cs.teach_mode_ = 'OFFLINE'
+            AND cs.teach_mode_ = 'OFFLINE' AND cs.pre_course_flag_ = 0
         ORDER BY cs.id_ ASC
     ]]></select>
     <select id="findHasCourseStudent" resultType="java.lang.Integer">
@@ -3795,7 +3798,7 @@
         SELECT COUNT(*) FROM course_schedule
         WHERE music_group_id_ = #{musicGroupId}
         AND group_type_='MUSIC'
-        AND status_ IN ('UNDERWAY','OVER')
+        AND status_ IN ('UNDERWAY','OVER') AND pre_course_flag_ = 0
     </select>
 
     <select id="getMusicGroupsHasStartCourseNum" resultMap="CourseSchedule">
@@ -3819,7 +3822,7 @@
             ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
-            AND csts.user_id_ = #{teacherId}
+            AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
             <if test="startDay!=null and startDay!=''">
                 AND cs.class_date_ &gt;= #{startDay}
             </if>
@@ -3839,7 +3842,7 @@
             ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
-            AND cs.class_date_ &gt;= "2021-03-01"
+            AND cs.class_date_ &gt;= "2021-03-01" AND cs.pre_course_flag_ = 0
             <if test="teacherId!=null">
                 AND csts.user_id_ = #{teacherId}
             </if>