|
@@ -210,6 +210,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
Set<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toSet());
|
|
|
|
|
|
+ Set<Integer> teacherIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
|
|
|
+ List<Teacher> teachers = teacherDao.findByTeacherIds(new ArrayList<>(teacherIds));
|
|
|
+ Map<Integer, Teacher> idTeacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, t -> t, (t1, t2) -> t1));
|
|
|
+
|
|
|
//教师签到记录
|
|
|
List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(new ArrayList<>(courseScheduleIds));
|
|
|
Map<String, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().collect(Collectors.groupingBy(ta -> org.apache.commons.lang3.StringUtils.joinWith(":", ta.getCourseScheduleId(), ta.getTeacherId())));
|
|
@@ -220,6 +224,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
|
|
|
|
|
|
+ Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
|
|
|
+ if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
|
|
|
+ courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().multiply(new BigDecimal("0.8")));
|
|
|
+ }
|
|
|
+
|
|
|
//扣除费用
|
|
|
BigDecimal deductCost = new BigDecimal(0);
|
|
|
List<String> deductReasons = new ArrayList<>();
|
|
@@ -289,6 +298,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
// 查询需要修改的课酬记录
|
|
|
List<TeacherVipSalaryDto> teacherSalaryList = courseScheduleTeacherSalaryDao.queryOnlineCourseByGroupType(startDate, endDate);
|
|
|
|
|
|
+ Set<Integer> teacherIds = teacherSalaryList.stream().map(TeacherVipSalaryDto::getUserId).collect(Collectors.toSet());
|
|
|
+ List<Teacher> teachers = teacherDao.findByTeacherIds(new ArrayList<>(teacherIds));
|
|
|
+ Map<Integer, Teacher> idTeacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, t -> t, (t1, t2) -> t1));
|
|
|
+
|
|
|
for (TeacherVipSalaryDto ts : teacherSalaryList) {
|
|
|
// 修复兼职老师不管1v?和全职老师1vn的课酬为系统默认课酬(不管线上还是线下课)
|
|
|
if (ts.getTeacherJobNature() != JobNatureEnum.FULL_TIME || !org.apache.commons.lang3.StringUtils.equalsIgnoreCase("1v1", ts.getVipGroupCategoryName())) {
|
|
@@ -330,6 +343,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
//处理课酬信息
|
|
|
someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
|
|
|
|
|
|
+ Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
|
|
|
+ if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
|
|
|
+ courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().multiply(new BigDecimal("0.8")));
|
|
|
+ }
|
|
|
+
|
|
|
//扣除费用
|
|
|
BigDecimal deductCost = new BigDecimal(0);
|
|
|
List<String> deductReasons = new ArrayList<>();
|
|
@@ -483,6 +501,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
|
|
|
Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType));
|
|
|
|
|
|
+ Set<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
|
|
|
+ List<Teacher> teachers = teacherDao.findByTeacherIds(new ArrayList<>(teacherIds));
|
|
|
+ Map<Integer, Teacher> idTeacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, t -> t, (t1, t2) -> t1));
|
|
|
+
|
|
|
//计算课酬
|
|
|
for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
|
|
|
//当前课酬对应的课程信息
|
|
@@ -491,6 +513,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
//教师课酬
|
|
|
BigDecimal teacherSalary = new BigDecimal(0);
|
|
|
|
|
|
+ Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
|
|
|
+
|
|
|
if(CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
|
|
|
//根据课程类型获取对应的默认课酬设置列表
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithCourseType = teacherDefaultMusicGroupSalariesGroupByCourseType.get(courseSchedule.getType());
|
|
@@ -518,6 +542,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
teacherSalary = BigDecimal.ZERO;
|
|
|
}
|
|
|
|
|
|
+ //如果上课日期在转正日期之前的按80%结算
|
|
|
+ if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0){
|
|
|
+ teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
|
|
|
+ }
|
|
|
+
|
|
|
//扣除费用
|
|
|
BigDecimal deductCost = new BigDecimal(0);
|
|
|
List<String> deductReasons = new ArrayList<>();
|
|
@@ -616,6 +645,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
teacherSalary=courseScheduleTeacherSalary.getExpectSalary();
|
|
|
}
|
|
|
|
|
|
+ if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0){
|
|
|
+ teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
|
|
|
+ }
|
|
|
+
|
|
|
BigDecimal subsidy = courseSubsidyMap.get(courseSchedule.getSchoolId());
|
|
|
if (Objects.isNull(subsidy)) {
|
|
|
subsidy = new BigDecimal(0);
|
|
@@ -684,6 +717,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
deductCost = deductCost.add(new BigDecimal(50));
|
|
|
deductReasons.add("签到经纬度异常扣除50");
|
|
|
}
|
|
|
+ }else{
|
|
|
+ signInInRange = true;
|
|
|
}
|
|
|
|
|
|
if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignOutStatus())){
|
|
@@ -706,6 +741,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
deductCost = deductCost.add(new BigDecimal(50));
|
|
|
deductReasons.add("签退经纬度异常,扣除50元");
|
|
|
}
|
|
|
+ }else{
|
|
|
+ signOutInRange = true;
|
|
|
}
|
|
|
|
|
|
if(!signInInRange&&!signOutInRange){
|