zouxuan 4 年之前
父節點
當前提交
82bc9f17ba

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -281,10 +281,10 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
 
     /**
      * 合班拆班新建班级
-     * @param classGroup4MixDto
+     * @param classGroup4MixDtos
      * @return
      */
-    ClassGroup classGroupAdjust2(ClassGroup4MixDto classGroup4MixDto);
+    ClassGroup classGroupAdjust2(ClassGroup4MixDto classGroup4MixDtos);
 
     /**
      * 班级调整(修改班级)

+ 25 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1784,7 +1784,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
 
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        String classCourseMinute = null;
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
             if(classGroup4MixDto.getCourseTimeDtoList() == null || classGroup4MixDto.getCourseTimeDtoList().size() == 0){
                 break;
@@ -1986,7 +1985,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public List<CourseSchedule> getCourseSchedules(ClassGroup4MixDto classGroup4MixDto){
+    public List<CourseSchedule> getCourseSchedules(ClassGroup4MixDto classGroup4MixDto,List<CourseSchedule> courseScheduleList){
         Date date = new Date();
         String musicGroupId = classGroup4MixDto.getMusicGroupId();
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
@@ -2038,7 +2037,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
         }
         ClassGroup classGroup = classGroup4MixDto.getClassGroup();
-        List<CourseSchedule> courseScheduleList = new ArrayList<>();
+        courseScheduleList.clear();
         int times = 0;
         WhileNode:
         while (true) {
@@ -2133,7 +2132,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             Date stringToDate = DateUtil.stringToDate(classGroup4MixDto.getStartDate(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
             classGroup4MixDto.setStartDate(DateUtil.format(DateUtil.addDays(stringToDate, 7),DateUtil.ISO_EXPANDED_DATE_FORMAT));
             //再次尝试排课
-            courseScheduleList = getCourseSchedules(classGroup4MixDto);
+            courseScheduleList = getCourseSchedules(classGroup4MixDto,courseScheduleList);
             autoAdjust(classGroup4MixDto,courseScheduleList);
         }
         return courseScheduleList;
@@ -2161,27 +2160,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 
-        Set<Integer> noRepeatTeacherIds = classGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
-        if(noRepeatTeacherIds.size()!=classGroupTeacherMapperList.size()){
-            throw new BizException("主教与助教存在冲突");
-        }
-
         //获取默认的排课时长
         String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
         JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
         long classCourseDuration = Integer.parseInt(jsonObject.get(classGroup4MixDto.getCourseType().getCode()).toString());
-
-        //建班
-        ClassGroup classGroup = createClassGroup(classGroup4MixDto);
-        //排课
-        classGroup4MixDto.setClassGroup(classGroup);
-        List<CourseSchedule> courseScheduleList = getCourseSchedules(classGroup4MixDto);
-
-        //自动排课,校验冲突
-        if(courseScheduleList.size() > 0){
-            //冲突校验
-            courseScheduleList = autoAdjust(classGroup4MixDto,courseScheduleList);
-
+        ClassGroup classGroup = classGroup4MixDto.getClassGroup();
+        if(classGroup == null){
+            //建班
+            classGroup = createClassGroup(classGroup4MixDto);
+            classGroup4MixDto.setClassGroup(classGroup);
             //2、将学生加入新班级(学生注册表,关联表
             List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
             List<Integer> userIds = new ArrayList<>(); //用户ids
@@ -2214,6 +2201,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
             //创建IM群组
             addImGroup(classGroup, userIds);
+        }
+        //排课
+        List<CourseSchedule> courseScheduleList = new ArrayList<>();
+        getCourseSchedules(classGroup4MixDto,courseScheduleList);
+
+        //自动排课,校验冲突
+        if(courseScheduleList.size() > 0){
+            //冲突校验
+            courseScheduleList = autoAdjust(classGroup4MixDto,courseScheduleList);
 
             List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
                     .map(ClassGroupTeacherMapper::getUserId)
@@ -2294,7 +2290,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     //线上小班课
                     if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)||classGroup4MixDto.getCourseType().equals(CourseScheduleType.HIGH)) {
                         teacherDefaultMusicGroupSalary = collect.get(CourseSchedule.CourseScheduleType.HIGH_ONLINE);
-                        Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupTeacherMapper.getClassGroupId());
+                        Integer classGroupId = classGroupTeacherMapper.getClassGroupId();
+                        if(classGroupId == null){
+                            classGroupId = classGroup.getId();
+                        }
+                        Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupId);
                         if(studentNum>5){
                             studentNum=5;
                         }
@@ -3715,10 +3715,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //如果缴费项目不需要审核,那么生成班级以及课表
         if(status == null || status != AUDITING){
             //每种课程类型单独进行排课
+            ClassGroup classGroup = null;
             for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
+                classGroup4MixDto.setClassGroup(classGroup);
                 classGroup4MixDto.setMusicGroupStudentClassAdjustId(musicGroupStudentClassAdjust.getId());
                 classGroup4MixDto.setClassCourseMinute(musicGroupStudentClassAdjust.getClassCourseMinute());
-                classGroupService.classGroupAdjust2(classGroup4MixDto);
+                classGroup = classGroupService.classGroupAdjust2(classGroup4MixDto);
             }
             //排课完成后删除所选课程
             courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds,studentIds);