|
@@ -1675,7 +1675,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
throw new BizException("排课次数必须大于0");
|
|
|
}
|
|
|
|
|
|
- Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(), "yyyy-MM-dd");
|
|
|
Integer schoolId = musicGroup.getSchoolId();
|
|
|
|
|
|
List<Integer> studentIdList = classGroup4MixDtos.get(0).getStudents();
|
|
@@ -1867,84 +1866,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseScheduleList.add(courseSchedule);
|
|
|
|
|
|
for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), null, null);
|
|
|
- BigDecimal salary = new BigDecimal("0");
|
|
|
-
|
|
|
- Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
-
|
|
|
- TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType());
|
|
|
- Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
|
|
|
- if (teacherDefaultMusicGroupSalary == null) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- }
|
|
|
- if ((classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE) ||
|
|
|
- classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) &&
|
|
|
- StringUtils.isBlank(teacherDefaultMusicGroupSalary.getSalaryRuleJson())) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- } else if (teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() == null) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- }
|
|
|
-
|
|
|
- //对应基准课酬
|
|
|
- BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
|
|
|
-
|
|
|
- SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
|
|
|
- if (Objects.nonNull(teacher.getEntryDate())
|
|
|
- && (teacher.getEntryDate().after(entryDate) || teacher.getEntryDate().getTime() == entryDate.getTime())) {
|
|
|
- settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
|
|
|
- }
|
|
|
-
|
|
|
- //基准课酬
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
- baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- }
|
|
|
- //阶梯课酬
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- 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 (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)){
|
|
|
- baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), BigDecimal.ZERO.intValue(), BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
-
|
|
|
- salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- //基础技能提高课
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
|
|
|
- salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
- salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
|
- }
|
|
|
- }
|
|
|
- //线上小班课
|
|
|
- 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());
|
|
|
-// if (studentNum < 3 || studentNum > 5) {
|
|
|
-// String numWaring = studentNum < 3 ? "人数不能小于3," : "人数不能大于5,";
|
|
|
-// throw new BizException(classGroup.getName() + numWaring + "请调整");
|
|
|
-// }
|
|
|
- if(studentNum>5){
|
|
|
- studentNum=5;
|
|
|
- }
|
|
|
- salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
|
|
|
- if(Objects.isNull(salary)){
|
|
|
- throw new BizException("课酬设置异常");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
- salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal("1");
|
|
|
- }
|
|
|
|
|
|
CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
@@ -1952,11 +1873,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
|
|
|
- courseScheduleTeacherSalary.setExpectSalary(salary);
|
|
|
courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
courseScheduleTeacherSalary.setMusicGroupId(musicGroupId);
|
|
|
courseScheduleTeacherSalary.setCreateTime(date);
|
|
|
courseScheduleTeacherSalary.setUpdateTime(date);
|
|
|
+ courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(musicGroup, courseSchedule, courseScheduleTeacherSalary);
|
|
|
courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
}
|
|
|
}
|
|
@@ -2221,103 +2142,23 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
|
|
|
|
|
|
- Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(), "yyyy-MM-dd");
|
|
|
//计算每节课的课酬
|
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
|
|
|
for (CourseSchedule courseSchedule : courseScheduleList) {
|
|
|
//默认课程时长
|
|
|
for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), null, null);
|
|
|
- BigDecimal salary = new BigDecimal("0");
|
|
|
-
|
|
|
- Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
-
|
|
|
- TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType());
|
|
|
- Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
|
|
|
- if (teacherDefaultMusicGroupSalary == null) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- }
|
|
|
- if ((classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE) ||
|
|
|
- classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) &&
|
|
|
- StringUtils.isBlank(teacherDefaultMusicGroupSalary.getSalaryRuleJson())) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- } else if (teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() == null) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- }
|
|
|
-
|
|
|
- //对应基准课酬
|
|
|
- BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
|
|
|
-
|
|
|
- SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
|
|
|
- if (Objects.nonNull(teacher.getEntryDate())
|
|
|
- && (teacher.getEntryDate().after(entryDate) || teacher.getEntryDate().getTime() == entryDate.getTime())) {
|
|
|
- settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
|
|
|
- }
|
|
|
-
|
|
|
- //基准课酬
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
- baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- }
|
|
|
- //阶梯课酬
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- 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 (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)){
|
|
|
- baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), BigDecimal.ZERO.intValue(), BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
-
|
|
|
- salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- //基础技能提高课
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
|
|
|
- salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
- salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
|
- }
|
|
|
- }
|
|
|
- //线上小班课
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)||classGroup4MixDto.getCourseType().equals(CourseScheduleType.HIGH)) {
|
|
|
- teacherDefaultMusicGroupSalary = collect.get(CourseSchedule.CourseScheduleType.HIGH_ONLINE);
|
|
|
- Integer classGroupId = classGroupTeacherMapper.getClassGroupId();
|
|
|
- if(classGroupId == null){
|
|
|
- classGroupId = classGroup.getId();
|
|
|
- }
|
|
|
- Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupId);
|
|
|
- if(studentNum>5){
|
|
|
- studentNum=5;
|
|
|
- }
|
|
|
- salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
|
|
|
- if(Objects.isNull(salary)){
|
|
|
- throw new BizException("课酬设置异常");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
- salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal("1");
|
|
|
- }
|
|
|
-
|
|
|
CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
|
|
|
courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
|
|
|
- courseScheduleTeacherSalary.setExpectSalary(salary);
|
|
|
courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
courseScheduleTeacherSalary.setMusicGroupId(musicGroupId);
|
|
|
courseScheduleTeacherSalary.setCreateTime(date);
|
|
|
courseScheduleTeacherSalary.setUpdateTime(date);
|
|
|
+ courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(musicGroup, courseSchedule, courseScheduleTeacherSalary);
|
|
|
courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
}
|
|
|
}
|
|
@@ -2392,8 +2233,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
Integer courseTimes = classGroup4MixDtos.get(0).getCourseTimes();
|
|
|
|
|
|
- Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(), "yyyy-MM-dd");
|
|
|
-
|
|
|
classGroupService.updateTotalClassTimes(classGroup.getId(), courseTimes);
|
|
|
|
|
|
MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
|
|
@@ -2535,97 +2374,16 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseScheduleList.add(courseSchedule);
|
|
|
|
|
|
for (ClassGroupTeacherMapper classGroupTeacherMapper : newClassGroupTeacherMapperList) {
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), null, null);
|
|
|
- BigDecimal salary = new BigDecimal("0");
|
|
|
-
|
|
|
- Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
-
|
|
|
- TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType());
|
|
|
-
|
|
|
- Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
|
|
|
- if (teacherDefaultMusicGroupSalary == null) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- }
|
|
|
-
|
|
|
- if ((classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE) ||
|
|
|
- classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) &&
|
|
|
- StringUtils.isBlank(teacherDefaultMusicGroupSalary.getSalaryRuleJson())) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- } else if (teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() == null) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- }
|
|
|
-
|
|
|
- //对应基准课酬
|
|
|
- BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
|
|
|
-
|
|
|
- SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
|
|
|
- if (Objects.nonNull(teacher.getEntryDate())
|
|
|
- && (teacher.getEntryDate().after(entryDate) || teacher.getEntryDate().getTime() == entryDate.getTime())) {
|
|
|
- settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
|
|
|
- }
|
|
|
-
|
|
|
- //基准课酬
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
- baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- }
|
|
|
- //阶梯课酬
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- 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 (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)){
|
|
|
- baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), BigDecimal.ZERO.intValue(), BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
-
|
|
|
- salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- //基础技能提高课
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
|
|
|
- salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
- salary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
|
- }
|
|
|
- }
|
|
|
- //线上小班课
|
|
|
- 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());
|
|
|
-// if (studentNum < 3 || studentNum > 5) {
|
|
|
-// String numWaring = studentNum < 3 ? "人数不能小于3," : "人数不能大于5,";
|
|
|
-// throw new BizException(classGroup.getName() + numWaring + "请调整");
|
|
|
-// }
|
|
|
- if(studentNum>5){
|
|
|
- studentNum=5;
|
|
|
- }
|
|
|
- salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
|
|
|
- if(Objects.isNull(salary)){
|
|
|
- throw new BizException("课酬设置异常");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
- salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal("1");
|
|
|
- }
|
|
|
-
|
|
|
CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
|
|
|
courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
|
|
|
- courseScheduleTeacherSalary.setExpectSalary(salary);
|
|
|
courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
courseScheduleTeacherSalary.setCreateTime(date);
|
|
|
courseScheduleTeacherSalary.setUpdateTime(date);
|
|
|
+ courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(musicGroup, courseSchedule, courseScheduleTeacherSalary);
|
|
|
courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
}
|
|
|
}
|
|
@@ -2670,8 +2428,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
Integer schoolId = musicGroup.getSchoolId();
|
|
|
|
|
|
- Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(), "yyyy-MM-dd");
|
|
|
-
|
|
|
List<Integer> studentIdList = classGroup4MixDtos.get(0).getStudents();
|
|
|
|
|
|
List<StudentRegistration> studentList = studentRegistrationService.findStudentListByUserIdList(musicGroupId, studentIdList);
|
|
@@ -2834,79 +2590,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseScheduleDao.insert(courseSchedule);
|
|
|
|
|
|
for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), null, null);
|
|
|
- BigDecimal salary = new BigDecimal("0");
|
|
|
-
|
|
|
- Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
-
|
|
|
- TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType());
|
|
|
-
|
|
|
- Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
|
|
|
- if (teacherDefaultMusicGroupSalary == null) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- }
|
|
|
- if ((classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE) ||
|
|
|
- classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) &&
|
|
|
- StringUtils.isBlank(teacherDefaultMusicGroupSalary.getSalaryRuleJson())) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- } else if (teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() == null
|
|
|
- || teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() == null) {
|
|
|
- throw new BizException("请设置" + teacher.getRealName() + "老师的" + classGroup4MixDto.getCourseType().getMsg() + "课酬");
|
|
|
- }
|
|
|
-
|
|
|
- //对应基准课酬
|
|
|
- BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
|
|
|
-
|
|
|
- SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
|
|
|
- if (Objects.nonNull(teacher.getEntryDate())
|
|
|
- && (teacher.getEntryDate().after(entryDate) || teacher.getEntryDate().getTime() == entryDate.getTime())) {
|
|
|
- settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
|
|
|
- }
|
|
|
-
|
|
|
- //基准课酬
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
- baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- }
|
|
|
- //阶梯课酬
|
|
|
- if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- 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 (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)){
|
|
|
- baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), BigDecimal.ZERO.intValue(), BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
-
|
|
|
- salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- //线上小班课
|
|
|
- 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());
|
|
|
-// if (studentNum < 3 || studentNum > 5) {
|
|
|
-// String numWaring = studentNum < 3 ? "人数不能小于3," : "人数不能大于5,";
|
|
|
-// throw new BizException(classGroup.getName() + numWaring + "请调整");
|
|
|
-// }
|
|
|
- if(studentNum>5){
|
|
|
- studentNum=5;
|
|
|
- }
|
|
|
- salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
|
|
|
- if(Objects.isNull(salary)){
|
|
|
- throw new BizException("课酬设置异常");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
- salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal("1");
|
|
|
- }
|
|
|
-
|
|
|
CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
courseScheduleTeacherSalary.setMusicGroupId(musicGroupId);
|
|
@@ -2914,10 +2597,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
|
|
|
- courseScheduleTeacherSalary.setExpectSalary(salary);
|
|
|
courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
courseScheduleTeacherSalary.setCreateTime(date);
|
|
|
courseScheduleTeacherSalary.setUpdateTime(date);
|
|
|
+ courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(musicGroup, courseSchedule, courseScheduleTeacherSalary);
|
|
|
courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
}
|
|
|
}
|