Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

Joburgess 4 rokov pred
rodič
commit
731cf919f9

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupOrganizationCourseSettingsDetail.java

@@ -31,6 +31,12 @@ public class MusicGroupOrganizationCourseSettingsDetail {
     private BigDecimal unitPrice = BigDecimal.ZERO;
 
     /**
+    * 总排课次数
+    */
+    @ApiModelProperty(value="总排课次数")
+    private Integer courseTotalNum;
+
+    /**
     * 课程原价
     */
     @ApiModelProperty(value="课程原价")
@@ -54,6 +60,14 @@ public class MusicGroupOrganizationCourseSettingsDetail {
     @ApiModelProperty(value="")
     private Date updateTime;
 
+    public Integer getCourseTotalNum() {
+        return courseTotalNum;
+    }
+
+    public void setCourseTotalNum(Integer courseTotalNum) {
+        this.courseTotalNum = courseTotalNum;
+    }
+
     public Integer getId() {
         return id;
     }

+ 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);
 
     /**
      * 班级调整(修改班级)

+ 31 - 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;
                         }
@@ -3620,6 +3620,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 if(unitPrice == null){
                     throw new BizException("分部默认课程类型单价不存在,请设置");
                 }
+                settingsDetail.setCourseTotalNum(subNum.intValue());
                 settingsDetail.setCourseType(CourseScheduleType.valueOf(courseType));
                 settingsDetail.setCourseTotalMinuties(Integer.parseInt(jsonObject.get(courseType).toString()) * subNum.intValue());
                 settingsDetail.setCourseCurrentPrice(unitPrice.multiply(new BigDecimal(settingsDetail.getCourseTotalMinuties())));
@@ -3715,10 +3716,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);
@@ -3733,7 +3736,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             List<Long> delCourseIds = courseScheduleDao.findNoStudentCourseIds(courseIds);
             if(delCourseIds != null && delCourseIds.size() > 0){
+                //删除课程
                 courseScheduleDao.deleteCourseSchedulesByClassGroupIds(delCourseIds);
+                //删除教师考勤
+                teacherAttendanceDao.batchDeleteByCourseSchedules(delCourseIds);
+                //删除教师课酬
+                courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
             }
             return "学员班级调整完成";
         }else {

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -972,7 +972,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		//获取没有学员的课程列表
 		List<Long> delCourseIds = courseScheduleDao.findNoStudentCourseIds(courseIds);
 		if(delCourseIds != null && delCourseIds.size() > 0){
+			//删除课程
 			courseScheduleDao.deleteCourseSchedulesByClassGroupIds(delCourseIds);
+			//删除教师考勤
+			teacherAttendanceDao.batchDeleteByCourseSchedules(delCourseIds);
+			//删除教师课酬
+			courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
 		}
 	}