|
@@ -121,19 +121,21 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
}
|
|
|
BigDecimal salary = new BigDecimal("0");
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaryList = classGroupTeacherMapper.getTeacherDefaultMusicGroupSalaryList();
|
|
|
+
|
|
|
+
|
|
|
for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherDefaultMusicGroupSalaryList) {
|
|
|
//对应基准课酬
|
|
|
- BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- //基准课酬
|
|
|
- if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
- salary = new BigDecimal(duration).divide(new BigDecimal(30),8,BigDecimal.ROUND_HALF_UP).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- break;
|
|
|
- }
|
|
|
- //阶梯课酬
|
|
|
- if (duration >= teacherDefaultMusicGroupSalary.getDurationMin() && duration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
|
|
|
- salary = baseSalary;
|
|
|
- break;
|
|
|
- }
|
|
|
+// BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
+// //基准课酬
|
|
|
+// if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
+// salary = new BigDecimal(duration).divide(new BigDecimal(30),8,BigDecimal.ROUND_HALF_UP).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// //阶梯课酬
|
|
|
+// if (duration >= teacherDefaultMusicGroupSalary.getDurationMin() && duration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
|
|
|
+// salary = baseSalary;
|
|
|
+// break;
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
//课程与老师薪水表
|
|
@@ -199,36 +201,19 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
throw new BizException("存在未指定结算方式的课程类型");
|
|
|
}
|
|
|
|
|
|
- //根据结算方式将对应课程类型下的默认课酬设置列表分组
|
|
|
- Map<String, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalaryGroupBySettlementType = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.groupingBy(teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary.getSettlementType().getCode()));
|
|
|
-
|
|
|
- //获取对应结算方式下的默认课酬设置列表
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithSettlementType = teacherDefaultMusicGroupSalaryGroupBySettlementType.get(settlementType);
|
|
|
- if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithSettlementType)) {
|
|
|
- throw new BizException("未找到结算方式对应的默认课酬");
|
|
|
- }
|
|
|
-
|
|
|
//根据教师编号将对应结算方式下的默认课酬设置分组
|
|
|
- Map<Integer, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithSettlementType.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getUserId));
|
|
|
-
|
|
|
- //课时长度
|
|
|
- int duration = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), courseSchedule.getStartClassTime());
|
|
|
-
|
|
|
- //课程时长与结算单位时长占比
|
|
|
- BigDecimal classTimeDuty = new BigDecimal(duration).divide(teacherSalaryTimeUnit);
|
|
|
+ Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId,teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
|
|
|
if (!courseSchedule.isBishopTeacherSalaryNotCreate()) {
|
|
|
//根据课程获取主教的默认课酬设置列表
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseSchedule.getActualTeacherId());
|
|
|
+ TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseSchedule.getActualTeacherId());
|
|
|
courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
|
|
|
courseSchedule,
|
|
|
TeachTypeEnum.BISHOP,
|
|
|
settlementType,
|
|
|
- classTimeDuty,
|
|
|
courseSubsidyMap.get(courseSchedule.getId()),
|
|
|
- duration,
|
|
|
courseSchedule.getActualTeacherId().intValue(),
|
|
|
- teacherDefaultMusicGroupSalariesWithTeacherId));
|
|
|
+ teacherDefaultMusicGroupSalaryWithTeacherId));
|
|
|
}
|
|
|
|
|
|
//计算助教课程薪酬
|
|
@@ -238,30 +223,26 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
return;
|
|
|
}
|
|
|
teachingTeacherIdList.forEach(teacherId -> {
|
|
|
- List<TeacherDefaultMusicGroupSalary> teachingTeacherDefaultMusicGroupSalariesWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(teacherId);
|
|
|
+ TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(teacherId);
|
|
|
courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
|
|
|
courseSchedule,
|
|
|
TeachTypeEnum.TEACHING,
|
|
|
settlementType,
|
|
|
- classTimeDuty,
|
|
|
courseSubsidyMap.get(courseSchedule.getId()),
|
|
|
- duration,
|
|
|
teacherId,
|
|
|
- teachingTeacherDefaultMusicGroupSalariesWithTeacherId));
|
|
|
+ teacherDefaultMusicGroupSalaryWithTeacherId));
|
|
|
});
|
|
|
});
|
|
|
courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param courseSchedule:
|
|
|
- * @param teachType:
|
|
|
- * @param settlementType:
|
|
|
- * @param classTimeDuty:
|
|
|
- * @param subsidy:
|
|
|
- * @param duration:
|
|
|
- * @param teacherId:
|
|
|
- * @param teacherDefaultMusicGroupSalariesWithTeacherId:
|
|
|
+ * @param courseSchedule: 课程信息
|
|
|
+ * @param teachType: 教师类型
|
|
|
+ * @param settlementType: 结算方式
|
|
|
+ * @param subsidy: 补贴
|
|
|
+ * @param teacherId: 教师编号
|
|
|
+ * @param teacherDefaultMusicGroupSalaryWithTeacherId: 教师课酬
|
|
|
* @return com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary
|
|
|
* @describe 计算教师课酬
|
|
|
* @author Joburgess
|
|
@@ -270,36 +251,33 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
private CourseScheduleTeacherSalary countMusicGroupTeacherSalary(CourseSchedule courseSchedule,
|
|
|
TeachTypeEnum teachType,
|
|
|
String settlementType,
|
|
|
- BigDecimal classTimeDuty,
|
|
|
BigDecimal subsidy,
|
|
|
- int duration,
|
|
|
Integer teacherId,
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithTeacherId) {
|
|
|
- if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithTeacherId)) {
|
|
|
+ TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId) {
|
|
|
+ if (Objects.isNull(teacherDefaultMusicGroupSalaryWithTeacherId)) {
|
|
|
throw new BizException("存在未设置默认课酬的教师");
|
|
|
}
|
|
|
//教师课酬
|
|
|
BigDecimal teacherSalary = new BigDecimal(0);
|
|
|
|
|
|
+ //课时长度
|
|
|
+ int duration = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), courseSchedule.getStartClassTime());
|
|
|
+
|
|
|
//如果结算方式是教师默认课酬
|
|
|
if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
- TeacherDefaultMusicGroupSalary bishopTeacherDefaultMusicGroupSalary = teacherDefaultMusicGroupSalariesWithTeacherId.get(0);
|
|
|
- if (Objects.isNull(bishopTeacherDefaultMusicGroupSalary)) {
|
|
|
- throw new BizException("存在未设置默认课酬的教师");
|
|
|
- }
|
|
|
- BigDecimal bishopTeacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? bishopTeacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : bishopTeacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- teacherSalary = bishopTeacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //课程时长与结算单位时长占比
|
|
|
+ BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30));
|
|
|
+ BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
|
|
|
+ teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
} else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
- for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherDefaultMusicGroupSalariesWithTeacherId) {
|
|
|
- if (duration >= teacherDefaultMusicGroupSalary.getDurationMin() && duration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
|
|
|
- teacherSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ //课程时长与结算单位时长占比
|
|
|
+ BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90));
|
|
|
+ BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
|
|
|
+ teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
return new CourseScheduleTeacherSalary(
|
|
|
courseSchedule.getId(),
|
|
|
- TeachTypeEnum.BISHOP,
|
|
|
+ teachType,
|
|
|
teacherId,
|
|
|
teacherSalary,
|
|
|
subsidy,
|