瀏覽代碼

sql优化

zouxuan 1 年之前
父節點
當前提交
21aee9abf5

+ 1 - 1
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -324,7 +324,7 @@
 		where cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 AND csts.user_id_ = #{userId} AND cs.status_ = 'OVER' AND cs.class_date_ BETWEEN #{startTime} AND DATE(NOW())
 		AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0))
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+		AND cs.merge_flag_ IN (0,1) AND cssp.id_ IS NOT NULL
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
 	</select>
 

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

@@ -5404,6 +5404,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 			//课程信息变更
 			courseSchedule.setNote("合并课程还原");
+			courseSchedule.setMergeFlag(0);
 
 			courseScheduleModifyLog.setCurrentCourseSchedule(JsonUtil.toJSONString(courseSchedule));
 			courseScheduleModifyLog.setOperatorId(operatorId);

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

@@ -648,7 +648,7 @@
         AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
         AND cs.del_flag_ = '0'
         AND cs.status_='NOT_START'
-        AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
+        AND cs.merge_flag_ IN (0,1)
         <if test="hasDesc != null and hasDesc == true">
             AND cg.desc_ IS NOT NULL
         </if>

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

@@ -9,7 +9,7 @@
     <select id="countLegalCourse" resultType="java.lang.Integer">
         SELECT COUNT(cs.id_) FROM course_schedule cs
         WHERE status_ = 'NOT_START' AND (cs.type_ IN ('SINGLE','TRAINING_SINGLE') OR cs.convert_flag_ = 1)
-        AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 AND cs.new_course_id_ IS NULL
+        AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 AND cs.merge_flag_ = 0
         AND cs.id_ IN
         <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
             #{id}

+ 32 - 29
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -202,7 +202,7 @@
 
     <sql id="courseIgnore">
         AND cs.del_flag_ = '0' AND cs.is_lock_ = 0 and cs.pre_course_flag_ != 1
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        AND cs.merge_flag_ IN (0,1)
     </sql>
 
     <!-- 根据主键查询一条记录 -->
@@ -995,8 +995,8 @@
         course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        cs.del_flag_ = '0'
+        AND cs.merge_flag_ IN (0,1)
         AND cssp.user_id_ = #{studentId} AND cs.pre_course_flag_ != 1
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
@@ -1158,8 +1158,8 @@
             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.pre_course_flag_ != 1
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+            AND cs.is_lock_=0 AND cs.pre_course_flag_ != 1
+            AND cs.merge_flag_ IN (0,1)
             <if test="teachMode!=null and teachMode!=''">
                 AND cs.teach_mode_=#{teachMode}
             </if>
@@ -1237,11 +1237,11 @@
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
         LEFT JOIN school s ON s.id_ = cs.schoole_id_
         LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
-        WHERE (cs.is_lock_ = 0 OR cs.is_lock_ IS NULL)
+        WHERE cs.is_lock_ = 0
         AND cs.status_ = 'NOT_START'
         AND cssp.user_id_ = #{userId}
         AND cs.class_date_ = DATE_FORMAT(#{date}, '%Y%m%d')
-        AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        AND cs.pre_course_flag_ != 1 AND cs.merge_flag_ IN (0,1)
         ORDER BY cs.class_date_, cs.start_class_time_
     </select>
     <select id="findCourseScheduleByMusicGroup" resultMap="CourseSchedule">
@@ -1781,7 +1781,7 @@
     <!-- 查找班级未开始的课程 -->
     <select id="findCoursesByClassGroupId" resultMap="CourseSchedule">
         SELECT * FROM course_schedule
-        WHERE class_group_id_ = #{classGroupId} AND del_flag_ = 0 and (new_course_id_ is null or new_course_id_ = 0)
+        WHERE class_group_id_ = #{classGroupId} AND del_flag_ = 0 and cs.merge_flag_ = 0
         <if test="status != null">
             and status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
@@ -1906,7 +1906,7 @@
         )
         and cs.tenant_id_ = #{tenantId}
         AND cs.del_flag_ = '0'
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+        AND cs.merge_flag_ IN (0,1)
     </select>
     <select id="findByClassDateAndStu" resultMap="CourseSchedule">
         SELECT
@@ -1930,7 +1930,7 @@
         )
         and cs.tenant_id_ = #{tenantId} AND cssp.user_id_ = #{userId}
         AND cs.del_flag_ = '0'
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+        AND cs.merge_flag_ IN (0,1)
     </select>
 
     <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">
