|
@@ -52,6 +52,8 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
private TeacherAttendanceDao teacherAttendanceDao;
|
|
|
@Autowired
|
|
|
private CourseScheduleDao courseScheduleDao;
|
|
|
+ @Autowired
|
|
|
+ private TeacherDao teacherDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, ClassGroupTeacherMapper> getDAO() {
|
|
@@ -155,6 +157,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
|
|
|
public boolean classGroupTeacherMapperUpdate(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception {
|
|
|
Date date = new Date();
|
|
|
+ Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
|
|
|
List<Integer> classGroupIds = classGroupTeacherMapperList.stream().map(classGroupTeacherMapper -> classGroupTeacherMapper.getClassGroupId()).collect(Collectors.toList());
|
|
|
|
|
|
List<CourseSchedule> classGroupNoStartCourseSchedules = courseScheduleService.findClassGroupNoStartCourseSchedules(classGroupIds, GroupType.MUSIC);
|
|
@@ -174,6 +177,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
String musicGroupId = classGroupTeacherMapperList.get(0).getMusicGroupId();
|
|
|
MusicGroup musicGroup = musicGroupService.get(musicGroupId);
|
|
|
|
|
|
+ //所有教师列表
|
|
|
+ List<Teacher> teachers = teacherDao.findByTeacherIds(teacherUserIds);
|
|
|
+ Map<Integer, Teacher> teacherMap = teachers.stream()
|
|
|
+ .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
|
|
|
+
|
|
|
//删除未开始的课程老师课酬,和签到
|
|
|
List<Long> courseScheduleIds = classGroupNoStartCourseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
|
|
|
courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
|
|
@@ -186,7 +194,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
if (!classGroupTeacherMapper.getClassGroupId().equals(classGroupNoStartCourseSchedule.getClassGroupId())) {
|
|
|
continue;
|
|
|
}
|
|
|
- BigDecimal salary = new BigDecimal("0");
|
|
|
+ BigDecimal salary;
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaryList = classGroupTeacherMapper.getTeacherDefaultMusicGroupSalaryList();
|
|
|
|
|
|
Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherDefaultMusicGroupSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
@@ -202,15 +210,21 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
//对应基准课酬
|
|
|
BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
|
|
|
|
|
|
+ Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
|
|
|
+ SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
|
|
|
+ if(teacher.getEntryDate().after(entryDate)){
|
|
|
+ settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//2.0课酬
|
|
|
- if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
+ if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
//课程时长与结算单位时长占比
|
|
|
classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
}
|
|
|
//3.0课酬
|
|
|
- if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
+ if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
//课程时长与结算单位时长占比
|
|
|
classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
@@ -226,7 +240,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
//课程时长与结算单位时长占比
|
|
|
classTimeDuty = new BigDecimal(duration).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)) {
|
|
|
+ if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
|
}
|
|
|
}
|
|
@@ -255,6 +269,14 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
public void createMusicGroupTeacherMapper(List<CourseSchedule> courseSchedules, String musicGroupId) {
|
|
|
Date date = new Date();
|
|
|
MusicGroup musicGroup = musicGroupService.get(musicGroupId);
|
|
|
+ Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
|
|
|
+ List<Integer> teacherUserIds = courseSchedules.stream()
|
|
|
+ .map(CourseSchedule::getActualTeacherId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ //所有教师列表
|
|
|
+ List<Teacher> teachers = teacherDao.findByTeacherIds(teacherUserIds);
|
|
|
+ Map<Integer, Teacher> teacherMap = teachers.stream()
|
|
|
+ .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
|
|
|
//老师默认的课酬
|
|
|
// Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
|
|
|
for (CourseSchedule classGroupNoStartCourseSchedule : courseSchedules) {
|
|
@@ -279,15 +301,21 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
//对应基准课酬
|
|
|
BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
|
|
|
|
|
|
+ Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
|
|
|
+ SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
|
|
|
+ if(teacher.getEntryDate().after(entryDate)){
|
|
|
+ settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//2.0课酬
|
|
|
- if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
+ if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
//课程时长与结算单位时长占比
|
|
|
classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
}
|
|
|
//3.0课酬
|
|
|
- if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
+ if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
//课程时长与结算单位时长占比
|
|
|
classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
@@ -338,6 +366,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void createCourseScheduleTeacherSalary(List<CourseSchedule> courseSchedules, Map<Long, CourseSchedule> oldCourseSchedules) {
|
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
+ Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
|
|
|
|
|
|
//课程编号列表
|
|
|
List<Long> courseScheduleIds = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
|
|
@@ -350,6 +379,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
//所有老师列表
|
|
|
allTeacherIds = allTeacherIds.stream().distinct().collect(Collectors.toList());
|
|
|
|
|
|
+ //所有教师列表
|
|
|
+ List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
|
|
|
+ Map<Integer, Teacher> teacherMap = teachers.stream()
|
|
|
+ .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
|
|
|
+
|
|
|
//所有老师默认乐团课酬
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
|
|
|
Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType));
|
|
@@ -383,6 +417,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
|
|
|
if (!courseSchedule.isBishopTeacherSalaryNotCreate()) {
|
|
|
+ Teacher teacher = teacherMap.get(courseSchedule.getActualTeacherId());
|
|
|
+ if(teacher.getEntryDate().after(entryDate)){
|
|
|
+ settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY.getCode();
|
|
|
+ }
|
|
|
+
|
|
|
//根据课程获取主教的默认课酬设置列表
|
|
|
TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseSchedule.getActualTeacherId());
|
|
|
courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
|
|
@@ -400,7 +439,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
if (CollectionUtils.isEmpty(teachingTeacherIdList)) {
|
|
|
return;
|
|
|
}
|
|
|
- teachingTeacherIdList.forEach(teacherId -> {
|
|
|
+ for (Integer teacherId : teachingTeacherIdList) {
|
|
|
+ Teacher teacher = teacherMap.get(teacherId);
|
|
|
+ if(teacher.getEntryDate().after(entryDate)){
|
|
|
+ settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY.getCode();
|
|
|
+ }
|
|
|
TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(teacherId);
|
|
|
courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
|
|
|
courseSchedule,
|
|
@@ -409,7 +452,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
courseSubsidyMap.get(courseSchedule.getId()),
|
|
|
teacherId,
|
|
|
teacherDefaultMusicGroupSalaryWithTeacherId));
|
|
|
- });
|
|
|
+ }
|
|
|
});
|
|
|
courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
}
|
|
@@ -443,13 +486,27 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
|
|
|
//如果结算方式是教师默认课酬
|
|
|
if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT.getCode())) {
|
|
|
+ BigDecimal baseTime = new BigDecimal(30);
|
|
|
+ if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
|
|
|
+ baseTime = new BigDecimal(45);
|
|
|
+ }
|
|
|
+ if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
|
|
|
+ baseTime = new BigDecimal(45);
|
|
|
+ }
|
|
|
//课程时长与结算单位时长占比
|
|
|
- BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+ BigDecimal classTimeDuty = new BigDecimal(duration).divide(baseTime, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
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.getCode())) {
|
|
|
+ BigDecimal baseTime = new BigDecimal(90);
|
|
|
+ if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
|
|
|
+ baseTime = new BigDecimal(45);
|
|
|
+ }
|
|
|
+ if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
|
|
|
+ baseTime = new BigDecimal(45);
|
|
|
+ }
|
|
|
//课程时长与结算单位时长占比
|
|
|
- BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+ BigDecimal classTimeDuty = new BigDecimal(duration).divide(baseTime, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
|
|
|
teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|