|  | @@ -2833,6 +2833,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  			return BaseController.succeed();
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		Set<String> musicGroupIds = oldCourses.stream().filter(c -> MUSIC.equals(c.getGroupType())).map(CourseSchedule::getMusicGroupId).collect(Collectors.toSet());
 | 
	
		
			
				|  |  | +		if(!CollectionUtils.isEmpty(musicGroupIds)){
 | 
	
		
			
				|  |  | +			List<MusicGroup> musicGroups = musicGroupDao.getMusicGroupByIds(new ArrayList<>(musicGroupIds));
 | 
	
		
			
				|  |  | +			if(CollectionUtils.isEmpty(musicGroups)){
 | 
	
		
			
				|  |  | +				throw new BizException("调整失败:乐团信息异常");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			long errMusicGroupNum = musicGroups.stream().filter(m -> !MusicGroupStatusEnum.PROGRESS.equals(m.getStatus())).count();
 | 
	
		
			
				|  |  | +			if(errMusicGroupNum>0){
 | 
	
		
			
				|  |  | +				throw new BizException("调整失败:调整的课程所在乐团处于非进行中");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		List<CourseScheduleTeacherSalary> oldCourseScheduleTeacherSalaryList = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseAdjustInfo.getCourseScheduleIds());
 | 
	
		
			
				|  |  |  		Map<Long, List<CourseScheduleTeacherSalary>> courseSalaryListMap = new HashMap<>();
 | 
	
		
			
				|  |  |  		if(!CollectionUtils.isEmpty(oldCourseScheduleTeacherSalaryList)){
 | 
	
	
		
			
				|  | @@ -2858,6 +2870,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  		//获取主教编号
 | 
	
		
			
				|  |  |  		Integer mainTeacherId = null;
 | 
	
		
			
				|  |  |  		if(!CollectionUtils.isEmpty(courseAdjustInfo.getClassGroupTeacherMapperList())){
 | 
	
		
			
				|  |  | +			Map<Integer, Long> userNumMap = courseAdjustInfo.getClassGroupTeacherMapperList().stream().collect(Collectors.groupingBy(ClassGroupTeacherMapper::getUserId, Collectors.counting()));
 | 
	
		
			
				|  |  | +			if(userNumMap.containsValue(Long.valueOf("2"))){
 | 
	
		
			
				|  |  | +				throw new BizException("主教与助教不可重复");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			ClassGroupTeacherMapper classGroupTeacherMapper = courseAdjustInfo.getClassGroupTeacherMapperList().stream().filter(c -> TeachTypeEnum.BISHOP.equals(c.getTeacherRole())).findAny().get();
 | 
	
		
			
				|  |  |  			if(Objects.nonNull(classGroupTeacherMapper)){
 | 
	
		
			
				|  |  |  				mainTeacherId = classGroupTeacherMapper.getUserId();
 | 
	
	
		
			
				|  | @@ -2866,7 +2882,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//上课日期变更
 | 
	
		
			
				|  |  |  		//间隔天数
 | 
	
		
			
				|  |  | -		int betweenDays = 0, initBetweenDays = 0;
 | 
	
		
			
				|  |  | +		int betweenDays = 0;
 | 
	
		
			
				|  |  |  		//节假日
 | 
	
		
			
				|  |  |  		Set<String> holidayDays = new HashSet<>();
 | 
	
		
			
				|  |  |  		if(Objects.nonNull(courseAdjustInfo.getPauseDate())&&Objects.nonNull(courseAdjustInfo.getRecoveryDate())){
 | 
	
	
		
			
				|  | @@ -2881,7 +2897,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  			LocalDate recoveryDate = LocalDate.parse(courseAdjustInfo.getRecoveryDate(), DateUtil.dateFormatter);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			betweenDays = (int) (recoveryDate.toEpochDay()-pauseDate.toEpochDay());
 | 
	
		
			
				|  |  | -			initBetweenDays = betweenDays;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//上课时间变更
 | 
	
	
		
			
				|  | @@ -2907,7 +2922,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  				LocalDate classDate = LocalDateTime.ofInstant(oldCourses.get(i).getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
 | 
	
		
			
				|  |  |  				classDate = classDate.plusDays(betweenDays);
 | 
	
		
			
				|  |  |  				if (courseAdjustInfo.getHoliday() && holidayDays.contains(classDate.toString())) {
 | 
	
		
			
				|  |  | -					betweenDays=betweenDays+initBetweenDays;
 | 
	
		
			
				|  |  | +					betweenDays=betweenDays+7;
 | 
	
		
			
				|  |  |  					i=i-1;
 | 
	
		
			
				|  |  |  					continue;
 | 
	
		
			
				|  |  |  				}
 | 
	
	
		
			
				|  | @@ -2941,15 +2956,16 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			if(Objects.nonNull(courseAdjustInfo.getTeachMode())&&!courseAdjustInfo.getTeachMode().equals(oldCourses.get(i).getTeachMode())){
 | 
	
		
			
				|  |  |  				oldCourses.get(i).setTeachMode(courseAdjustInfo.getTeachMode());
 | 
	
		
			
				|  |  | -				if(TeachModeEnum.ONLINE.equals(courseAdjustInfo.getTeachMode())){
 | 
	
		
			
				|  |  | -					oldCourses.get(i).setSchoolId(null);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  |  				if(VIP.equals(oldCourses.get(i).getGroupType())){
 | 
	
		
			
				|  |  |  					changeSalaryTeachTypes.add(TeachTypeEnum.BISHOP);
 | 
	
		
			
				|  |  |  					courseScheduleTeacherSalaryDao.deleteWithCourseAndTeachRole(Arrays.asList(oldCourses.get(i).getId()), TeachTypeEnum.BISHOP);
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +			if(TeachModeEnum.ONLINE.equals(courseAdjustInfo.getTeachMode())){
 | 
	
		
			
				|  |  | +				oldCourses.get(i).setSchoolId(null);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  			//主教变更
 | 
	
		
			
				|  |  |  			if(Objects.nonNull(mainTeacherId)){
 | 
	
		
			
				|  |  |  				oldCourses.get(i).setActualTeacherId(mainTeacherId);
 | 
	
	
		
			
				|  | @@ -3390,7 +3406,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        //课程冲突检测
 | 
	
		
			
				|  |  | +		Set<String> musicGroupIds = oldCourseScheduleList.stream().filter(c -> MUSIC.equals(c.getGroupType())).map(CourseSchedule::getMusicGroupId).collect(Collectors.toSet());
 | 
	
		
			
				|  |  | +        if(!CollectionUtils.isEmpty(musicGroupIds)){
 | 
	
		
			
				|  |  | +			List<MusicGroup> musicGroups = musicGroupDao.getMusicGroupByIds(new ArrayList<>(musicGroupIds));
 | 
	
		
			
				|  |  | +			if(CollectionUtils.isEmpty(musicGroups)){
 | 
	
		
			
				|  |  | +				throw new BizException("调整失败:乐团信息异常");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			long errMusicGroupNum = musicGroups.stream().filter(m -> !MusicGroupStatusEnum.PROGRESS.equals(m.getStatus())).count();
 | 
	
		
			
				|  |  | +			if(errMusicGroupNum>0){
 | 
	
		
			
				|  |  | +				throw new BizException("调整失败:调整的课程所在乐团处于非进行中");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		//课程冲突检测
 | 
	
		
			
				|  |  |          checkNewCourseSchedules(newCourseSchedules, false,false);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		Map<Long, List<TeacherAttendance>> teacherAttendanceMap = new HashMap<Long, List<TeacherAttendance>>();
 | 
	
	
		
			
				|  | @@ -3535,10 +3563,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  				Map<Integer, Map<Integer, TeacherDefaultVipGroupSalary>> vipGroupSalaryMap = new HashMap<Integer, Map<Integer, TeacherDefaultVipGroupSalary>>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				if (newCourseSchedule.getGroupType() == GroupType.MUSIC) {
 | 
	
		
			
				|  |  | -					MusicGroup musicGroup = musicGroupDao.get(newCourseSchedule.getMusicGroupId());
 | 
	
		
			
				|  |  | -					if(Objects.isNull(musicGroup)||!MusicGroupStatusEnum.PROGRESS.equals(musicGroup.getStatus())){
 | 
	
		
			
				|  |  | -						throw new BizException("非进行中乐团不可调整课程");
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  |  					// 所有教师列表
 | 
	
		
			
				|  |  |  					List<Teacher> teachers = teacherDao.findByTeacherIds(newTeacherIdList);
 | 
	
		
			
				|  |  |  					teacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
 |