Переглянути джерело

Merge branch 'master_teacherSalary_2020-12-11'

Joburgess 4 роки тому
батько
коміт
81a053046b

+ 29 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -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("异常签退,扣除一半课酬");
                 }
             }