Преглед на файлове

fix:1、课程合并去掉部分限制

Joburgess преди 4 години
родител
ревизия
e487b2a43c

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

@@ -5271,8 +5271,17 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseScheduleIds(allCourseIds);
 		Map<Long, Set<Integer>> courseStudentIdsMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.mapping(CourseScheduleStudentPayment::getUserId, Collectors.toSet())));
 		Set<Integer> allStudentIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toSet());
-		if(courseScheduleStudentPayments.size()!=allStudentIds.size()){
-			throw new BizException("所选课程中学员重复");
+
+		Set<Integer> mainCourseStudentIds = courseScheduleStudentPayments.stream().filter(c -> courseMergeInfo.getId().equals(c.getCourseScheduleId())).map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toSet());
+		List<CourseScheduleStudentPayment> newPayments = new ArrayList<>();
+		for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
+			if(mainCourseStudentIds.contains(courseScheduleStudentPayment.getUserId())){
+				continue;
+			}
+			CourseScheduleStudentPayment newPayment = new CourseScheduleStudentPayment();
+			BeanUtils.copyProperties(courseScheduleStudentPayment, newPayment);
+			newPayment.setCourseScheduleId(courseMergeInfo.getId());
+			newPayment.setClassGroupId(courseMergeInfo.getClassGroupId());
 		}
 
 		List<CourseSchedule> courseSchedules=new ArrayList<>();
@@ -5301,11 +5310,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			insertCourseScheduleModifyLogList.add(courseScheduleModifyLog);
 		}
 		courseScheduleDao.batchUpdate(mergeCourses);
-		for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
-			courseScheduleStudentPayment.setCourseScheduleId(courseMergeInfo.getId());
-			courseScheduleStudentPayment.setClassGroupId(courseMergeInfo.getClassGroupId());
-		}
-		courseScheduleStudentPaymentDao.batchUpdate(courseScheduleStudentPayments);
+
+		courseScheduleStudentPaymentDao.batchInsert(newPayments);
 
 		courseAdjust(courseSchedules);
 

+ 5 - 15
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -516,6 +516,7 @@
             cs.music_group_id_,
             cs.group_type_,
             cs.class_group_id_,
+            cs.new_course_id_,
             cg.student_num_ total_student_num_,
             su.real_name_ teacher_name_,
             IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
@@ -528,7 +529,6 @@
             LEFT JOIN school s ON cs.schoole_id_=s.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_)
         <if test="classGroupIds != null and organIdList!=null">
             AND cs.class_group_id_ IN
             <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -555,7 +555,6 @@
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.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.id_ IS NOT NULL
         <if test="type!=null">
             AND cg.group_type_ = #{type}
@@ -585,7 +584,8 @@
             su.real_name_ teacher_name_,
             IF(sa.status_ IS NULL,'NORMAL',sa.status_) attendance_status_,
             csc.id_ IS NOT NULL complaint_status_,
-            cs.teach_mode_
+            cs.teach_mode_,
+            cs.new_course_id_
         FROM
             course_schedule_student_payment cssp
             LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
@@ -596,7 +596,6 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         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_ = DATE_FORMAT(#{classDate},'%Y%m%d')
         AND cssp.user_id_ = #{studentId}
         <if test="quitClassGroupIds != null and quitClassGroupIds.size()>0">
@@ -640,7 +639,6 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         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_ = DATE_FORMAT(#{classDate},'%Y%m%d')
         <if test="type!=null and type!=''">
             AND cs.type_=#{type}
@@ -704,6 +702,7 @@
                CONCAT(cs.class_date_, ' ', cs.start_class_time_) start_class_time_,
                CONCAT(cs.class_date_, ' ', cs.end_class_time_)   end_class_time_,
                cs.status_,
+               cs.new_course_id_,
                csts.user_id_                                     actual_teacher_id_,
                csts.teacher_role_,
                cs.schoole_id_,
@@ -728,7 +727,6 @@
                  LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = #{teacherId}
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             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_ = DATE_FORMAT(#{classDate}, '%Y%m%d')
           AND csts.user_id_ = #{teacherId}
           AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) &lt; NOW()
@@ -859,7 +857,6 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         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 cssp.user_id_ = #{studentId}
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
@@ -884,7 +881,6 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         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}
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
@@ -936,7 +932,6 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         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 CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
         AND csts.user_id_ = #{teacherId}
         AND cg.del_flag_ = 0
@@ -957,7 +952,6 @@
             LEFT JOIN teacher t ON cs.actual_teacher_id_=t.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.class_group_id_ IN
             <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
                 #{classGroupId}
@@ -994,7 +988,6 @@
             AND cs.status_ != 'NOT_START'
             AND 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_)
             <if test="teachMode!=null and teachMode!=''">
                 AND cs.teach_mode_=#{teachMode}
             </if>
@@ -1057,7 +1050,6 @@
                  LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             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.status_ = 'NOT_START'
             AND cgsm.user_id_ = #{userId}
             AND cs.class_date_ = DATE_FORMAT(#{date}, '%Y%m%d')
@@ -1337,7 +1329,6 @@
         <where>
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             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_group_id_ = #{classGroupId}
             <if test="userId != null">
                 AND csts.user_id_ = #{userId}
@@ -1832,8 +1823,7 @@
                cs.leave_student_num_,
                cs.schoole_id_
         FROM course_schedule cs
-        WHERE (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
-          AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
+        WHERE cs.class_date_ BETWEEN #{startDate} AND #{endDate}
           AND cs.group_type_ = 'MUSIC'
           AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0)
     </select>