|
@@ -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,24 +554,81 @@ 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) {
|
|
|
- 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());
|
|
|
- courseSchedules.get(0).setStartClassTime(courseSchedules.get(1).getStartClassTime());
|
|
|
- courseSchedules.get(0).setEndClassTime(courseSchedules.get(1).getEndClassTime());
|
|
|
- courseSchedules.get(1).setClassDate(temp.getClassDate());
|
|
|
- courseSchedules.get(1).setStartClassTime(temp.getStartClassTime());
|
|
|
- courseSchedules.get(1).setEndClassTime(temp.getEndClassTime());
|
|
|
- courseScheduleDao.update(courseSchedules.get(0));
|
|
|
- courseScheduleDao.update(courseSchedules.get(1));
|
|
|
+ if(courseScheduleId1.equals(courseScheduleId2)){
|
|
|
+ throw new BizException("请选择不同的课程");
|
|
|
+ }
|
|
|
+ CourseSchedule courseSchedule1 = courseScheduleDao.get(courseScheduleId1);
|
|
|
+ CourseSchedule courseSchedule2 = courseScheduleDao.get(courseScheduleId2);
|
|
|
+
|
|
|
+ //获取两个课程的主教、助教
|
|
|
+ List<Long> courseScheduleIds=new ArrayList<>();
|
|
|
+ courseScheduleIds.add(courseScheduleId1);
|
|
|
+ courseScheduleIds.add(courseScheduleId2);
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
|
|
|
+ Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleTeacherSalaryByCourse = courseScheduleTeacherSalaries.stream()
|
|
|
+ .collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
|
|
|
+ //课程1的主教、助教
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries1 = courseScheduleTeacherSalaryByCourse.get(courseScheduleId1);
|
|
|
+ //课程2的主教、助教
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries2 = courseScheduleTeacherSalaryByCourse.get(courseScheduleId2);
|
|
|
+
|
|
|
+ Map<TeachTypeEnum, List<CourseScheduleTeacherSalary>> ct1 = courseScheduleTeacherSalaries1.stream()
|
|
|
+ .collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getTeacherRole));
|
|
|
+
|
|
|
+ Map<TeachTypeEnum, List<CourseScheduleTeacherSalary>> ct2 = courseScheduleTeacherSalaries2.stream()
|
|
|
+ .collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getTeacherRole));
|
|
|
+
|
|
|
+ //交换两节课的主教、助教
|
|
|
+ if(Objects.nonNull(ct1.get(TeachTypeEnum.BISHOP))){
|
|
|
+ courseSchedule1.setActualTeacherId(ct1.get(TeachTypeEnum.BISHOP).get(0).getUserId());
|
|
|
+ }else{
|
|
|
+ courseSchedule1.setActualTeacherId(null);
|
|
|
+ }
|
|
|
+ if(Objects.nonNull(ct2.get(TeachTypeEnum.BISHOP))){
|
|
|
+ courseSchedule2.setActualTeacherId(ct2.get(TeachTypeEnum.BISHOP).get(0).getUserId());
|
|
|
+ }else{
|
|
|
+ courseSchedule2.setActualTeacherId(null);
|
|
|
+ }
|
|
|
+ List<CourseScheduleTeacherSalary> ct1t = ct1.get(TeachTypeEnum.TEACHING);
|
|
|
+ if(CollectionUtils.isEmpty(ct1t)){
|
|
|
+ courseSchedule1.setTeachingTeacherIdList(null);
|
|
|
+ }else{
|
|
|
+ List<Integer> collect = ct1t.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toList());
|
|
|
+ collect.stream().distinct();
|
|
|
+ courseSchedule1.setTeachingTeacherIdList(collect);
|
|
|
+ }
|
|
|
+ List<CourseScheduleTeacherSalary> ct2t = ct2.get(TeachTypeEnum.TEACHING);
|
|
|
+ if(CollectionUtils.isEmpty(ct2t)){
|
|
|
+ courseSchedule2.setTeachingTeacherIdList(null);
|
|
|
+ }else{
|
|
|
+ List<Integer> collect = ct2t.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toList());
|
|
|
+ collect.stream().distinct();
|
|
|
+ courseSchedule2.setTeachingTeacherIdList(collect);
|
|
|
+ }
|
|
|
+ courseSchedule1.setId(courseScheduleId2);
|
|
|
+ courseSchedule2.setId(courseScheduleId1);
|
|
|
+ List<CourseSchedule> courseSchedules=new ArrayList<>();
|
|
|
+ courseSchedules.add(courseSchedule1);
|
|
|
+ courseSchedules.add(courseSchedule2);
|
|
|
+ classStartDateAdjust(courseSchedules);
|
|
|
}
|
|
|
|
|
|
@Override
|