|
@@ -194,6 +194,78 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ public void createMusicGroupTeacherMapper(List<CourseSchedule> courseSchedules, String musicGroupId) {
|
|
|
|
+ Date date=new Date();
|
|
|
|
+ MusicGroup musicGroup = musicGroupService.get(musicGroupId);
|
|
|
|
+ //老师默认的课酬
|
|
|
|
+ Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
|
|
|
|
+ for (CourseSchedule classGroupNoStartCourseSchedule : courseSchedules) {
|
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
|
+ //课时长度
|
|
|
|
+ int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(), classGroupNoStartCourseSchedule.getEndClassTime());
|
|
|
|
+ List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupNoStartCourseSchedule.getClassGroupId());
|
|
|
|
+ for (ClassGroupTeacherMapper classGroupTeacherMapper : byClassGroup) {
|
|
|
|
+ if (!classGroupTeacherMapper.getClassGroupId().equals(classGroupNoStartCourseSchedule.getClassGroupId())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ BigDecimal salary;
|
|
|
|
+
|
|
|
|
+ TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary=teacherDefaultMusicGroupSalaryDao.findByTeacherAndCourseType(classGroupTeacherMapper.getUserId(),
|
|
|
|
+ classGroupNoStartCourseSchedule.getType().getCode());
|
|
|
|
+
|
|
|
|
+ if (teacherDefaultMusicGroupSalary == null) {
|
|
|
|
+ throw new BizException("请先设置老师课酬");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //对应基准课酬
|
|
|
|
+ BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //2.0课酬
|
|
|
|
+ if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
|
+ //课程时长与结算单位时长占比
|
|
|
|
+ classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30), 6, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
|
+ }
|
|
|
|
+ //3.0课酬
|
|
|
|
+ if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
|
+ //课程时长与结算单位时长占比
|
|
|
|
+ classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), 6, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
|
|
+ }
|
|
|
|
+ //课堂课课酬
|
|
|
|
+ if (musicGroup.isClassroomLessons()) {
|
|
|
|
+ //课程时长与结算单位时长占比
|
|
|
|
+ classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(40), 6, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
|
+ }
|
|
|
|
+ //基础技能提高课
|
|
|
|
+ if (classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
|
|
|
|
+ //课程时长与结算单位时长占比
|
|
|
|
+ classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(45), 6, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+
|
|
|
|
+ //课程与老师薪水表
|
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
|
+ courseScheduleTeacherSalary.setCourseScheduleId(classGroupNoStartCourseSchedule.getId());
|
|
|
|
+ courseScheduleTeacherSalary.setGroupType(classGroupNoStartCourseSchedule.getGroupType());
|
|
|
|
+ courseScheduleTeacherSalary.setMusicGroupId(classGroupNoStartCourseSchedule.getMusicGroupId());
|
|
|
|
+ courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
|
+ courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
|
|
|
|
+ courseScheduleTeacherSalary.setExpectSalary(salary);
|
|
|
|
+ courseScheduleTeacherSalary.setCreateTime(date);
|
|
|
|
+ courseScheduleTeacherSalary.setUpdateTime(date);
|
|
|
|
+ courseScheduleTeacherSalary.setClassGroupId(classGroupTeacherMapper.getClassGroupId());
|
|
|
|
+ courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
|
+ }
|
|
|
|
+ courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public void createCourseScheduleTeacherSalary(List<CourseSchedule> courseSchedules, Map<Long, CourseSchedule> oldCourseSchedules) {
|
|
public void createCourseScheduleTeacherSalary(List<CourseSchedule> courseSchedules, Map<Long, CourseSchedule> oldCourseSchedules) {
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|