|
@@ -229,12 +229,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
|
|
someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
|
|
List<String> deductReasons = new ArrayList<>();
|
|
List<String> deductReasons = new ArrayList<>();
|
|
|
|
|
|
|
|
+ BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
|
|
|
|
+
|
|
BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
if (Objects.isNull(subsidy)) {
|
|
if (Objects.isNull(subsidy)) {
|
|
subsidy = new BigDecimal(0);
|
|
subsidy = new BigDecimal(0);
|
|
}
|
|
}
|
|
courseScheduleTeacherSalary.setSubsidy(subsidy);
|
|
courseScheduleTeacherSalary.setSubsidy(subsidy);
|
|
- courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().add(subsidy));
|
|
|
|
|
|
+ expectSalary = expectSalary.add(subsidy);
|
|
|
|
|
|
if(BigDecimal.ZERO.compareTo(subsidy)!=0){
|
|
if(BigDecimal.ZERO.compareTo(subsidy)!=0){
|
|
deductReasons.add("教学点补贴:" + subsidy);
|
|
deductReasons.add("教学点补贴:" + subsidy);
|
|
@@ -242,7 +244,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
|
|
Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
|
|
if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
|
|
if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
|
|
- courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().multiply(new BigDecimal("0.8")));
|
|
|
|
|
|
+ expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
|
|
deductReasons.add("未转正");
|
|
deductReasons.add("未转正");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -254,7 +256,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
|
|
TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
|
|
//未签到扣除全部课酬
|
|
//未签到扣除全部课酬
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("未签到扣除全部课酬");
|
|
deductReasons.add("未签到扣除全部课酬");
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
|
|
//异常签到
|
|
//异常签到
|
|
@@ -262,18 +264,18 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
|
|
float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
|
|
if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
|
|
if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
|
|
//课程开始前1分钟至开始后3分钟进入教室
|
|
//课程开始前1分钟至开始后3分钟进入教室
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)));
|
|
deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
|
|
deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
|
|
}else if(signCourseTimeBetween<=-3){
|
|
}else if(signCourseTimeBetween<=-3){
|
|
//课程开始后3分钟后进入教室
|
|
//课程开始后3分钟后进入教室
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
|
|
deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
|
|
//未签退扣除全部课酬
|
|
//未签退扣除全部课酬
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("未签退扣除全部课酬");
|
|
deductReasons.add("未签退扣除全部课酬");
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
|
|
//异常签退
|
|
//异常签退
|
|
@@ -282,16 +284,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
if(signOutCourseTimeBetween>3){
|
|
if(signOutCourseTimeBetween>3){
|
|
//课程开始前20分钟至开始后3分钟退出教室
|
|
//课程开始前20分钟至开始后3分钟退出教室
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
|
|
deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
|
|
}else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
|
|
}else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
|
|
//课程结束前3分钟后至课程结束前退出教室
|
|
//课程结束前3分钟后至课程结束前退出教室
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)));
|
|
deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
|
|
deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
+ BigDecimal finalSalary = expectSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
if(BigDecimal.ZERO.compareTo(deductCost)<0){
|
|
if(BigDecimal.ZERO.compareTo(deductCost)<0){
|
|
deductReasons.add("扣除总费用:" + deductCost);
|
|
deductReasons.add("扣除总费用:" + deductCost);
|
|
@@ -363,21 +365,23 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
//处理课酬信息
|
|
//处理课酬信息
|
|
someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
|
|
someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
|
|
-
|
|
|
|
List<String> deductReasons = new ArrayList<>();
|
|
List<String> deductReasons = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
|
|
|
|
+
|
|
BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
if (Objects.isNull(subsidy)) {
|
|
if (Objects.isNull(subsidy)) {
|
|
subsidy = new BigDecimal(0);
|
|
subsidy = new BigDecimal(0);
|
|
}
|
|
}
|
|
courseScheduleTeacherSalary.setSubsidy(subsidy);
|
|
courseScheduleTeacherSalary.setSubsidy(subsidy);
|
|
- courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().add(subsidy));
|
|
|
|
|
|
+ expectSalary = expectSalary.add(subsidy);
|
|
if(BigDecimal.ZERO.compareTo(subsidy)!=0){
|
|
if(BigDecimal.ZERO.compareTo(subsidy)!=0){
|
|
deductReasons.add("教学点补贴:" + subsidy);
|
|
deductReasons.add("教学点补贴:" + subsidy);
|
|
}
|
|
}
|
|
|
|
|
|
Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
|
|
Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
|
|
if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
|
|
if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
|
|
- courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().multiply(new BigDecimal("0.8")));
|
|
|
|
|
|
+ expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
|
|
deductReasons.add("未转正");
|
|
deductReasons.add("未转正");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -388,7 +392,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
|
|
TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
|
|
//未签到扣除全部课酬
|
|
//未签到扣除全部课酬
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("未签到扣除全部课酬");
|
|
deductReasons.add("未签到扣除全部课酬");
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
|
|
//异常签到
|
|
//异常签到
|
|
@@ -396,24 +400,23 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
|
|
float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
|
|
if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
|
|
if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
|
|
//课程开始前1分钟至开始后3分钟进入教室
|
|
//课程开始前1分钟至开始后3分钟进入教室
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)));
|
|
deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
|
|
deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
|
|
}else if(signCourseTimeBetween<=-3){
|
|
}else if(signCourseTimeBetween<=-3){
|
|
//课程开始后3分钟后进入教室
|
|
//课程开始后3分钟后进入教室
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
|
|
deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
|
|
}
|
|
}
|
|
|
|
|
|
if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
|
|
if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
|
|
- deductCost = courseScheduleTeacherSalary.getExpectSalary();
|
|
|
|
- deductReasons.clear();
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
|
|
deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
|
|
//未签退扣除全部课酬
|
|
//未签退扣除全部课酬
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("未签退扣除全部课酬");
|
|
deductReasons.add("未签退扣除全部课酬");
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
|
|
//异常签退
|
|
//异常签退
|
|
@@ -422,16 +425,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
if(signOutCourseTimeBetween>3){
|
|
if(signOutCourseTimeBetween>3){
|
|
//课程开始前20分钟至开始后3分钟退出教室
|
|
//课程开始前20分钟至开始后3分钟退出教室
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
|
|
deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
|
|
}else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
|
|
}else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
|
|
//课程结束前3分钟后至课程结束前退出教室
|
|
//课程结束前3分钟后至课程结束前退出教室
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)));
|
|
deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
|
|
deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
|
|
}
|
|
}
|
|
|
|
|
|
if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
|
|
if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
|
|
- deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
|
|
|
|
|
|
+ deductCost = deductCost.add(expectSalary);
|
|
deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
|
|
deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -442,7 +445,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
if(!CollectionUtils.isEmpty(deductReasons))
|
|
if(!CollectionUtils.isEmpty(deductReasons))
|
|
courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
|
|
courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
|
|
|
|
|
|
- BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
+ BigDecimal finalSalary = expectSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
|
|
courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
|
|
courseScheduleTeacherSalary.setSettlementTime(now);
|
|
courseScheduleTeacherSalary.setSettlementTime(now);
|