| 
					
				 | 
			
			
				@@ -37,6 +37,7 @@ import org.apache.commons.beanutils.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Isolation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Propagation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.interceptor.TransactionAspectSupport; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1885,6 +1886,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     courseScheduleList.add(courseSchedule); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     courseSchedules.add(courseSchedule); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     times++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2025,6 +2027,319 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ClassGroup classGroupAdjust2(ClassGroup4MixDto classGroup4MixDto){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String musicGroupId = classGroup4MixDto.getMusicGroupId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (musicGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("乐团不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (classGroup4MixDto.getCourseTimes().compareTo(0) <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("排课次数必须大于0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Integer schoolId = musicGroup.getSchoolId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Integer> studentIdList = classGroup4MixDto.getStudents(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<StudentRegistration> studentList = studentRegistrationService.findStudentListByUserIdList(musicGroupId, studentIdList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Integer> subjectIdList = studentList.stream().map(student -> student.getActualSubjectId()).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TeachModeEnum teachMode = TeachModeEnum.OFFLINE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (classGroup4MixDto.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            subjectIdList.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            subjectIdList.add(classGroup4MixDto.getSubjectId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teachMode = TeachModeEnum.ONLINE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Subject> subjectList = subjectService.findBySubjectByIdList(subjectIdList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String subjectIds = subjectList.stream().map(subject -> subject.getId().toString()).collect(Collectors.joining(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String subjectNames = subjectList.stream().map(subject -> subject.getName()).collect(Collectors.joining("/")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(classGroup4MixDto.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teachMode = TeachModeEnum.ONLINE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<String> studentNames = studentDao.getStudentNames(studentIdList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup4MixDto.setClassGroupName(subjectNames + "•" + StringUtils.join(studentNames, ",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (classGroup4MixDto.getType() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup4MixDto.setType(ClassGroupTypeEnum.NORMAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Set<Integer> noRepeatTeacherIds = classGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(noRepeatTeacherIds.size()!=classGroupTeacherMapperList.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("主教与助教存在冲突"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Integer teacherId = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (groupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                teacherId = groupTeacherMapper.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String classCourseMinute = classGroup4MixDto.getClassCourseMinute(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //5、插入班级排课信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取默认的排课时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long classCourseDuration = Integer.parseInt(jsonObject.get(classGroup4MixDto.getCourseType().getCode()).toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Integer> classCourseMinuteMap = JSON.parseObject(classCourseMinute, Map.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        classGroup4MixDto.setCourseTimes(classCourseMinuteMap.get(classGroup4MixDto.getCourseType().getCode())/(int)classCourseDuration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Set<String> holidayDays = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (classGroup4MixDto.getHoliday()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Objects.nonNull(holidaySetting) && StringUtils.isNotBlank(holidaySetting.getParanValue())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CourseSchedule> courseScheduleList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int times = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        WhileNode: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        while (true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (classGroup4MixDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                now = now.plusDays(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int dayOfWeek = now.getDayOfWeek().getValue();//当前星期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw new BizException("排课循环周期错误,请核查"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Date classDate = DateConvertor.toDate(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                CourseSchedule courseSchedule = new CourseSchedule(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setSchoolId(schoolId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setMusicGroupId(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setStatus(CourseStatusEnum.NOT_START); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setClassDate(classDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setStartClassTime(DateUtil.stringToDate(startClassTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setEndClassTime(DateUtil.stringToDate(endClassTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setCreateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setTeachMode(teachMode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setType(classGroup4MixDto.getCourseType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setGroupType(MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setOrganId(musicGroup.getOrganId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setTeacherId(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setActualTeacherId(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseScheduleList.add(courseSchedule); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                times++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (classGroup4MixDto.getCourseTimes().equals(times)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break WhileNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            now = now.plusDays(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ClassGroup classGroup = classGroup4MixDto.getClassGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //计算每节课的课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(classGroup == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //1、新建班级 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup = new ClassGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setMusicGroupId(classGroup4MixDto.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setSubjectIdList(subjectIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setName(classGroup4MixDto.getClassGroupName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setExpectStudentNum(studentList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setStudentNum(studentList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setType(classGroup4MixDto.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setDelFlag(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setGroupType(MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setCurrentClassTimes(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setTotalClassTimes(classGroup4MixDto.getCourseTimes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setCreateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroup.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroupDao.insert(classGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (CourseSchedule courseSchedule : courseScheduleList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseSchedule.setClassGroupId(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MIX)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else if(classGroup4MixDto.getCourseType().equals(CourseScheduleType.MUSIC_NETWORK)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseSchedule.setName(classGroup.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //自动排课,校验冲突 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(courseScheduleList.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseScheduleService.checkNewCourseSchedules(courseScheduleList, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }catch (BizException e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroup4MixDto.setClassGroup(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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    再次尝试排课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupAdjust2(classGroup4MixDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //2、将学生加入新班级(学生注册表,关联表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Integer> userIds = new ArrayList<>(); //用户ids 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (StudentRegistration studentRegistration : studentList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (classGroup4MixDto.getType().equals(ClassGroupTypeEnum.NORMAL)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentRegistration.setClassGroupId(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentRegistrationService.update(studentRegistration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupStudentMapper.setMusicGroupId(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupStudentMapper.setClassGroupId(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupStudentMapper.setUserId(studentRegistration.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupStudentMapper.setCreateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupStudentMapper.setGroupType(MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupStudentMapperList.add(classGroupStudentMapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userIds.add(studentRegistration.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                groupTeacherMapper.setGroupType(classGroup.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                groupTeacherMapper.setClassGroupId(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                groupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userIds.add(groupTeacherMapper.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //3、将老师加入关联关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //创建IM群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addImGroup(classGroup, userIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Integer> allTeacherIds = classGroupTeacherMapperList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .map(ClassGroupTeacherMapper::getUserId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //所有教师列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, Teacher> teacherMap = teachers.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .collect(Collectors.toMap(Teacher::getId, teacher -> teacher)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleDao.batchAddCourseSchedules(courseScheduleList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(), "yyyy-MM-dd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (CourseSchedule courseSchedule : courseScheduleList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //默认课程时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BigDecimal salary = new BigDecimal("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (teacherDefaultMusicGroupSalary == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if ((classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            StringUtils.isBlank(teacherDefaultMusicGroupSalary.getSalaryRuleJson())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else if (teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            || teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            || teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            || teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //对应基准课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (Objects.nonNull(teacher.getEntryDate()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            && (teacher.getEntryDate().after(entryDate) || teacher.getEntryDate().getTime() == entryDate.getTime())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //基准课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //课程时长与结算单位时长占比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //阶梯课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //课程时长与结算单位时长占比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //课堂课课酬改为按分钟数计算,并且时长占比向下取整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), BigDecimal.ZERO.intValue(), BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //基础技能提高课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //线上小班课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(studentNum>5){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            studentNum=5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(Objects.isNull(salary)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            throw new BizException("课酬设置异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setExpectSalary(salary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setClassGroupId(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setMusicGroupId(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setCreateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalary.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //老师结算表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (courseScheduleTeacherSalaryList.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Integer musicGroupStudentClassAdjustId = classGroup4MixDto.getMusicGroupStudentClassAdjustId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //学生结算表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleStudentPaymentService.createForMusicGroup(courseScheduleList, studentIdList,musicGroupStudentClassAdjustId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return classGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public ClassGroup classGroupUpdate(List<ClassGroup4MixDto> classGroup4MixDtos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Integer classGroupId = classGroup4MixDtos.get(0).getClassGroupId(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3410,7 +3725,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicGroupStudentClassAdjustDao.insert(musicGroupStudentClassAdjust); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //如果需要审核,校验参数配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        checkMergeClassSplitClassAffirmParam(classGroup4MixDtos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        checkMergeClassSplitClassAffirmParam(mergeClassSplitClassAffirmDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //如果缴费项目不需要审核,那么生成班级以及课表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(status == null || status != AUDITING){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3427,7 +3742,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 List<CourseTimeDto> courseTimeDtos = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 courseTimeDtos.add(courseTimeDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 classGroup4MixDto.setCourseTimeDtoList(courseTimeDtos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                classGroupService.classGroupAdjust(classGroup4MixDtos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classGroupService.classGroupAdjust2(classGroup4MixDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //排课完成后删除所选课程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds,studentIds); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3452,11 +3767,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void checkMergeClassSplitClassAffirmParam(List<ClassGroup4MixDto> classGroup4MixDtos){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (classGroup4MixDtos.get(0).getCourseTimes().compareTo(0) <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void checkMergeClassSplitClassAffirmParam(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ClassGroup4MixDto classGroup4MixDto = mergeClassSplitClassAffirmDto.getClassGroup4MixDtos().get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (classGroup4MixDto.getCourseTimes().compareTo(0) <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("排课次数必须大于0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDtos.get(0).getClassGroupTeacherMapperList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(classGroupTeacherMapperList == null || classGroupTeacherMapperList.size() == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("请设置上课老师"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3464,7 +3780,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(noRepeatTeacherIds.size()!=classGroupTeacherMapperList.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("主教与助教存在冲突"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //所选课程不能有未开始的临时合并课程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //所选班级不能有未开始的临时合并课程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CourseSchedule> noStartNewCourseList = courseScheduleDao.queryNoStartNewCourseList(mergeClassSplitClassAffirmDto.getClassGroupIds()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(noStartNewCourseList != null && noStartNewCourseList.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("所选班级不能有未开始的临时合并课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Integer> allTeacherIds = classGroupTeacherMapperList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .map(ClassGroupTeacherMapper::getUserId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .collect(Collectors.toList()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3473,27 +3793,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, Teacher> teacherMap = teachers.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .collect(Collectors.toMap(Teacher::getId, teacher -> teacher)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (teacherDefaultMusicGroupSalary == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if ((classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        StringUtils.isBlank(teacherDefaultMusicGroupSalary.getSalaryRuleJson())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else if (teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        || teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        || teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        || teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (teacherDefaultMusicGroupSalary == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ((classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    StringUtils.isBlank(teacherDefaultMusicGroupSalary.getSalaryRuleJson())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    || teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    || teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    || teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |