|
@@ -1,5 +1,6 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
@@ -182,6 +183,18 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
if (CollectionUtils.isEmpty(organAndSubjectTeachers)) {
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
+ boolean checkTeacherLeaveDate = true;
|
|
|
+ SysConfig allTeacherLeaveDataConfig = sysConfigService.findByParamName(SysConfigService.TEACHER_LEAVE_DATA);
|
|
|
+ JSONObject allTeacherLeaveData = JSONObject.parseObject(allTeacherLeaveDataConfig.getParanValue());
|
|
|
+ JSONObject organTeacherLeaveData = null;
|
|
|
+ if(Objects.nonNull(allTeacherLeaveData)){
|
|
|
+ organTeacherLeaveData = allTeacherLeaveData.getJSONObject(sysUser.getOrganId().toString());
|
|
|
+ }
|
|
|
+ if(Objects.isNull(organTeacherLeaveData)){
|
|
|
+ checkTeacherLeaveDate=false;
|
|
|
+ }
|
|
|
+
|
|
|
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());
|
|
@@ -224,6 +237,31 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
|
|
|
Map<Integer, List<CourseSchedule>> teacherCoursesMap = allTeacherCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getActualTeacherId));
|
|
|
for (Integer teacherId : teacherIds) {
|
|
|
+
|
|
|
+ JSONObject teacherLeaveData=null;
|
|
|
+ if(checkTeacherLeaveDate){
|
|
|
+ teacherLeaveData=organTeacherLeaveData.getJSONObject(teacherId.toString());
|
|
|
+ }
|
|
|
+ Date leaveStartTime=null;
|
|
|
+ Date leaveEndTime=null;
|
|
|
+ if(Objects.isNull(teacherLeaveData)){
|
|
|
+ checkTeacherLeaveDate=false;
|
|
|
+ }else{
|
|
|
+ leaveStartTime=teacherLeaveData.getDate("leave_start_time");
|
|
|
+ leaveEndTime=teacherLeaveData.getDate("leave_end_time");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(checkTeacherLeaveDate){
|
|
|
+ if(practiceGroup.getFirstCourseTime().before(leaveEndTime)
|
|
|
+ && firstClassEndTime.after(leaveStartTime)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(practiceGroup.getSecondCourseTime().before(leaveEndTime)
|
|
|
+ && secondClassEndTime.after(leaveStartTime)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
List<CourseSchedule> teacherCourses = teacherCoursesMap.get(teacherId);
|
|
|
if (CollectionUtils.isEmpty(teacherCourses)) {
|
|
|
if (!excludeFirstTime) {
|
|
@@ -375,6 +413,18 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
|
|
|
List<Integer> teacherIds = schoolSubjectTeachersMap.get(schoolId).get(practiceGroup.getSubjectId());
|
|
|
teacherDao.lockTeachers(teacherIds);
|
|
|
+
|
|
|
+ boolean checkTeacherLeaveDate = true;
|
|
|
+ SysConfig allTeacherLeaveDataConfig = sysConfigService.findByParamName(SysConfigService.TEACHER_LEAVE_DATA);
|
|
|
+ JSONObject allTeacherLeaveData = JSONObject.parseObject(allTeacherLeaveDataConfig.getParanValue());
|
|
|
+ JSONObject organTeacherLeaveData = null;
|
|
|
+ if(Objects.nonNull(allTeacherLeaveData)){
|
|
|
+ organTeacherLeaveData = allTeacherLeaveData.getJSONObject(GUANGZHOU_ORGAN_ID.toString());
|
|
|
+ }
|
|
|
+ if(Objects.isNull(organTeacherLeaveData)){
|
|
|
+ checkTeacherLeaveDate=false;
|
|
|
+ }
|
|
|
+
|
|
|
SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
|
|
|
Integer practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
|
|
|
Date now = new Date();
|
|
@@ -414,6 +464,31 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
|
|
|
Map<Integer, List<CourseSchedule>> teacherCoursesMap = allTeacherCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getActualTeacherId));
|
|
|
for (Integer teacherId : teacherIds) {
|
|
|
+
|
|
|
+ JSONObject teacherLeaveData=null;
|
|
|
+ if(checkTeacherLeaveDate){
|
|
|
+ teacherLeaveData=organTeacherLeaveData.getJSONObject(teacherId.toString());
|
|
|
+ }
|
|
|
+ Date leaveStartTime=null;
|
|
|
+ Date leaveEndTime=null;
|
|
|
+ if(Objects.isNull(teacherLeaveData)){
|
|
|
+ checkTeacherLeaveDate=false;
|
|
|
+ }else{
|
|
|
+ leaveStartTime=teacherLeaveData.getDate("leave_start_time");
|
|
|
+ leaveEndTime=teacherLeaveData.getDate("leave_end_time");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(checkTeacherLeaveDate){
|
|
|
+ if(practiceGroup.getFirstCourseTime().before(leaveEndTime)
|
|
|
+ && firstClassEndTime.after(leaveStartTime)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(practiceGroup.getSecondCourseTime().before(leaveEndTime)
|
|
|
+ && secondClassEndTime.after(leaveStartTime)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
List<CourseSchedule> teacherCourses = teacherCoursesMap.get(teacherId);
|
|
|
if (CollectionUtils.isEmpty(teacherCourses)) {
|
|
|
if (!excludeFirstTime) {
|
|
@@ -602,6 +677,17 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
}
|
|
|
teacherDao.lockTeachers(teacherIds);
|
|
|
|
|
|
+ boolean checkTeacherLeaveDate = true;
|
|
|
+ SysConfig allTeacherLeaveDataConfig = sysConfigService.findByParamName(SysConfigService.TEACHER_LEAVE_DATA);
|
|
|
+ JSONObject allTeacherLeaveData = JSONObject.parseObject(allTeacherLeaveDataConfig.getParanValue());
|
|
|
+ JSONObject organTeacherLeaveData = null;
|
|
|
+ if(Objects.nonNull(allTeacherLeaveData)){
|
|
|
+ organTeacherLeaveData = allTeacherLeaveData.getJSONObject(sysUser.getOrganId().toString());
|
|
|
+ }
|
|
|
+ if(Objects.isNull(organTeacherLeaveData)){
|
|
|
+ checkTeacherLeaveDate=false;
|
|
|
+ }
|
|
|
+
|
|
|
Date now = new Date();
|
|
|
if (now.before(applyStartDay)) {
|
|
|
now = applyStartDay;
|
|
@@ -641,9 +727,31 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
if (excludeTeacherIds.contains(teacherId)) {
|
|
|
continue;
|
|
|
}
|
|
|
+ JSONObject teacherLeaveData=null;
|
|
|
+ if(checkTeacherLeaveDate){
|
|
|
+ teacherLeaveData=organTeacherLeaveData.getJSONObject(teacherId.toString());
|
|
|
+ }
|
|
|
+ Date leaveStartTime=null;
|
|
|
+ Date leaveEndTime=null;
|
|
|
+ if(Objects.isNull(teacherLeaveData)){
|
|
|
+ checkTeacherLeaveDate=false;
|
|
|
+ }else{
|
|
|
+ leaveStartTime=teacherLeaveData.getDate("leave_start_time");
|
|
|
+ leaveEndTime=teacherLeaveData.getDate("leave_end_time");
|
|
|
+ }
|
|
|
List<CourseSchedule> teacherCourses = teacherCoursesMap.get(teacherId);
|
|
|
if (CollectionUtils.isEmpty(teacherCourses)) {
|
|
|
- allTeacherFreeDates = new HashSet<>(enableApplyDates);
|
|
|
+ for (Date enableApplyDate : enableApplyDates) {
|
|
|
+ if (Objects.nonNull(firstClassTime) && DateUtil.isSameDay(enableApplyDate, firstClassTime)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Date enableApplyDateCourseEndTime = DateUtil.addMinutes(enableApplyDate, practiceCourseMinutes);
|
|
|
+ if (checkTeacherLeaveDate&&enableApplyDateCourseEndTime.after(leaveStartTime)
|
|
|
+ &&enableApplyDate.before(leaveEndTime)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ allTeacherFreeDates.add(enableApplyDate);
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -694,6 +802,11 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
|
|
|
List<Date> tempEnableApplyDates = new ArrayList<>();
|
|
|
for (Date enableApplyDate : enableApplyDates) {
|
|
|
+ Date enableApplyDateCourseEndTime = DateUtil.addMinutes(enableApplyDate, practiceCourseMinutes);
|
|
|
+ if (checkTeacherLeaveDate&&enableApplyDateCourseEndTime.after(leaveStartTime)
|
|
|
+ &&enableApplyDate.before(leaveEndTime)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (!enableApplyDate.before(enableApplyStartDate)) {
|
|
|
tempEnableApplyDates.add(enableApplyDate);
|
|
|
}
|
|
@@ -748,6 +861,13 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
}
|
|
|
}
|
|
|
if (!CollectionUtils.isEmpty(allTeacherFreeDates)) {
|
|
|
+// if(Objects.nonNull(firstClassTime)){
|
|
|
+// Set<String> days = allTeacherFreeDates.stream()
|
|
|
+// .map(date -> DateUtil.dateToString(date, "yyyy-MM-dd")).collect(Collectors.toSet());
|
|
|
+// if(days.size()<2){
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// }
|
|
|
break;
|
|
|
}
|
|
|
}
|