浏览代码

feat:乐团排课不同循环周期支持不同教师

Joburgess 4 年之前
父节点
当前提交
b07cf15ae9
共有 1 个文件被更改,包括 31 次插入50 次删除
  1. 31 50
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

+ 31 - 50
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -2295,6 +2295,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (classGroup == null) {
             throw new BizException("班级不存在");
         }
+        MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
 
         Boolean confirmGenerate = false;
         if(Objects.nonNull(classGroup4MixDtos.get(0).getConfirmGenerate())){
@@ -2306,35 +2307,29 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             teachMode = TeachModeEnum.ONLINE;
         }
 
-        List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupId);
-        List<ClassGroupTeacherMapper> newTeacherMapperList = classGroup4MixDtos.get(0).getClassGroupTeacherMapperList();
-        MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
-        if(musicGroup.getStatus() == PROGRESS){
-            if (byClassGroup != null && byClassGroup.size() > 0) {
-                ClassGroupTeacherMapper groupTeacherMapper = byClassGroup.stream().filter(classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole() == TeachTypeEnum.BISHOP).findFirst().get();
-                if (groupTeacherMapper != null) {
-                    imGroupMemberService.quit(classGroupId.longValue(), groupTeacherMapper.getUserId());
+        //1、更新班级关联老师信息
+        if (Objects.nonNull(classGroup4MixDtos.get(0).getCourseAddType()) && classGroup4MixDtos.get(0).getCourseAddType().equals("onlyUpdateTeacher")) {
+            List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupId);
+            List<ClassGroupTeacherMapper> newTeacherMapperList = classGroup4MixDtos.get(0).getClassGroupTeacherMapperList();
+            if(musicGroup.getStatus() == PROGRESS){
+                if (byClassGroup != null && byClassGroup.size() > 0) {
+                    ClassGroupTeacherMapper groupTeacherMapper = byClassGroup.stream().filter(classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole() == TeachTypeEnum.BISHOP).findFirst().get();
+                    if (groupTeacherMapper != null) {
+                        imGroupMemberService.quit(classGroupId.longValue(), groupTeacherMapper.getUserId());
+                    }
+                }
+                if (newTeacherMapperList.size() > 0) {
+                    //获取之前的班级老师
+                    Set<Integer> groupTeacher = classGroupDao.findGroupTeacher(classGroupId);
+                    groupTeacher.forEach(e -> {
+                        imGroupMemberService.quit(classGroupId.longValue(), e);
+                    });
+                    newTeacherMapperList.forEach(e -> {
+                        imGroupMemberService.join(classGroupId.longValue(), e.getUserId(), "指导老师", false);
+                    });
                 }
             }
-            if (newTeacherMapperList.size() > 0) {
-                //获取之前的班级老师
-                Set<Integer> groupTeacher = classGroupDao.findGroupTeacher(classGroupId);
-                groupTeacher.forEach(e -> {
-                    imGroupMemberService.quit(classGroupId.longValue(), e);
-                });
-                newTeacherMapperList.forEach(e -> {
-                    imGroupMemberService.join(classGroupId.longValue(), e.getUserId(), "指导老师", false);
-                });
-            }
-        }
-        //1、更新班级关联老师信息
-        List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = classGroup4MixDtos.get(0).getClassGroupTeacherMapperList();
 
-        Set<Integer> noRepeatTeacherIds = newClassGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
-        if (noRepeatTeacherIds.size() != newClassGroupTeacherMapperList.size()) {
-            throw new BizException("主教与助教存在冲突");
-        }
-        if (Objects.nonNull(classGroup4MixDtos.get(0).getCourseAddType()) && classGroup4MixDtos.get(0).getCourseAddType().equals("onlyUpdateTeacher")) {
             List<Integer> classGroupIds = new ArrayList<>();
             classGroupIds.add(classGroupId);
             // 删除历史记录
@@ -2363,30 +2358,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         String subjectNames = subjectList.stream().map(Subject::getName).collect(Collectors.joining("/"));
 
-        Integer teacherId = null;
-        for (ClassGroupTeacherMapper groupTeacherMapper : newClassGroupTeacherMapperList) {
-            groupTeacherMapper.setGroupType(classGroup.getGroupType());
-            groupTeacherMapper.setClassGroupId(classGroup.getId());
-            groupTeacherMapper.setMusicGroupId(classGroup4MixDtos.get(0).getMusicGroupId());
-            if (groupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP)) {
-                teacherId = groupTeacherMapper.getUserId();
-            }
-        }
-
-        Set<String> newTeacher = newClassGroupTeacherMapperList.stream().map(
-                classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole().getCode() + classGroupTeacherMapper.getUserId()
-        ).collect(Collectors.toSet());
-
-        List<ClassGroupTeacherMapper> oldClassGroupTeacherMapperList = classGroupTeacherMapperDao.findClassGroupTeachers(classGroup.getId().toString());
-
-        Set<String> oldTeacher = oldClassGroupTeacherMapperList.stream().map(
-                classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole().getCode() + classGroupTeacherMapper.getUserId()
-        ).collect(Collectors.toSet());
-
-        if (oldTeacher.size() != newTeacher.size() || !newTeacher.containsAll(oldTeacher)) {
-            classGroupTeacherMapperService.classGroupTeachersInsert(newClassGroupTeacherMapperList);
-        }
-
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         //2、获取班级学生
@@ -2401,6 +2372,16 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
 
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
+
+            List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
+
+            Set<Integer> noRepeatTeacherIds = newClassGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
+            if (noRepeatTeacherIds.size() != newClassGroupTeacherMapperList.size()) {
+                throw new BizException("主教与助教存在冲突");
+            }
+
+            Integer teacherId = newClassGroupTeacherMapperList.stream().filter(ct->TeachTypeEnum.BISHOP.equals(ct.getTeacherRole())).findAny().get().getUserId();
+
             //3、插入班级排课信息
             LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);