|  | @@ -1784,7 +1784,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |          List<CourseSchedule> courseScheduleList = new ArrayList<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  | -        String classCourseMinute = null;
 | 
	
		
			
				|  |  |          for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
 | 
	
		
			
				|  |  |              if(classGroup4MixDto.getCourseTimeDtoList() == null || classGroup4MixDto.getCourseTimeDtoList().size() == 0){
 | 
	
		
			
				|  |  |                  break;
 | 
	
	
		
			
				|  | @@ -1986,7 +1985,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public List<CourseSchedule> getCourseSchedules(ClassGroup4MixDto classGroup4MixDto){
 | 
	
		
			
				|  |  | +    public List<CourseSchedule> getCourseSchedules(ClassGroup4MixDto classGroup4MixDto,List<CourseSchedule> courseScheduleList){
 | 
	
		
			
				|  |  |          Date date = new Date();
 | 
	
		
			
				|  |  |          String musicGroupId = classGroup4MixDto.getMusicGroupId();
 | 
	
		
			
				|  |  |          MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
 | 
	
	
		
			
				|  | @@ -2038,7 +2037,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          ClassGroup classGroup = classGroup4MixDto.getClassGroup();
 | 
	
		
			
				|  |  | -        List<CourseSchedule> courseScheduleList = new ArrayList<>();
 | 
	
		
			
				|  |  | +        courseScheduleList.clear();
 | 
	
		
			
				|  |  |          int times = 0;
 | 
	
		
			
				|  |  |          WhileNode:
 | 
	
		
			
				|  |  |          while (true) {
 | 
	
	
		
			
				|  | @@ -2133,7 +2132,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |              Date stringToDate = DateUtil.stringToDate(classGroup4MixDto.getStartDate(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
 | 
	
		
			
				|  |  |              classGroup4MixDto.setStartDate(DateUtil.format(DateUtil.addDays(stringToDate, 7),DateUtil.ISO_EXPANDED_DATE_FORMAT));
 | 
	
		
			
				|  |  |              //再次尝试排课
 | 
	
		
			
				|  |  | -            courseScheduleList = getCourseSchedules(classGroup4MixDto);
 | 
	
		
			
				|  |  | +            courseScheduleList = getCourseSchedules(classGroup4MixDto,courseScheduleList);
 | 
	
		
			
				|  |  |              autoAdjust(classGroup4MixDto,courseScheduleList);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return courseScheduleList;
 | 
	
	
		
			
				|  | @@ -2161,27 +2160,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Set<Integer> noRepeatTeacherIds = classGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
 | 
	
		
			
				|  |  | -        if(noRepeatTeacherIds.size()!=classGroupTeacherMapperList.size()){
 | 
	
		
			
				|  |  | -            throw new BizException("主教与助教存在冲突");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          //获取默认的排课时长
 | 
	
		
			
				|  |  |          String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
 | 
	
		
			
				|  |  |          JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
 | 
	
		
			
				|  |  |          long classCourseDuration = Integer.parseInt(jsonObject.get(classGroup4MixDto.getCourseType().getCode()).toString());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        //建班
 | 
	
		
			
				|  |  | -        ClassGroup classGroup = createClassGroup(classGroup4MixDto);
 | 
	
		
			
				|  |  | -        //排课
 | 
	
		
			
				|  |  | -        classGroup4MixDto.setClassGroup(classGroup);
 | 
	
		
			
				|  |  | -        List<CourseSchedule> courseScheduleList = getCourseSchedules(classGroup4MixDto);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        //自动排课,校验冲突
 | 
	
		
			
				|  |  | -        if(courseScheduleList.size() > 0){
 | 
	
		
			
				|  |  | -            //冲突校验
 | 
	
		
			
				|  |  | -            courseScheduleList = autoAdjust(classGroup4MixDto,courseScheduleList);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        ClassGroup classGroup = classGroup4MixDto.getClassGroup();
 | 
	
		
			
				|  |  | +        if(classGroup == null){
 | 
	
		
			
				|  |  | +            //建班
 | 
	
		
			
				|  |  | +            classGroup = createClassGroup(classGroup4MixDto);
 | 
	
		
			
				|  |  | +            classGroup4MixDto.setClassGroup(classGroup);
 | 
	
		
			
				|  |  |              //2、将学生加入新班级(学生注册表,关联表
 | 
	
		
			
				|  |  |              List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
 | 
	
		
			
				|  |  |              List<Integer> userIds = new ArrayList<>(); //用户ids
 | 
	
	
		
			
				|  | @@ -2214,6 +2201,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |              classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
 | 
	
		
			
				|  |  |              //创建IM群组
 | 
	
		
			
				|  |  |              addImGroup(classGroup, userIds);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //排课
 | 
	
		
			
				|  |  | +        List<CourseSchedule> courseScheduleList = new ArrayList<>();
 | 
	
		
			
				|  |  | +        getCourseSchedules(classGroup4MixDto,courseScheduleList);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //自动排课,校验冲突
 | 
	
		
			
				|  |  | +        if(courseScheduleList.size() > 0){
 | 
	
		
			
				|  |  | +            //冲突校验
 | 
	
		
			
				|  |  | +            courseScheduleList = autoAdjust(classGroup4MixDto,courseScheduleList);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
 | 
	
		
			
				|  |  |                      .map(ClassGroupTeacherMapper::getUserId)
 | 
	
	
		
			
				|  | @@ -2294,7 +2290,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |                      //线上小班课
 | 
	
		
			
				|  |  |                      if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)||classGroup4MixDto.getCourseType().equals(CourseScheduleType.HIGH)) {
 | 
	
		
			
				|  |  |                          teacherDefaultMusicGroupSalary = collect.get(CourseSchedule.CourseScheduleType.HIGH_ONLINE);
 | 
	
		
			
				|  |  | -                        Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupTeacherMapper.getClassGroupId());
 | 
	
		
			
				|  |  | +                        Integer classGroupId = classGroupTeacherMapper.getClassGroupId();
 | 
	
		
			
				|  |  | +                        if(classGroupId == null){
 | 
	
		
			
				|  |  | +                            classGroupId = classGroup.getId();
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupId);
 | 
	
		
			
				|  |  |                          if(studentNum>5){
 | 
	
		
			
				|  |  |                              studentNum=5;
 | 
	
		
			
				|  |  |                          }
 | 
	
	
		
			
				|  | @@ -3620,6 +3620,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |                  if(unitPrice == null){
 | 
	
		
			
				|  |  |                      throw new BizException("分部默认课程类型单价不存在,请设置");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                settingsDetail.setCourseTotalNum(subNum.intValue());
 | 
	
		
			
				|  |  |                  settingsDetail.setCourseType(CourseScheduleType.valueOf(courseType));
 | 
	
		
			
				|  |  |                  settingsDetail.setCourseTotalMinuties(Integer.parseInt(jsonObject.get(courseType).toString()) * subNum.intValue());
 | 
	
		
			
				|  |  |                  settingsDetail.setCourseCurrentPrice(unitPrice.multiply(new BigDecimal(settingsDetail.getCourseTotalMinuties())));
 | 
	
	
		
			
				|  | @@ -3715,10 +3716,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |          //如果缴费项目不需要审核,那么生成班级以及课表
 | 
	
		
			
				|  |  |          if(status == null || status != AUDITING){
 | 
	
		
			
				|  |  |              //每种课程类型单独进行排课
 | 
	
		
			
				|  |  | +            ClassGroup classGroup = null;
 | 
	
		
			
				|  |  |              for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
 | 
	
		
			
				|  |  | +                classGroup4MixDto.setClassGroup(classGroup);
 | 
	
		
			
				|  |  |                  classGroup4MixDto.setMusicGroupStudentClassAdjustId(musicGroupStudentClassAdjust.getId());
 | 
	
		
			
				|  |  |                  classGroup4MixDto.setClassCourseMinute(musicGroupStudentClassAdjust.getClassCourseMinute());
 | 
	
		
			
				|  |  | -                classGroupService.classGroupAdjust2(classGroup4MixDto);
 | 
	
		
			
				|  |  | +                classGroup = classGroupService.classGroupAdjust2(classGroup4MixDto);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              //排课完成后删除所选课程
 | 
	
		
			
				|  |  |              courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds,studentIds);
 | 
	
	
		
			
				|  | @@ -3733,7 +3736,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              List<Long> delCourseIds = courseScheduleDao.findNoStudentCourseIds(courseIds);
 | 
	
		
			
				|  |  |              if(delCourseIds != null && delCourseIds.size() > 0){
 | 
	
		
			
				|  |  | +                //删除课程
 | 
	
		
			
				|  |  |                  courseScheduleDao.deleteCourseSchedulesByClassGroupIds(delCourseIds);
 | 
	
		
			
				|  |  | +                //删除教师考勤
 | 
	
		
			
				|  |  | +                teacherAttendanceDao.batchDeleteByCourseSchedules(delCourseIds);
 | 
	
		
			
				|  |  | +                //删除教师课酬
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              return "学员班级调整完成";
 | 
	
		
			
				|  |  |          }else {
 |