|
@@ -586,6 +586,24 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
teacherAttendance = courseTeacherAttendances.get(0);
|
|
|
}
|
|
|
|
|
|
+ School school = idSchoolMap.get(courseSchedule.getSchoolId());
|
|
|
+ boolean signInInRange = false;
|
|
|
+ boolean signOutInRange = false;
|
|
|
+ if(Objects.nonNull(school)&&Objects.nonNull(school.getLongitudeLatitude())
|
|
|
+ &&StringUtils.isNotBlank(teacherAttendance.getSignInLongitudeLatitude())
|
|
|
+ &&StringUtils.isNotBlank(teacherAttendance.getSignOutLongitudeLatitude())){
|
|
|
+ double signInDistance = MapUtil.distance(teacherAttendance.getSignInLongitudeLatitude(),
|
|
|
+ school.getLongitudeLatitude());
|
|
|
+ if (signInDistance <= attendanceRange) {
|
|
|
+ signInInRange = true;
|
|
|
+ }
|
|
|
+ double signOutDistance = MapUtil.distance(teacherAttendance.getSignOutLongitudeLatitude(),
|
|
|
+ school.getLongitudeLatitude());
|
|
|
+ if (signOutDistance <= attendanceRange) {
|
|
|
+ signOutInRange = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignInStatus())){
|
|
|
//无签到记录扣除全部课酬
|
|
|
deductCost = deductCost.add(teacherSalary);
|
|
@@ -605,13 +623,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
//迟到30分钟及以上扣除全部课酬
|
|
|
deductCost = deductCost.add(teacherSalary);
|
|
|
deductReasons.add("迟到30分钟及以上扣除全部课酬");
|
|
|
+ }else if(!signInInRange){
|
|
|
+ //签到经纬度异常扣除50
|
|
|
+ deductCost = deductCost.add(new BigDecimal(50));
|
|
|
+ deductReasons.add("签到经纬度异常扣除50");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(Objects.isNull(teacherAttendance)||!isCallName||Objects.isNull(teacherAttendance.getSignOutStatus())){
|
|
|
- //未签退或者未点名扣除全部课酬
|
|
|
+ if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignOutStatus())){
|
|
|
+ //未签退扣除全部课酬
|
|
|
deductCost = deductCost.add(teacherSalary);
|
|
|
- deductReasons.add("未签退或者未点名扣除全部课酬");
|
|
|
+ deductReasons.add("未签退扣除全部课酬");
|
|
|
}else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
|
|
|
int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
|
|
|
int signOutCourseTimeBetween = signOutCourseTimeBetweenSeconds/60;
|
|
@@ -619,28 +641,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
//早退
|
|
|
deductCost = deductCost.add(teacherSalary);
|
|
|
deductReasons.add("早退扣除全部课酬");
|
|
|
- }else if(isCallName){
|
|
|
- //异常签退,但是正常点名扣除50元课酬
|
|
|
- deductCost = deductCost.add(new BigDecimal(50));
|
|
|
- deductReasons.add("异常签退,但是正常点名扣除50元课酬");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- School school = idSchoolMap.get(courseSchedule.getSchoolId());
|
|
|
- boolean signInInRange = false;
|
|
|
- boolean signOutInRange = false;
|
|
|
- if(Objects.nonNull(school)&&Objects.nonNull(school.getLongitudeLatitude())
|
|
|
- &&StringUtils.isNotBlank(teacherAttendance.getSignInLongitudeLatitude())
|
|
|
- &&StringUtils.isNotBlank(teacherAttendance.getSignOutLongitudeLatitude())){
|
|
|
- double signInDistance = MapUtil.distance(teacherAttendance.getSignInLongitudeLatitude(),
|
|
|
- school.getLongitudeLatitude());
|
|
|
- if (signInDistance <= attendanceRange) {
|
|
|
- signInInRange = true;
|
|
|
- }
|
|
|
- double signOutDistance = MapUtil.distance(teacherAttendance.getSignOutLongitudeLatitude(),
|
|
|
- school.getLongitudeLatitude());
|
|
|
- if (signOutDistance <= attendanceRange) {
|
|
|
- signOutInRange = true;
|
|
|
+ }else{
|
|
|
+ //异常签退,扣除一半课酬
|
|
|
+ deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
|
|
|
+ deductReasons.add("异常签退,扣除一半课酬");
|
|
|
}
|
|
|
}
|
|
|
|