@@ -1954,7 +1954,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)) AND cs.pre_course_flag_ != 1
+        where cs.merge_flag_ IN (0,1) AND class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY)) AND cs.pre_course_flag_ != 1
         group by cssp.user_id_
     </select>
 
@@ -2016,7 +2016,7 @@
                cs.schoole_id_
         FROM course_schedule cs
         WHERE
-            (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+            cs.merge_flag_ IN (0,1)
             AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
           AND cs.group_type_ = 'MUSIC'
           and cs.tenant_id_ = #{tenantId}
@@ -2388,7 +2388,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.pre_course_flag_ != 1
+        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = '0' AND cs.merge_flag_ IN (0,1) AND cs.pre_course_flag_ != 1
         GROUP BY cs.class_group_id_
     </select>
     <select id="countCurrentNumByClassId" resultType="java.lang.Integer">
@@ -2397,7 +2397,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.pre_course_flag_ != 1
+        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = '0' AND cs.merge_flag_ IN (0,1) AND cs.pre_course_flag_ != 1
     </select>
 
     <select id="countExpendNumByClassGroupId" resultType="java.util.Map">
@@ -2691,13 +2691,13 @@
             AND ta.complaints_content_ IS NULL AND ta.dispose_content_ IS NULL)
             AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
             AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+            AND cs.merge_flag_ IN (0,1) AND cssp.id_ IS NOT NULL
         </if>
         <if test="searchType == 'STUDENT_ERR_ATTENDANCE'">
             AND cs.status_ = 'OVER' AND cs.group_type_ IN ('COMM','DEMO','MUSIC','PRACTICE','VIP')
             AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0))
             AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+            AND cs.merge_flag_ IN (0,1) AND cssp.id_ IS NOT NULL
             AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
         </if>
         <if test="searchType == 'NO_ATTENDANCE'">
@@ -2705,11 +2705,11 @@
             AND cs.status_ = 'OVER' AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL
             AND ta.complaints_content_ IS NULL AND ta.dispose_content_ IS NULL
             AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+            AND cs.merge_flag_ IN (0,1)
         </if>
         <if test="searchType == 'COURSE_TIME_ERROR'">
             AND cs.status_ = 'NOT_START' AND cs.is_lock_ = 0 AND (cs.start_class_time_ &lt; #{courseStartTimeError} OR cs.end_class_time_ > #{courseEndTimeError})
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+            AND cs.merge_flag_ IN (0,1)
         </if>
         <if test="classGroupIds != null and classGroupIds.size() > 0">
             AND cs.class_group_id_ IN
@@ -2856,8 +2856,8 @@
                cs.schoole_id_
         FROM course_schedule_student_payment cssp
                  LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
-        WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND cs.pre_course_flag_ != 1
+        WHERE cs.del_flag_ = '0'
+        AND cs.merge_flag_ IN (0,1) AND cs.pre_course_flag_ != 1
         AND cssp.user_id_ = #{userId}
         <if test="groupType != null">
         and cs.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -3290,7 +3290,7 @@
         FROM course_schedule cs
         WHERE cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         AND cs.del_flag_ = '0'
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = 0) AND cs.pre_course_flag_ != 1
+        AND cs.merge_flag_ = 0 AND cs.pre_course_flag_ != 1
         AND cs.music_group_id_ IN
             <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
                 #{groupId}
@@ -3617,7 +3617,7 @@
 		(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} AND cs.pre_course_flag_ != 1 GROUP BY cs.type_
+		AND cs.merge_flag_ = 0 AND cs.member_flag_ = #{memberFlag} AND cs.pre_course_flag_ != 1 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_
@@ -3862,7 +3862,7 @@
             LEFT JOIN school s ON cs.schoole_id_=s.id_
         WHERE cs.del_flag_ = '0'
             AND cs.is_lock_=0
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+            AND cs.merge_flag_ IN (0,1)
             AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
             <if test="startDay!=null and startDay!=''">
                 AND cs.class_date_ &gt;= #{startDay}
@@ -3882,7 +3882,7 @@
         <where>
             cs.del_flag_ = '0'
             AND cs.is_lock_=0
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+            AND cs.merge_flag_ IN (0,1)
             AND cs.class_date_ &gt;= "2021-03-01" AND cs.pre_course_flag_ != 1
             <if test="teacherId!=null">
                 AND csts.user_id_ = #{teacherId}
