Pārlūkot izejas kodu

Merge branch 'course_adjust'

Joburgess 4 gadi atpakaļ
vecāks
revīzija
0950572fc5

+ 35 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -2833,6 +2833,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			return BaseController.succeed();
 		}
 
+		Set<String> musicGroupIds = oldCourses.stream().filter(c -> MUSIC.equals(c.getGroupType())).map(CourseSchedule::getMusicGroupId).collect(Collectors.toSet());
+		if(!CollectionUtils.isEmpty(musicGroupIds)){
+			List<MusicGroup> musicGroups = musicGroupDao.getMusicGroupByIds(new ArrayList<>(musicGroupIds));
+			if(CollectionUtils.isEmpty(musicGroups)){
+				throw new BizException("调整失败:乐团信息异常");
+			}
+			long errMusicGroupNum = musicGroups.stream().filter(m -> !MusicGroupStatusEnum.PROGRESS.equals(m.getStatus())).count();
+			if(errMusicGroupNum>0){
+				throw new BizException("调整失败:调整的课程所在乐团处于非进行中");
+			}
+		}
+
 		List<CourseScheduleTeacherSalary> oldCourseScheduleTeacherSalaryList = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseAdjustInfo.getCourseScheduleIds());
 		Map<Long, List<CourseScheduleTeacherSalary>> courseSalaryListMap = new HashMap<>();
 		if(!CollectionUtils.isEmpty(oldCourseScheduleTeacherSalaryList)){
@@ -2858,6 +2870,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		//获取主教编号
 		Integer mainTeacherId = null;
 		if(!CollectionUtils.isEmpty(courseAdjustInfo.getClassGroupTeacherMapperList())){
+			Map<Integer, Long> userNumMap = courseAdjustInfo.getClassGroupTeacherMapperList().stream().collect(Collectors.groupingBy(ClassGroupTeacherMapper::getUserId, Collectors.counting()));
+			if(userNumMap.containsValue(Long.valueOf("2"))){
+				throw new BizException("主教与助教不可重复");
+			}
 			ClassGroupTeacherMapper classGroupTeacherMapper = courseAdjustInfo.getClassGroupTeacherMapperList().stream().filter(c -> TeachTypeEnum.BISHOP.equals(c.getTeacherRole())).findAny().get();
 			if(Objects.nonNull(classGroupTeacherMapper)){
 				mainTeacherId = classGroupTeacherMapper.getUserId();
@@ -2866,7 +2882,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		//上课日期变更
 		//间隔天数
-		int betweenDays = 0, initBetweenDays = 0;
+		int betweenDays = 0;
 		//节假日
 		Set<String> holidayDays = new HashSet<>();
 		if(Objects.nonNull(courseAdjustInfo.getPauseDate())&&Objects.nonNull(courseAdjustInfo.getRecoveryDate())){
@@ -2881,7 +2897,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			LocalDate recoveryDate = LocalDate.parse(courseAdjustInfo.getRecoveryDate(), DateUtil.dateFormatter);
 
 			betweenDays = (int) (recoveryDate.toEpochDay()-pauseDate.toEpochDay());
-			initBetweenDays = betweenDays;
 		}
 
 		//上课时间变更
@@ -2907,7 +2922,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				LocalDate classDate = LocalDateTime.ofInstant(oldCourses.get(i).getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
 				classDate = classDate.plusDays(betweenDays);
 				if (courseAdjustInfo.getHoliday() && holidayDays.contains(classDate.toString())) {
-					betweenDays=betweenDays+initBetweenDays;
+					betweenDays=betweenDays+7;
 					i=i-1;
 					continue;
 				}
@@ -2941,15 +2956,16 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 			if(Objects.nonNull(courseAdjustInfo.getTeachMode())&&!courseAdjustInfo.getTeachMode().equals(oldCourses.get(i).getTeachMode())){
 				oldCourses.get(i).setTeachMode(courseAdjustInfo.getTeachMode());
-				if(TeachModeEnum.ONLINE.equals(courseAdjustInfo.getTeachMode())){
-					oldCourses.get(i).setSchoolId(null);
-				}
 				if(VIP.equals(oldCourses.get(i).getGroupType())){
 					changeSalaryTeachTypes.add(TeachTypeEnum.BISHOP);
 					courseScheduleTeacherSalaryDao.deleteWithCourseAndTeachRole(Arrays.asList(oldCourses.get(i).getId()), TeachTypeEnum.BISHOP);
 				}
 			}
 
+			if(TeachModeEnum.ONLINE.equals(courseAdjustInfo.getTeachMode())){
+				oldCourses.get(i).setSchoolId(null);
+			}
+
 			//主教变更
 			if(Objects.nonNull(mainTeacherId)){
 				oldCourses.get(i).setActualTeacherId(mainTeacherId);
@@ -3390,7 +3406,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
         }
 
-        //课程冲突检测
+		Set<String> musicGroupIds = oldCourseScheduleList.stream().filter(c -> MUSIC.equals(c.getGroupType())).map(CourseSchedule::getMusicGroupId).collect(Collectors.toSet());
+        if(!CollectionUtils.isEmpty(musicGroupIds)){
+			List<MusicGroup> musicGroups = musicGroupDao.getMusicGroupByIds(new ArrayList<>(musicGroupIds));
+			if(CollectionUtils.isEmpty(musicGroups)){
+				throw new BizException("调整失败:乐团信息异常");
+			}
+			long errMusicGroupNum = musicGroups.stream().filter(m -> !MusicGroupStatusEnum.PROGRESS.equals(m.getStatus())).count();
+			if(errMusicGroupNum>0){
+				throw new BizException("调整失败:调整的课程所在乐团处于非进行中");
+			}
+		}
+
+		//课程冲突检测
         checkNewCourseSchedules(newCourseSchedules, false,false);
 
 		Map<Long, List<TeacherAttendance>> teacherAttendanceMap = new HashMap<Long, List<TeacherAttendance>>();
@@ -3535,10 +3563,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				Map<Integer, Map<Integer, TeacherDefaultVipGroupSalary>> vipGroupSalaryMap = new HashMap<Integer, Map<Integer, TeacherDefaultVipGroupSalary>>();
 
 				if (newCourseSchedule.getGroupType() == GroupType.MUSIC) {
-					MusicGroup musicGroup = musicGroupDao.get(newCourseSchedule.getMusicGroupId());
-					if(Objects.isNull(musicGroup)||!MusicGroupStatusEnum.PROGRESS.equals(musicGroup.getStatus())){
-						throw new BizException("非进行中乐团不可调整课程");
-					}
 					// 所有教师列表
 					List<Teacher> teachers = teacherDao.findByTeacherIds(newTeacherIdList);
 					teacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, teacher -> teacher));