| 
					
				 | 
			
			
				@@ -80,10 +80,11 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static Map<Integer,String> subjectSubjectsMap=new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private static Date activityStartDate,activityEndDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static Date activityStartDate,activityEndDate,applyStartDay; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     static{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        activityStartDate=DateUtil.stringToDate("2020-02-01 00:00:00"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        applyStartDay=DateUtil.stringToDate("2020-02-08 00:00:00"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        activityStartDate=DateUtil.stringToDate("2020-02-09 00:00:00"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         activityEndDate=DateUtil.stringToDate("2020-03-25 00:00:00"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         schoolSubjectTeachersMap=new HashMap<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -178,45 +179,57 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Integer> teacherIds = organAndSubjectTeachers.stream().map(TeacherBasicDto::getId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Calendar calendar = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(now.before(applyStartDay)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            now=applyStartDay; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.setTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.HOUR_OF_DAY, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.MINUTE, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.SECOND, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.add(Calendar.DATE,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date applyStartDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.add(Calendar.DATE,7); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date applyEndDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<CourseSchedule> allTeacherCourses = courseScheduleDao.findTeachersCoursesWithDateRange(teacherIds, applyStartDay, applyEndDay); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Integer> includeTeacherIds=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        while (calendar.getTime().before(activityEndDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            calendar.add(Calendar.DATE,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date applyStartDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            calendar.add(Calendar.DATE,7); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date applyEndDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(applyEndDay.after(activityEndDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                applyEndDay=activityEndDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CourseSchedule> allTeacherCourses = courseScheduleDao.findTeachersCoursesWithDateRange(teacherIds, applyStartDay, applyEndDay); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date firstClassEndTime = DateUtil.addMinutes(practiceGroup.getFirstCourseTime(), practiceCourseMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date secondClassEndTime = DateUtil.addMinutes(practiceGroup.getSecondCourseTime(), practiceCourseMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date firstClassEndTime = DateUtil.addMinutes(practiceGroup.getFirstCourseTime(), practiceCourseMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date secondClassEndTime = DateUtil.addMinutes(practiceGroup.getSecondCourseTime(), practiceCourseMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, List<CourseSchedule>> teacherCoursesMap = allTeacherCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getActualTeacherId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (Integer teacherId : teacherIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<CourseSchedule> teacherCourses = teacherCoursesMap.get(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(CollectionUtils.isEmpty(teacherCourses)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                includeTeacherIds.add(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            teacherCourses.sort(Comparator.comparing(CourseSchedule::getStartClassTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean enableCreateFirstCourse=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean enableCreateSecondCourse=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (int i=0;i<teacherCourses.size()-1;i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                CourseSchedule preCourseSchedule = teacherCourses.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(practiceGroup.getFirstCourseTime().before(preCourseSchedule.getEndClassTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        &&firstClassEndTime.after(preCourseSchedule.getStartClassTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    enableCreateFirstCourse=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, List<CourseSchedule>> teacherCoursesMap = allTeacherCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getActualTeacherId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Integer teacherId : teacherIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<CourseSchedule> teacherCourses = teacherCoursesMap.get(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(CollectionUtils.isEmpty(teacherCourses)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    includeTeacherIds.add(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                teacherCourses.sort(Comparator.comparing(CourseSchedule::getStartClassTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                boolean enableCreateFirstCourse=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                boolean enableCreateSecondCourse=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int i=0;i<teacherCourses.size()-1;i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    CourseSchedule preCourseSchedule = teacherCourses.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(practiceGroup.getFirstCourseTime().before(preCourseSchedule.getEndClassTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            &&firstClassEndTime.after(preCourseSchedule.getStartClassTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        enableCreateFirstCourse=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(practiceGroup.getSecondCourseTime().before(preCourseSchedule.getEndClassTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        &&secondClassEndTime.after(preCourseSchedule.getStartClassTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    enableCreateSecondCourse=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(practiceGroup.getSecondCourseTime().before(preCourseSchedule.getEndClassTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            &&secondClassEndTime.after(preCourseSchedule.getStartClassTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        enableCreateSecondCourse=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (enableCreateFirstCourse&&enableCreateSecondCourse){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    includeTeacherIds.add(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (enableCreateFirstCourse&&enableCreateSecondCourse){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                includeTeacherIds.add(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!CollectionUtils.isEmpty(includeTeacherIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(CollectionUtils.isEmpty(includeTeacherIds)){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -267,46 +280,58 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Integer practiceCourseMinutes=practiceCourseMinutesConfig.getParanValue(Integer.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(now.before(applyStartDay)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            now=applyStartDay; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Calendar calendar = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.setTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.HOUR_OF_DAY, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.MINUTE, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.SECOND, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.add(Calendar.DATE,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date applyStartDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.add(Calendar.DATE,7); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date applyEndDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<CourseSchedule> allTeacherCourses = courseScheduleDao.findTeachersCoursesWithDateRange(teacherIds, applyStartDay, applyEndDay); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Integer> includeTeacherIds=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        while (calendar.getTime().before(activityEndDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            calendar.add(Calendar.DATE,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date applyStartDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            calendar.add(Calendar.DATE,7); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date applyEndDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(applyEndDay.after(activityEndDate)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                applyEndDay=activityEndDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date firstClassEndTime = DateUtil.addMinutes(practiceGroup.getFirstCourseTime(), practiceCourseMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date secondClassEndTime = DateUtil.addMinutes(practiceGroup.getSecondCourseTime(), practiceCourseMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CourseSchedule> allTeacherCourses = courseScheduleDao.findTeachersCoursesWithDateRange(teacherIds, applyStartDay, applyEndDay); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, List<CourseSchedule>> teacherCoursesMap = allTeacherCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getActualTeacherId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (Integer teacherId : teacherIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<CourseSchedule> teacherCourses = teacherCoursesMap.get(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(CollectionUtils.isEmpty(teacherCourses)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                includeTeacherIds.add(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            teacherCourses.sort(Comparator.comparing(CourseSchedule::getStartClassTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean enableCreateFirstCourse=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean enableCreateSecondCourse=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (int i=0;i<teacherCourses.size()-1;i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                CourseSchedule preCourseSchedule = teacherCourses.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(practiceGroup.getFirstCourseTime().before(preCourseSchedule.getEndClassTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        &&firstClassEndTime.after(preCourseSchedule.getStartClassTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    enableCreateFirstCourse=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date firstClassEndTime = DateUtil.addMinutes(practiceGroup.getFirstCourseTime(), practiceCourseMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date secondClassEndTime = DateUtil.addMinutes(practiceGroup.getSecondCourseTime(), practiceCourseMinutes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, List<CourseSchedule>> teacherCoursesMap = allTeacherCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getActualTeacherId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Integer teacherId : teacherIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<CourseSchedule> teacherCourses = teacherCoursesMap.get(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(CollectionUtils.isEmpty(teacherCourses)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    includeTeacherIds.add(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                teacherCourses.sort(Comparator.comparing(CourseSchedule::getStartClassTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                boolean enableCreateFirstCourse=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                boolean enableCreateSecondCourse=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int i=0;i<teacherCourses.size()-1;i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    CourseSchedule preCourseSchedule = teacherCourses.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(practiceGroup.getFirstCourseTime().before(preCourseSchedule.getEndClassTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            &&firstClassEndTime.after(preCourseSchedule.getStartClassTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        enableCreateFirstCourse=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(practiceGroup.getSecondCourseTime().before(preCourseSchedule.getEndClassTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        &&secondClassEndTime.after(preCourseSchedule.getStartClassTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    enableCreateSecondCourse=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(practiceGroup.getSecondCourseTime().before(preCourseSchedule.getEndClassTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            &&secondClassEndTime.after(preCourseSchedule.getStartClassTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        enableCreateSecondCourse=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (enableCreateFirstCourse&&enableCreateSecondCourse){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    includeTeacherIds.add(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (enableCreateFirstCourse&&enableCreateSecondCourse){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                includeTeacherIds.add(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!CollectionUtils.isEmpty(includeTeacherIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(CollectionUtils.isEmpty(includeTeacherIds)){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -365,19 +390,37 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("未找到用户分部属性"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map result = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<TeacherBasicDto> organAndSubjectTeachers = teacherDao.findTeaTeachersByOrganAndSubject(sysUser.getOrganId(), subjectSubjectsMap.get(subjectId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(organAndSubjectTeachers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            result.put("teacherFreeDates",new ArrayList<>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Set<Date> allTeacherFreeDates=new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Integer practiceCourseMinutes=practiceCourseMinutesConfig.getParanValue(Integer.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> teacherIds = organAndSubjectTeachers.stream().map(TeacherBasicDto::getId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Integer> teacherIds=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //如果是广州分部的,并且声部满足条件的需要特殊处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(sysUser.getOrganId().equals(GUANGZHOU_ORGAN_ID)&&GUANGZHOU_SUBJECTIDS.contains(subjectId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<MusicGroup>  userMusicGroups=musicGroupDao.findUserMusicGroups(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!CollectionUtils.isEmpty(userMusicGroups)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Collections.shuffle(userMusicGroups); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Integer schoolId = userMusicGroups.get(0).getSchoolId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(schoolSubjectTeachersMap.containsKey(schoolId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherIds = schoolSubjectTeachersMap.get(schoolId).get(subjectId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(CollectionUtils.isEmpty(teacherIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TeacherBasicDto> organAndSubjectTeachers = teacherDao.findTeaTeachersByOrganAndSubject(sysUser.getOrganId(), subjectSubjectsMap.get(subjectId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CollectionUtils.isEmpty(organAndSubjectTeachers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                result.put("teacherFreeDates",new ArrayList<>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teacherIds = organAndSubjectTeachers.stream().map(TeacherBasicDto::getId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(now.before(applyStartDay)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            now=applyStartDay; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Calendar calendar = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.setTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        findTeacherFreeTimes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.HOUR_OF_DAY, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.MINUTE, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.SECOND, 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -457,6 +500,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Date> result=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Calendar calendar = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(now.before(applyStartDay)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            now=applyStartDay; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.setTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         calendar.set(Calendar.SECOND, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SysConfig practiceApplyStartTimeConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_APPLY_START_TIME); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -497,15 +543,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Calendar calendar = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.setTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.set(Calendar.HOUR_OF_DAY, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.set(Calendar.MINUTE, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.set(Calendar.SECOND, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.add(Calendar.DATE,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date applyStartDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calendar.add(Calendar.DATE,8); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date applyEndDay = calendar.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (practiceGroup.getFirstCourseTime().before(activityStartDate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ||practiceGroup.getFirstCourseTime().after(activityEndDate)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("预约时间超过范围"); 
			 |