@@ -4104,8 +4104,8 @@
     <sql id="queryCourseEvaluateSql">
         <where>
             cs.status_ = 'OVER' AND ta.sign_in_time_ IS NOT NULL AND cs.group_type_ IN ('COMM','DEMO','MUSIC','PRACTICE','VIP')
-            AND cs.del_flag_ = '0' AND (cs.is_lock_ = 0 OR cs.is_lock_ IS NULL) AND cs.pre_course_flag_ != 1
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND sa.id_ IS NOT NULL
+            AND cs.del_flag_ = '0' AND cs.is_lock_ = 0 AND cs.pre_course_flag_ != 1
+            AND cs.merge_flag_ IN (0,1) AND sa.id_ IS NOT NULL
             <if test="teacherId != null">
                 AND ta.teacher_id_ = #{teacherId}
             </if>
@@ -4372,7 +4372,8 @@
         select cs.type_ scheduleType,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 END) subCourseNum,
                COUNT(cs.id_) totalCourseNum
         from course_schedule cs
-        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = '0'
+        AND cs.pre_course_flag_ != 1 AND cs.merge_flag_ IN (0,1)
         AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
         AND cs.music_group_id_ IN
         <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
@@ -4390,7 +4391,8 @@
     <select id="getDailySummaryOfClassesForTheCurrentSemester" resultMap="DailySummaryMap">
         select cs.class_date_ courseDate,cs.type_ scheduleType,COUNT(cs.id_) totalCourseNum
         from course_schedule cs
-        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1
+        AND cs.merge_flag_ IN (0,1)
         AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
         AND cs.music_group_id_ IN
         <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
@@ -4402,7 +4404,8 @@
         select cs.id_ courseId,CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',cs.end_class_time_) classDate,cs.status_ courseStatus,cs.name_ courseName,
         actual_teacher_id_ teacherId,cs.music_group_id_ musicGroupId,cs.teach_mode_ teachMode
         from course_schedule cs
-        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1
+        AND cs.merge_flag_ IN (0,1)
         <if test="classDate != null and classDate != ''">
             AND cs.class_date_ = #{classDate}
         </if>

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -654,8 +654,8 @@
 	<select id="findNeedUpdateActualPriceStudentCourses" resultMap="CourseScheduleStudentPaymentDto">
 		SELECT
 			cssp.*,
-			CASE WHEN cs.new_course_id_ IS NULL THEN CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) ELSE CONCAT( cs1.class_date_, ' ', cs1.start_class_time_ ) END course_start_time_,
-			CASE WHEN cs.new_course_id_ IS NULL THEN cs.status_ ELSE cs1.status_ END course_status_
+			CASE WHEN cs.merge_flag_ = 0 THEN CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) ELSE CONCAT( cs1.class_date_, ' ', cs1.start_class_time_ ) END course_start_time_,
+			CASE WHEN cs.merge_flag_ = 0 THEN cs.status_ ELSE cs1.status_ END course_status_
 		FROM
 			course_schedule_student_payment cssp
 			LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_

+ 4 - 4
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -1012,7 +1012,7 @@
 		WHERE
 			cs.del_flag_ = '0'
 			AND cs.is_lock_=0
-			AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+			AND cs.merge_flag_ IN (0,1)
 			AND csts.settlement_time_ IS NOT NULL
 			AND csts.user_id_ = #{teacherId}
 			AND DATE_FORMAT( cs.class_date_, '%Y' ) = #{year}
@@ -1150,7 +1150,7 @@
 		WHERE
 		cs.del_flag_ = '0'
 			AND cs.is_lock_=0
-			AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+			AND cs.merge_flag_ IN (0,1)
 			AND csts.user_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
 			<if test="startClassDay!=null and startClassDay!=''">
 				AND cs.class_date_ &gt;= #{startClassDay}
@@ -1178,7 +1178,7 @@
 		WHERE
 		cs.del_flag_ = '0'
 			AND cs.is_lock_ = 0
-			AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
+			AND cs.merge_flag_ IN (0,1)
 			AND csts.user_id_ = #{teacherId}
 			<if test="year!=null">
 				AND YEAR ( cs.class_date_ ) = #{year}
@@ -1205,6 +1205,6 @@
 		WHERE cs.class_date_ = CURDATE()
 			AND cs.del_flag_ = '0'
 			AND cs.is_lock_ = 0
-			AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ ) AND cs.pre_course_flag_ != 1
+			AND cs.merge_flag_ IN (0,1) AND cs.pre_course_flag_ != 1
 	</select>
 </mapper>

+ 25 - 25
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -243,7 +243,7 @@
 				LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 			 WHERE
 				 cs.del_flag_ = '0' AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId} AND cs.is_lock_ = 0
-			   AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
+			   AND cs.merge_flag_ IN (0,1)
 			   AND cssp.group_type_ IN ('VIP', 'PRACTICE')
 			   AND DATE_FORMAT(cssp.create_time_, '%Y-%m-%d')&lt;=#{dayStr}
 				AND cs.class_date_ &gt;= #{courseStartDay}
@@ -455,10 +455,10 @@
 		FROM
 			course_schedule m
 		WHERE
-			m.del_flag_ = 0
-			AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
+			m.del_flag_ = '0'
+			AND m.is_lock_ = 0
 		  	AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-			AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
+			AND m.merge_flag_ IN (0,1)
 			AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
 			AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ != 1 and m.tenant_id_ = #{tenantId}
 			<if test="groupType!=null">
@@ -483,10 +483,10 @@
 		FROM
 			course_schedule m
 		WHERE
-			m.del_flag_ = 0 and m.tenant_id_ = #{tenantId}
-			AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
+			m.del_flag_ = '0' and m.tenant_id_ = #{tenantId}
+			AND m.is_lock_ = 0
 			AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-			AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
+			AND m.merge_flag_ IN (0,1)
 			AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
 			AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ != 1
 			<if test="groupType!=null">
@@ -509,9 +509,9 @@
 		FROM
 		course_schedule m
 		WHERE
-		m.del_flag_ = 0 and m.tenant_id_ = #{tenantId}
-		AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
-		AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
+		m.del_flag_ = '0' and m.tenant_id_ = #{tenantId}
+		AND m.is_lock_ = 0
+		AND m.merge_flag_ IN (0,1)
 		AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
 		AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ != 1
 		<if test="groupType!=null">
@@ -552,9 +552,9 @@
 		LEFT JOIN vip_group vg ON m.music_group_id_=vg.id_
 		LEFT JOIN vip_group_category vgc ON vg.vip_group_category_id_=vgc.id_
 		WHERE
-		m.del_flag_ = 0 and m.tenant_id_ = #{tenantId}
-		AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
-		AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
+		m.del_flag_ = '0' and m.tenant_id_ = #{tenantId}
+		AND m.is_lock_ = 0
+		AND m.merge_flag_ IN (0,1)
 		AND m.organ_id_ IS NOT NULL
 		<if test="groupType!=null">
 			AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -644,8 +644,8 @@
 			LEFT JOIN practice_group pg ON m.music_group_id_=pg.id_ AND m.group_type_='PRACTICE'
 		WHERE
 		cs.del_flag_ = '0'
-			AND cs.organ_id_ IS NOT NULL and cs.tenant_id_ = #{tenantId}
-			AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+			and cs.tenant_id_ = #{tenantId}
+			AND cs.merge_flag_ IN (0,1)
 			AND m.group_type_ IN ('VIP', 'PRACTICE')
 			AND (pg.id_ IS NULL OR pg.type_='CHARGE')
 			AND m.user_id_ IN
@@ -742,7 +742,7 @@
 		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0 AND cs.pre_course_flag_ != 1
 		AND cs.del_flag_ = '0'
 		AND cs.status_='NOT_START'
-		AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
+		AND cs.merge_flag_ IN (0,1)
 		<if test="hasDesc != null and hasDesc == true">
 			AND cg.desc_ IS NOT NULL
 		</if>
@@ -778,7 +778,7 @@
 		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
 		AND cs.del_flag_ = '0'
 		AND cs.status_='NOT_START'
-		AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
+		AND cs.merge_flag_ IN (0,1)
 		<if test="educationUserId != null">
 			AND mg.educational_teacher_id_ = #{educationUserId}
 		</if>
@@ -944,7 +944,7 @@
 				AND sa.status_ = 'LEAVE'
 			</if>
 			<if test="type!=null and type=='TRUANT'">
-				AND (sa.status_ = 'TRUANT' OR sa.id_ IS NULL) AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+				AND (sa.status_ = 'TRUANT' OR sa.id_ IS NULL) AND cs.merge_flag_ IN (0,1)
 			</if>
 			<if test="organIds!=null and organIds.size()>0">
 				AND cs.organ_id_ IN
