| 
					
				 | 
			
			
				@@ -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.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -65,6 +66,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ClassGroupService classGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ClassGroupDao classGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private TeacherDao teacherDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public BaseDAO<Long, CourseSchedule> getDAO() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -465,7 +468,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//课程对应助教集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<CourseScheduleTeacherSalary> teachingTeacherSalarys = courseScheduleDao.findTeachingTeachers(newCourseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<Long, List<CourseScheduleTeacherSalary>> courseTeachingTeacherMaps = teachingTeacherSalarys.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<Long,List<CourseScheduleTeacherSalary>> courseTeachingTeacherMaps = teachingTeacherSalarys.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Map<Long, CourseSchedule> oldCourseSchedules = oldCourseScheduleList.stream().collect(Collectors.toMap(CourseSchedule::getId,courseSchedule -> courseSchedule)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		newCourseSchedules.forEach(newCourseSchedule -> { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -480,26 +483,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 throw new BizException("不能调整今天及以前的课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ArrayList<Date> dates = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			dates.add(newCourseSchedule.getClassDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			List<CourseSchedule> coursesByDates = courseScheduleDao.findOverLapCoursesInDay(dates,newCourseSchedule.getStartClassTime(),newCourseSchedule.getEndClassTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			//判断是否存在同时间上课的班级 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(null==coursesByDates||coursesByDates.size()<=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				courseScheduleDao.update(newCourseSchedule); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				coursesByDates.forEach(courseSchedule -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if(courseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						//存在时间重叠,需要前端重新调整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						throw new BizException("所选教师在当天课程安排上存在重叠!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				List<Integer> repeatClassGroupIds = coursesByDates.stream().map(CourseSchedule::getClassGroupId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				checkStudentIsRepeat(repeatClassGroupIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				oldCourseSchedule.setClassDate(newCourseSchedule.getClassDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				oldCourseSchedule.setStartClassTime(newCourseSchedule.getStartClassTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				oldCourseSchedule.setEndClassTime(newCourseSchedule.getEndClassTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				courseScheduleDao.update(oldCourseSchedule); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			oldCourseSchedule.setClassDate(newCourseSchedule.getClassDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			oldCourseSchedule.setStartClassTime(newCourseSchedule.getStartClassTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			oldCourseSchedule.setEndClassTime(newCourseSchedule.getEndClassTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			courseScheduleDao.update(oldCourseSchedule); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			//被修改的教师编号列表,需要将预计薪水置零 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			List<Integer> beReplaceTeacherIds=new ArrayList<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -511,7 +498,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					VipGroup byCourseSchedule = vipGroupDao.findByCourseSchedule(newCourseSchedule.getId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(newCourseSchedule.getActualTeacherId(), byCourseSchedule.getVipGroupCategoryId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					List<CourseSchedule> courseSchedules=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					coursesByDates.add(newCourseSchedule); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(byCourseSchedule, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							courseSchedules, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							byTeacherAndCategory.getOnlineClassesSalary(), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -568,14 +554,35 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//生成修改后的教师课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(!CollectionUtils.isEmpty(needCreateCourseScheduleTeacherSalaryCourse)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			classGroupTeacherMapperService.createCourseScheduleTeacherSalary(needCreateCourseScheduleTeacherSalaryCourse); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			classGroupTeacherMapperService.createCourseScheduleTeacherSalary(needCreateCourseScheduleTeacherSalaryCourse,oldCourseSchedules); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//推送课时调整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Set<Integer> teacherIds = newCourseSchedules.stream().map(e -> e.getActualTeacherId()).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(teacherIds == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherIds = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		teacherIds.addAll(oldCourseScheduleList.stream().map(e -> e.getActualTeacherId()).collect(Collectors.toSet())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		HashMap<Integer,String> map = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(teacherIds, ",")))), HashMap.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(map != null && map.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysMessageService.batchSendMessage(MessageSender.YIMEI,MessageTypeEnum.TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					map,null,0,"",""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void courseSwap(Long courseScheduleId1, Long courseScheduleId2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(courseScheduleId1.equals(courseScheduleId2)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请选择不同的课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CourseSchedule courseSchedule1 = courseScheduleDao.get(courseScheduleId1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CourseSchedule courseSchedule2 = courseScheduleDao.get(courseScheduleId2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		courseSchedule1.setId(courseScheduleId2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		courseSchedule2.setId(courseScheduleId1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<CourseSchedule> courseSchedules = courseScheduleDao.findCourseSchedulesByIds(new Long[]{courseScheduleId1, courseScheduleId2}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		CourseSchedule temp=new CourseSchedule(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		BeanUtils.copyProperties(courseSchedules.get(0),temp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		courseSchedules.get(0).setClassDate(courseSchedules.get(1).getClassDate()); 
			 |