|
@@ -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("预约时间超过范围");
|