@@ -956,7 +956,7 @@
     <select id="getCourseTimeError" resultType="int">
 		SELECT COUNT(cs.id_) FROM course_schedule cs
 		WHERE cs.status_ = 'NOT_START' AND cs.del_flag_ = '0' AND cs.is_lock_ = 0 AND (cs.start_class_time_ &lt; #{courseStartTimeError} OR cs.end_class_time_ > #{courseEndTimeError})
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
+		AND cs.merge_flag_ IN (0,1) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -977,7 +977,7 @@
 		       COUNT(cs.id_) AS 'value'
 		FROM course_schedule cs
 		WHERE cs.status_ = 'NOT_START' AND cs.del_flag_ = '0' AND cs.is_lock_ = 0 AND cs.start_class_time_ &lt; '06:00:00'
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
+		AND cs.merge_flag_ IN (0,1) AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -1002,7 +1002,7 @@
 		AND ((ta.sign_in_status_ = 0 OR ta.sign_in_status_ IS NULL OR ta.sign_out_status_ = 0 OR ta.sign_out_status_ IS NULL)
 		         AND ta.complaints_content_ IS NULL AND ta.dispose_content_ IS NULL)
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+		AND cs.merge_flag_ IN (0,1) AND cssp.id_ IS NOT NULL
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
@@ -1027,7 +1027,7 @@
 		WHERE cs.pre_course_flag_ != 1 AND cs.status_ = 'OVER' AND cs.del_flag_ = '0' AND cs.class_date_ >= #{startTime}
 		AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)) AND cssp.id_ IS NOT NULL
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+		AND cs.merge_flag_ IN (0,1)
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
@@ -1056,7 +1056,7 @@
 		AND cs.status_ = 'OVER' AND cs.del_flag_ = '0' AND cs.class_date_ >= #{startTime} AND cs.pre_course_flag_ != 1
 		AND (((ta.sign_in_status_ = 0 OR ta.sign_in_status_ IS NULL OR ta.sign_out_status_ = 0 OR ta.sign_out_status_ IS NULL) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)))
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+		AND cs.merge_flag_ IN (0,1) AND cssp.id_ IS NOT NULL
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
@@ -1079,7 +1079,7 @@
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_ and cs.tenant_id_ = #{tenantId}
 		AND cs.status_ = 'OVER' AND cs.del_flag_ = '0' AND cs.class_date_>=#{startTime} AND cs.pre_course_flag_ != 1
 		AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.complaints_content_ IS NULL AND ta.dispose_content_ IS NULL
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+		AND cs.merge_flag_ IN (0,1)
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
@@ -1104,7 +1104,7 @@
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_ and cs.tenant_id_ = #{tenantId}
 		AND cs.status_ = 'OVER' AND cs.del_flag_ = '0' AND cs.class_date_>=#{startTime} AND cs.pre_course_flag_ != 1
 		AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.dispose_content_ IS NULL
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+		AND cs.merge_flag_ IN (0,1)
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/IndexErrDataRecordMapper.xml

@@ -231,7 +231,7 @@
 			AND cs.status_ = 'OVER' AND cs.del_flag_ = '0' AND cs.class_date_ >= '2021-02-01'
 			AND (((ta.sign_in_status_ = 0 OR ta.sign_in_status_ IS NULL OR ta.sign_out_status_ = 0 OR ta.sign_out_status_ IS NULL) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)))
 			AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
-			AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+			AND cs.merge_flag_ IN (0,1) AND cssp.id_ IS NOT NULL
 			AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 			<if test="date!=null">
 				AND cs.class_date_=#{date}
@@ -258,7 +258,7 @@
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_
 			AND cs.status_ = 'OVER' AND cs.del_flag_ = '0' AND cs.class_date_>='2021-02-01'
 			AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.dispose_content_ IS NULL
-			AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+			AND cs.merge_flag_ IN (0,1)
 			AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 			<if test="date!=null">
 		  		AND cs.class_date_=#{date}

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml

@@ -190,7 +190,7 @@
 	<select id="sumCourseAmount" resultType="java.util.Map">
 		SELECT cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' FROM course_schedule cs
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
-		where cs.del_flag_ = '0' AND cs.is_lock_ = 0 AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+		where cs.del_flag_ = '0' AND cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0 AND cs.merge_flag_ IN (0,1)
 		AND cssp.actual_price_ > 0 AND cs.class_date_ BETWEEN #{firstDay} AND #{lastDay}
 		AND DATE_FORMAT(cs.create_time_,'%Y') = #{currentYear} AND cs.settlement_report_flag_ = 0 group by cs.organ_id_;
 	</select>
