| 
					
				 | 
			
			
				@@ -75,6 +75,7 @@ import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.function.Function; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import static com.timevale.tgtext.text.html.b.i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType.MUSIC_NETWORK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static com.ym.mec.biz.dal.enums.GroupType.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static com.ym.mec.biz.dal.enums.PracticeGroupType.FREE; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1642,12 +1643,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<Date> courseStartDates = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Set<String> holidayDays = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Integer tenantId = TenantContextHolder.getTenantId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (courseAdjustInfo.isHoliday()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(StringUtils.isNotBlank(holidaySetting)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Integer tenantId = TenantContextHolder.getTenantId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (courseAdjustInfo.isHoliday()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(StringUtils.isNotBlank(holidaySetting)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Map<String, List<CourseSchedule>> result = new HashMap<String, List<CourseSchedule>>(){{ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2323,37 +2324,37 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser user = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("请指定课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (Objects.isNull(vipGroupCourseAdjustInfo.getCourseCreateStartTime())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("请指定排课起始时间;"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(vipGroupCourseAdjustInfo.getCourseTimes())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("请指定排课周期"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (StringUtils.isBlank(vipGroupCourseAdjustInfo.getCourseScheduleIds())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("请指定需要调整的课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date courseCreateStartTime = vipGroupCourseAdjustInfo.getCourseCreateStartTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date today = DateUtil.stringToDate(DateUtil.dateToString(now, DateUtil.ISO_EXPANDED_DATE_FORMAT), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                DateUtil.ISO_EXPANDED_DATE_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (courseCreateStartTime.before(today)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("排课起始时间不能小于当前时间"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SysUser user = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请指定课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupCourseAdjustInfo.getCourseCreateStartTime())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请指定排课起始时间;"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (CollectionUtils.isEmpty(vipGroupCourseAdjustInfo.getCourseTimes())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请指定排课周期"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (StringUtils.isBlank(vipGroupCourseAdjustInfo.getCourseScheduleIds())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请指定需要调整的课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Date courseCreateStartTime = vipGroupCourseAdjustInfo.getCourseCreateStartTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Date today = DateUtil.stringToDate(DateUtil.dateToString(now, DateUtil.ISO_EXPANDED_DATE_FORMAT), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				DateUtil.ISO_EXPANDED_DATE_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (courseCreateStartTime.before(today)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("排课起始时间不能小于当前时间"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        boolean needSchoolId = Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode()) && vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE) && Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (needSchoolId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("请设置教学点"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		boolean needSchoolId = Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode()) && vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE) && Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (needSchoolId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请设置教学点"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int singleClassMinutes = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int courseNum = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date coursesExpireDate = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date coursesStartDate = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GroupType groupType = vipGroupCourseAdjustInfo.getGroupType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		int singleClassMinutes = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		int courseNum = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Date coursesExpireDate = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Date coursesStartDate = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		GroupType groupType = vipGroupCourseAdjustInfo.getGroupType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroup vipGroup=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupActivity vipGroupActivity = null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2366,116 +2367,116 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        switch (vipGroupCourseAdjustInfo.getGroupType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case PRACTICE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                PracticeGroup practiceGroup = practiceGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (Objects.isNull(practiceGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("指定课程不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                singleClassMinutes = practiceGroup.getSingleClassMinutes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                courseNum = courseScheduleDao.countVipGroupCourses(practiceGroup.getId().intValue(),groupType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                coursesExpireDate = practiceGroup.getCoursesExpireDate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                coursesStartDate = practiceGroup.getCoursesStartDate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (Objects.isNull(vipGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("指定课程不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		switch (vipGroupCourseAdjustInfo.getGroupType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			case PRACTICE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				PracticeGroup practiceGroup = practiceGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (Objects.isNull(practiceGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("指定课程不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				singleClassMinutes = practiceGroup.getSingleClassMinutes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				courseNum = courseScheduleDao.countVipGroupCourses(practiceGroup.getId().intValue(),groupType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				coursesExpireDate = practiceGroup.getCoursesExpireDate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				coursesStartDate = practiceGroup.getCoursesStartDate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (Objects.isNull(vipGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("指定课程不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if(Objects.nonNull(vipGroup) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						&&!VipGroupStatusEnum.PROGRESS.equals(vipGroup.getStatus()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						&&!VipGroupStatusEnum.FINISHED.equals(vipGroup.getStatus())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					throw new BizException("非进行中课程组不允许进行此操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                singleClassMinutes = vipGroup.getSingleClassMinutes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                courseNum = courseScheduleDao.countVipGroupCourses(vipGroup.getId().intValue(),groupType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (courseNum == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("未排课的课程不能进行调整"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				singleClassMinutes = vipGroup.getSingleClassMinutes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				courseNum = courseScheduleDao.countVipGroupCourses(vipGroup.getId().intValue(),groupType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (courseNum == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("未排课的课程不能进行调整"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ClassGroup classGroup = classGroupDao.findByGroupAndType(vipGroupCourseAdjustInfo.getVipGroupId().toString(),groupType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (Objects.isNull(classGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("对应班级不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ClassGroup classGroup = classGroupDao.findByGroupAndType(vipGroupCourseAdjustInfo.getVipGroupId().toString(),groupType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(classGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("对应班级不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //所有课程编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Long> courseScheduleIds = Arrays.asList(vipGroupCourseAdjustInfo.getCourseScheduleIds().split(",")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .stream().map(Long::parseLong).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //所有的课程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//所有课程编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Long> courseScheduleIds = Arrays.asList(vipGroupCourseAdjustInfo.getCourseScheduleIds().split(",")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.stream().map(Long::parseLong).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//所有的课程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//校验可排课时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.checkLiveAdjust(courseSchedules); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//校验机构线上课人数上限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.checkOnlineCategory(courseSchedules,vipGroupCourseAdjustInfo.getTeachMode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//拷贝历史直播课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<CourseSchedule> liveCourseSchedules = JSON.parseArray(JSON.toJSONString(courseSchedules),CourseSchedule.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//获取操作日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<CourseScheduleModifyLog> modifyLogs = getModifyLogs(courseScheduleIds, courseSchedules, user.getId(), now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (courseScheduleIds.size() != courseScheduleIds.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("部分课程不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (courseScheduleIds.size() != courseScheduleIds.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("部分课程不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Calendar calendar = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.setTime(courseCreateStartTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Date> courseStartDates = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Calendar calendar = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		calendar.setTime(courseCreateStartTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Date> courseStartDates = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Set<String> holidayDays = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Integer tenantId = TenantContextHolder.getTenantId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (vipGroupCourseAdjustInfo.isHoliday()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(StringUtils.isNotBlank(holidaySetting)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Integer tenantId = TenantContextHolder.getTenantId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vipGroupCourseAdjustInfo.isHoliday()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(StringUtils.isNotBlank(holidaySetting)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        while (true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                calendar.add(Calendar.DATE, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int i = calendar.get(Calendar.DAY_OF_WEEK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (i == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                i = 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                i = i - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (CourseTimeDto courseTime : vipGroupCourseAdjustInfo.getCourseTimes()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (Objects.isNull(courseTime.getDayOfWeek())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("排课循环周期错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (courseTime.getDayOfWeek() < 1 || courseTime.getDayOfWeek() > 7) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("排课循环周期错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (courseTime.getDayOfWeek() == i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    dateYmdStr = dateYmdStr + " " + courseTime.getStartClassTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Date courseEndTime = DateUtil.addMinutes(courseStartTime, singleClassMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(DateUtil.daysBetween(DateUtil.stringToDate(DateUtil.format(courseStartTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            DateUtil.stringToDate(DateUtil.format(courseEndTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN)) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        throw new BizException("单节课时不允许跨天"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    courseStartDates.add(DateUtil.stringToDate(dateYmdStr, DateUtil.EXPANDED_DATE_TIME_FORMAT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		while (true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				calendar.add(Calendar.DATE, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			int i = calendar.get(Calendar.DAY_OF_WEEK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (i == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				i = 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				i = i - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (CourseTimeDto courseTime : vipGroupCourseAdjustInfo.getCourseTimes()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (Objects.isNull(courseTime.getDayOfWeek())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("排课循环周期错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (courseTime.getDayOfWeek() < 1 || courseTime.getDayOfWeek() > 7) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("排课循环周期错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (courseTime.getDayOfWeek() == i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					dateYmdStr = dateYmdStr + " " + courseTime.getStartClassTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Date courseEndTime = DateUtil.addMinutes(courseStartTime, singleClassMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(DateUtil.daysBetween(DateUtil.stringToDate(DateUtil.format(courseStartTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							DateUtil.stringToDate(DateUtil.format(courseEndTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN)) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						throw new BizException("单节课时不允许跨天"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseStartDates.add(DateUtil.stringToDate(dateYmdStr, DateUtil.EXPANDED_DATE_TIME_FORMAT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					CourseSchedule courseSchedule = courseSchedules.get(courseStartDates.size() - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					//校验课程是否结算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					this.checkCourseIsSettlement(courseSchedule); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    int num = studentAttendanceDao.countStudentAttendenceNum(courseSchedule.getId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (num > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        throw new BizException("{}[{}]{}-{}课程已点名", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					int num = studentAttendanceDao.countStudentAttendenceNum(courseSchedule.getId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (num > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						throw new BizException("{}[{}]{}-{}课程已点名", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								courseSchedule.getName(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								courseSchedule.getId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                DateUtil.dateToString(courseSchedule.getStartClassTime(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        DateUtil.EXPANDED_DATE_TIME_FORMAT), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                DateUtil.dateToString(courseSchedule.getEndClassTime(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        DateUtil.EXPANDED_DATE_TIME_FORMAT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    courseSchedule.setStatus(CourseStatusEnum.NOT_START); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    courseSchedule.setClassDate(courseStartTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    courseSchedule.setStartClassTime(courseStartTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    courseSchedule.setEndClassTime(courseEndTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								DateUtil.dateToString(courseSchedule.getStartClassTime(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										DateUtil.EXPANDED_DATE_TIME_FORMAT), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								DateUtil.dateToString(courseSchedule.getEndClassTime(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										DateUtil.EXPANDED_DATE_TIME_FORMAT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseSchedule.setStatus(CourseStatusEnum.NOT_START); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseSchedule.setClassDate(courseStartTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseSchedule.setStartClassTime(courseStartTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseSchedule.setEndClassTime(courseEndTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					Integer allowOnlineToOffline = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if(Objects.nonNull(vipGroupActivity)){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2489,13 +2490,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if (Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    	boolean onlineToOffline = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						boolean onlineToOffline = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						boolean offlineToOnline = courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.ONLINE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if(onlineToOffline && Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            throw new BizException("此VIP课活动不支持线上课调整为线下课"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if(onlineToOffline && Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							throw new BizException("此VIP课活动不支持线上课调整为线下课"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						if(offlineToOnline&&Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 2 || allowOnlineToOffline == 3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							throw new BizException("此VIP课活动不支持线下课调整为线上课"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2503,45 +2504,45 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							throw new BizException("请选择教学点"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						courseSchedule.setTeachMode(vipGroupCourseAdjustInfo.getTeachMode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if(Objects.nonNull(vipGroupCourseAdjustInfo.getSchoolId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if(Objects.nonNull(vipGroupCourseAdjustInfo.getSchoolId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								courseSchedule.setSchoolId(vipGroupCourseAdjustInfo.getSchoolId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							courseSchedule.setSchoolId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (courseStartDates.size() == courseScheduleIds.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (courseStartDates.size() == courseScheduleIds.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            calendar.add(Calendar.DATE, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        checkNewCourseSchedules(courseSchedules, false,false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //如果是陪练课,调整时间不允许超过有效期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(groupType == PRACTICE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (CourseSchedule e:courseSchedules) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //已点名的不允许调整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(e.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(studentAttendances != null && studentAttendances.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("调整失败: 课程已点名"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                String classDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                String startClassTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Date endDateTime = DateUtil.addMinutes(startDateTime,singleClassMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(DateUtil.minutesBetween(startDateTime,coursesStartDate) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("调整失败: 课程{}调整时间早于有效期",e.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(DateUtil.minutesBetween(coursesExpireDate,endDateTime) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("调整失败: 课程{}截止时间超过课程有效期",e.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (courseStartDates.size() == courseScheduleIds.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (courseStartDates.size() == courseScheduleIds.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			calendar.add(Calendar.DATE, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		checkNewCourseSchedules(courseSchedules, false,false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//如果是陪练课,调整时间不允许超过有效期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(groupType == PRACTICE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (CourseSchedule e:courseSchedules) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//已点名的不允许调整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(e.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(studentAttendances != null && studentAttendances.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("调整失败: 课程已点名"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String classDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String startClassTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Date endDateTime = DateUtil.addMinutes(startDateTime,singleClassMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(DateUtil.minutesBetween(startDateTime,coursesStartDate) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("调整失败: 课程{}调整时间早于有效期",e.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(DateUtil.minutesBetween(coursesExpireDate,endDateTime) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("调整失败: 课程{}截止时间超过课程有效期",e.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(groupType == VIP || groupType == LIVE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			CourseSchedule courseSchedule = courseSchedules.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if(courseSchedule.getEndClassTime().compareTo(vipGroup.getCoursesExpireDate())>0){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2562,12 +2563,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        courseScheduleDao.batchUpdate(courseSchedules); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        classGroupService.updateClassGroupInfo(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            teacherAttendanceDao.batchCleanCourseTeacherSignInfo(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        studentAttendanceDao.deleteByCourseSchedules(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		courseScheduleDao.batchUpdate(courseSchedules); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		classGroupService.updateClassGroupInfo(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherAttendanceDao.batchCleanCourseTeacherSignInfo(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		studentAttendanceDao.deleteByCourseSchedules(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//删除作业 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		courseHomeworkService.delHomwworkByCourseScheduleId(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//删除评论 
			 |