|
@@ -617,6 +617,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
//扣除费用
|
|
|
BigDecimal deductCost = BigDecimal.ZERO;
|
|
|
+ List<String> deductReasons = new ArrayList<>();
|
|
|
List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
|
|
|
|
|
|
boolean isCallName = false;
|
|
@@ -631,31 +632,39 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
if(CollectionUtils.isEmpty(courseTeacherAttendances)){
|
|
|
//无签到记录扣除全部课酬
|
|
|
deductCost = deductCost.add(teacherSalary);
|
|
|
+ deductReasons.add("无签到记录扣除全部课酬");
|
|
|
}else{
|
|
|
TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
|
|
|
if(Objects.isNull(teacherAttendance.getSignInStatus())){
|
|
|
//未签到扣除全部课酬
|
|
|
deductCost = deductCost.add(teacherSalary);
|
|
|
+ deductReasons.add("未签到扣除全部课酬");
|
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
|
|
|
- int signCourseTimeBetween = DateUtil.minutesBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
|
|
|
+ int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
|
|
|
+ int signCourseTimeBetween = signCourseTimeBetweenSeconds/60;
|
|
|
if(signCourseTimeBetween>=0&&signCourseTimeBetween<20){
|
|
|
//未提前20分钟打卡扣除50元
|
|
|
deductCost = deductCost.add(new BigDecimal(50));
|
|
|
+ deductReasons.add("未提前20分钟打卡扣除50元");
|
|
|
}else if(signCourseTimeBetween<0&&signCourseTimeBetween>-30){
|
|
|
//迟到30分钟内扣除一半课酬
|
|
|
deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
|
|
|
+ deductReasons.add("迟到30分钟内扣除一半课酬");
|
|
|
}else if(signCourseTimeBetween<=-30){
|
|
|
//迟到30分钟及以上扣除全部课酬
|
|
|
deductCost = deductCost.add(teacherSalary);
|
|
|
+ deductReasons.add("迟到30分钟及以上扣除全部课酬");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(!isCallName){
|
|
|
//未点名扣除一半课酬
|
|
|
deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
|
|
|
+ deductReasons.add("未点名扣除一半课酬");
|
|
|
}else if((Objects.isNull(teacherAttendance.getSignOutStatus())||YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus()))&&isCallName){
|
|
|
//异常签退或者未签退,但是正常点名扣除50元课酬
|
|
|
deductCost = deductCost.add(new BigDecimal(50));
|
|
|
+ deductReasons.add("异常签退或者未签退,但是正常点名扣除50元课酬");
|
|
|
}
|
|
|
|
|
|
|
|
@@ -666,10 +675,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
//更新教师结算信息
|
|
|
courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
|
|
|
courseScheduleTeacherSalary.setSettlementTime(now);
|
|
|
+ courseScheduleTeacherSalary.setDeductionReason(org.apache.commons.lang3.StringUtils.join(deductReasons));
|
|
|
courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public static void main(String[] args) {
|
|
|
+ Date date1=DateUtil.stringToDate("2020-11-11 15:20:00");
|
|
|
+ Date date2=DateUtil.stringToDate("2020-11-11 15:00:01");
|
|
|
+
|
|
|
+ int i = DateUtil.secondsBetween(date2, date1);
|
|
|
+ System.out.println(i/60);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public PageInfo<TeacherSalaryDto> querySalaries(CourseScheduleTeacherSalaryQueryInfo queryInfo) {
|
|
|
PageInfo<TeacherSalaryDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|