@@ -243,7 +243,7 @@
 		SELECT cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' FROM course_schedule cs
 		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
 		where cs.del_flag_ = '0' AND cs.is_lock_ = 0 AND cs.pre_course_flag_ != 1
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND cs.class_date_ > #{lastDay}
+		AND cs.merge_flag_ IN (0,1) AND cs.class_date_ > #{lastDay}
 		AND cs.group_type_ != 'MUSIC'
 		group by cs.organ_id_;
 	</select>

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

@@ -962,7 +962,7 @@
         LEFT JOIN music_group mg ON mg.id_ = sees.music_group_id_
         LEFT JOIN course_schedule_student_payment cssp ON cssp.music_group_id_ = sees.music_group_id_ AND cssp.user_id_ = sees.student_id_ AND cssp.group_type_ = 'MUSIC'
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1
-        AND cs.is_lock_ = 0 AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ ) AND cs.class_date_ BETWEEN #{monday} AND #{sunday}
+        AND cs.is_lock_ = 0 AND cs.merge_flag_ IN (0,1) AND cs.class_date_ BETWEEN #{monday} AND #{sunday}
         LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND sa.user_id_ = cssp.user_id_ AND sa.status_ IN ('NORMAL','LATE')
         WHERE sees.monday_ >= #{monday} AND sees.sunday_ &lt;= #{sunday}
         GROUP BY sees.student_id_,sees.music_group_id_) cs ON cs.student_id_ = sees.student_id_ AND cs.music_group_id_ = sees.music_group_id_

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

@@ -437,7 +437,7 @@
             LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
         WHERE cssp.tenant_id_ = #{tenantId}
             AND cs.del_flag_ = '0'
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+            AND cs.merge_flag_ IN (0,1)
             AND cs.class_date_ between #{monday} and #{sunday}
             AND cs.type_ IN ('SINGLE', 'TRAINING_SINGLE', 'MIX', 'TRAINING_MIX')
             <if test="studentIds!=null and studentIds.size()>0">

+ 6 - 5
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -291,7 +291,7 @@
     <sql id="queryTeacherAttendancesCondition">
         <where>
             cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 and cs.tenant_id_ = #{tenantId}
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+            AND cs.merge_flag_ IN (0,1)
             <if test="search != null and search != ''">
                 AND (su.id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%') OR cs.id_ = #{search} OR cs.name_ LIKE CONCAT('%',#{search},'%'))
             </if>
@@ -471,7 +471,7 @@
         FROM course_schedule cs RIGHT JOIN teacher_attendance ta on ta.course_schedule_id_ = cs.id_
         LEFT JOIN sys_user u on ta.teacher_id_ = u.id_
         WHERE ta.sign_out_status_ IS NULL and cs.tenant_id_ = #{tenantId}
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+        AND cs.merge_flag_ IN (0,1)
         AND CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) &lt;= DATE_SUB(now(),INTERVAL #{minutes} MINUTE)
         AND cs.class_date_ = DATE_FORMAT(NOW(),'%Y-%m-%d') AND cs.del_flag_ = '0'
         AND cs.group_type_ = 'MUSIC'
@@ -531,7 +531,7 @@
         SELECT DISTINCT ta.teacher_id_ FROM teacher_attendance ta
         LEFT JOIN course_schedule cs ON cs.id_ = ta.course_schedule_id_
         WHERE cs.del_flag_ = '0' AND cs.class_date_ = #{format}
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+        AND cs.merge_flag_ IN (0,1)
         AND ta.teacher_id_ = cs.actual_teacher_id_ AND CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt; NOW()
         AND (ta.sign_in_status_ IS NULL OR ta.sign_in_status_ = 0 OR ta.sign_out_status_ IS NULL OR ta.sign_out_status_ = 0)
     </select>
@@ -639,7 +639,7 @@
     <sql id="queryTeacherAttendanceSql">
         <where>
             cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1
-            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+            AND cs.merge_flag_ IN (0,1)
             AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
             <if test="queryInfo.startTerm != null and queryInfo.startTerm != ''">
                 AND cs.class_date_ BETWEEN #{queryInfo.startTerm} AND #{queryInfo.endTerm}
@@ -699,7 +699,8 @@
         <if test="query.courseType != null and query.courseType != ''">
             AND cs.type_ = #{query.courseType}
         </if>
-        AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+        AND cs.is_lock_ = 0 AND cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1
+        AND cs.merge_flag_ IN (0,1)
     </select>
     <update id="cleanCourseTeacherSignInfo">
         UPDATE teacher_attendance