Jelajahi Sumber

fix 临时班课酬错误问题

周箭河 5 tahun lalu
induk
melakukan
61ca93bca9

+ 57 - 20
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1103,6 +1103,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             int dayOfWeek = now.getDayOfWeek().getValue();//当前星期
             for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
+                if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
+                    throw new BizException("排课循环周期错误,请核查");
+                }
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
@@ -1214,7 +1217,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
         //老师结算表
         courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
-
         //学生结算表
         courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPaymentList);
         return classGroup;
@@ -1239,13 +1241,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //1、更新班级关联老师信息
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 
-        //5、插入班级排课信息
+        Integer teacherId = null;
+        for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) {
+            if (groupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP)) {
+                teacherId = groupTeacherMapper.getUserId();
+                break;
+            }
+        }
+
+        //2、获取班级学生
+        List<StudentRegistration> studentList = studentRegistrationService.findClassGroupStu(musicGroup.getId(), classGroup.getId());
+
+        //3、插入班级排课信息
         LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
 
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
-        BigDecimal expectPrice = new BigDecimal("0");
+        List<CourseSchedule> courseScheduleList = new ArrayList<>();
+
         int times = 0;
         Map<String, Integer> holidayDays = new HashMap<>();
         if (classGroup4MixDto.getHoliday()) {
@@ -1262,6 +1276,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             int dayOfWeek = now.getDayOfWeek().getValue();
             for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
+                if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
+                    throw new BizException("排课循环周期错误,请核查");
+                }
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
@@ -1286,11 +1303,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
                 courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
                 courseSchedule.setType(classGroup4MixDto.getCourseType());
-                courseSchedule.setName(subjectNames + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
+                courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
                 courseSchedule.setGroupType(GroupType.MUSIC);
-
+                courseSchedule.setTeacherId(teacherId);
+                courseSchedule.setActualTeacherId(teacherId);
                 courseScheduleDao.insert(courseSchedule);
-
+                courseScheduleList.add(courseSchedule);
                 times++;
 
                 for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
@@ -1316,6 +1334,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                     }
+                    //课堂课课酬
+                    if (musicGroup.isClassroomLessons()) {
+                        //课程时长与结算单位时长占比
+                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
+                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    }
+                    //基础技能提高课
+                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
+                        //课程时长与结算单位时长占比
+                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
+                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                        if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                            baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                        }
+                    }
                     salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
 
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
@@ -1330,18 +1363,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     courseScheduleTeacherSalary.setUpdateTime(date);
                     courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
                 }
-//                for (StudentRegistration studentRegistration : studentList) {
-//                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-//                    courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
-//                    courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
-//                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-//                    courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
-//                    courseScheduleStudentPayment.setExpectPrice(expectPrice);
-//                    courseScheduleStudentPayment.setCreateTime(date);
-//                    courseScheduleStudentPayment.setUpdateTime(date);
-//                    courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
-//                    courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
-//                }
+                for (StudentRegistration studentRegistration : studentList) {
+                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                    courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
+                    courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
+                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                    courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
+                    courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+                    courseScheduleStudentPayment.setCreateTime(date);
+                    courseScheduleStudentPayment.setUpdateTime(date);
+                    courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+                    courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
+                }
                 if (classGroup4MixDto.getCourseTimes().equals(times)) {
                     break WhileNode;
                 }
@@ -1352,6 +1385,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 break;
             }
         }
+
+        //检测新排课冲突
+        courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
+
         //老师结算表
         courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
 
@@ -1457,7 +1494,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             int dayOfWeek = now.getDayOfWeek().getValue();
             for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
-                if(courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7){
+                if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
                     throw new BizException("排课循环周期错误,请核查");
                 }
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
@@ -1816,7 +1853,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             userIdList.add(musicGroup.getTeamTeacherId());
             userIdList.add(musicGroup.getOperatorUserId());
             userIdList.add(musicGroup.getDirectorUserId());
-            if (classGroupImGroupDto.getUserIds() != null && classGroupImGroupDto.getUserIds().size()>0) {
+            if (classGroupImGroupDto.getUserIds() != null && classGroupImGroupDto.getUserIds().size() > 0) {
                 userIdList.addAll(classGroupImGroupDto.getUserIds());
             }