浏览代码

feat:教师端课酬

Joburgess 4 年之前
父节点
当前提交
60b496da96

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/DeductReasonEnum.java

@@ -7,9 +7,9 @@ import com.ym.mec.common.enums.BaseEnum;
  * @Date 2021/4/16 0016
  * @Date 2021/4/16 0016
  **/
  **/
 public enum DeductReasonEnum implements BaseEnum<String,DeductReasonEnum> {
 public enum DeductReasonEnum implements BaseEnum<String,DeductReasonEnum> {
-    SIGN_IN_ERR("SIGN_IN_ERR", "签到异常"),
-    SIGN_OUT_ERR("SIGN_OUT_ERR", "签退异常"),
-    GPS_ERR("GPS_ERR", "签到地点异常"),
+    SIGN_IN_TIME_ERR("SIGN_IN_TIME_ERR", "签到异常"),
+    SIGN_OUT_TIME_ERR("SIGN_OUT_ERR", "签退异常"),
+    GPS_ERR("GPS_ERR", "签到签退地点异常"),
     TRAIL("TRAIL", "试用期内");
     TRAIL("TRAIL", "试用期内");
 
 
     private String code;
     private String code;

+ 41 - 30
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -1529,7 +1529,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
             if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
                 //未签到扣除全部课酬
                 //未签到扣除全部课酬
                 deductCost = deductCost.add(teacherSalary.abs());
                 deductCost = deductCost.add(teacherSalary.abs());
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, teacherSalary.abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.abs()));
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
                 //异常签到
                 //异常签到
                 int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
                 int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
@@ -1537,18 +1537,18 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
                 if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
                     //课程开始前1分钟至开始后3分钟进入教室
                     //课程开始前1分钟至开始后3分钟进入教室
                     deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
                     deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
                 }else if(signCourseTimeBetween<=-3){
                 }else if(signCourseTimeBetween<=-3){
                     //课程开始后3分钟后进入教室
                     //课程开始后3分钟后进入教室
                     deductCost = deductCost.add(teacherSalary.abs());
                     deductCost = deductCost.add(teacherSalary.abs());
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, teacherSalary.abs()));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.abs()));
                 }
                 }
             }
             }
 
 
             if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
             if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
                 //未签退扣除一半课酬
                 //未签退扣除一半课酬
                 deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
                 deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
                 //异常签退
                 //异常签退
                 int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
                 int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
@@ -1558,12 +1558,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     //课程开始前20分钟至开始后3分钟退出教室
                     //课程开始前20分钟至开始后3分钟退出教室
                     deductCost = deductCost.add(teacherSalary.abs());
                     deductCost = deductCost.add(teacherSalary.abs());
 //                    deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
 //                    deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, teacherSalary.abs()));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.abs()));
                 }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
                 }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
                     //课程结束前3分钟后至课程结束前退出教室
                     //课程结束前3分钟后至课程结束前退出教室
                     deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
                     deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
 //                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
 //                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
                 }
                 }
             }
             }
 
 
@@ -1627,11 +1627,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 }
                 }
             }
             }
 
 
+            BigDecimal gpsDeductAmount = new BigDecimal("0");
+
             if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignInStatus())){
             if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignInStatus())){
                 //无签到记录扣除全部课酬
                 //无签到记录扣除全部课酬
                 deductCost = deductCost.add(teacherSalary.abs());
                 deductCost = deductCost.add(teacherSalary.abs());
 //                deductReasons.add("未签到扣除全部课酬");
 //                deductReasons.add("未签到扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, teacherSalary.abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.abs()));
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
                 int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
                 int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
                 float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
                 float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
@@ -1639,23 +1641,23 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     //未提前20分钟打卡扣除50元
                     //未提前20分钟打卡扣除50元
                     deductCost = deductCost.add(new BigDecimal(50));
                     deductCost = deductCost.add(new BigDecimal(50));
 //                    deductReasons.add("未提前20分钟打卡扣除50元");
 //                    deductReasons.add("未提前20分钟打卡扣除50元");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, new BigDecimal(50)));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, new BigDecimal(50)));
                 }else if(signCourseTimeBetween<=0&&signCourseTimeBetween>-30){
                 }else if(signCourseTimeBetween<=0&&signCourseTimeBetween>-30){
                     //迟到30分钟内扣除一半课酬
                     //迟到30分钟内扣除一半课酬
                     deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
                     deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
 //                    deductReasons.add("迟到30分钟内扣除一半课酬");
 //                    deductReasons.add("迟到30分钟内扣除一半课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
                 }else if(signCourseTimeBetween<=-30){
                 }else if(signCourseTimeBetween<=-30){
                     //迟到30分钟及以上扣除全部课酬
                     //迟到30分钟及以上扣除全部课酬
                     deductCost = deductCost.add(teacherSalary.abs());
                     deductCost = deductCost.add(teacherSalary.abs());
 //                    deductReasons.add("迟到30分钟及以上扣除全部课酬");
 //                    deductReasons.add("迟到30分钟及以上扣除全部课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, teacherSalary.abs()));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.abs()));
                 }
                 }
                 if(!signInInRange){
                 if(!signInInRange){
                     //签到经纬度异常扣除50
                     //签到经纬度异常扣除50
                     deductCost = deductCost.add(new BigDecimal(50));
                     deductCost = deductCost.add(new BigDecimal(50));
 //                    deductReasons.add("签到经纬度异常扣除50");
 //                    deductReasons.add("签到经纬度异常扣除50");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR, new BigDecimal(50)));
+                    gpsDeductAmount =  new BigDecimal(50);
                 }
                 }
             }else{
             }else{
                 signInInRange = true;
                 signInInRange = true;
@@ -1665,7 +1667,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //未签退扣除全部课酬
                 //未签退扣除全部课酬
                 deductCost = deductCost.add(teacherSalary.abs());
                 deductCost = deductCost.add(teacherSalary.abs());
 //                deductReasons.add("未签退扣除全部课酬");
 //                deductReasons.add("未签退扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, teacherSalary.abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.abs()));
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
                 int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
                 int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
                 float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float) 60;
                 float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float) 60;
@@ -1673,17 +1675,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     //早退
                     //早退
                     deductCost = deductCost.add(teacherSalary.abs());
                     deductCost = deductCost.add(teacherSalary.abs());
 //                    deductReasons.add("早退扣除全部课酬");
 //                    deductReasons.add("早退扣除全部课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, teacherSalary.abs()));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.abs()));
                 }else if((signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0)||signOutCourseTimeBetween<=3600){
                 }else if((signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0)||signOutCourseTimeBetween<=3600){
                     //异常签退,扣除50元
                     //异常签退,扣除50元
                     deductCost = deductCost.add(new BigDecimal(50));
                     deductCost = deductCost.add(new BigDecimal(50));
 //                    deductReasons.add("异常签退,扣除50元");
 //                    deductReasons.add("异常签退,扣除50元");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, new BigDecimal(50)));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, new BigDecimal(50)));
                 }else{
                 }else{
                     //签退经纬度异常,扣除50元
                     //签退经纬度异常,扣除50元
                     deductCost = deductCost.add(new BigDecimal(50));
                     deductCost = deductCost.add(new BigDecimal(50));
 //                    deductReasons.add("签退经纬度异常,扣除50元");
 //                    deductReasons.add("签退经纬度异常,扣除50元");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, new BigDecimal(50)));
+                    gpsDeductAmount =  new BigDecimal(50);
                 }
                 }
             }else{
             }else{
                 signOutInRange = true;
                 signOutInRange = true;
@@ -1693,7 +1695,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //签到签退GPS定位在指定距离外
                 //签到签退GPS定位在指定距离外
                 deductCost = deductCost.add(teacherSalary.abs());
                 deductCost = deductCost.add(teacherSalary.abs());
 //                deductReasons.add("签到签退GPS定位在指定距离外,扣除全部课酬");
 //                deductReasons.add("签到签退GPS定位在指定距离外,扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, teacherSalary.abs()));
+                gpsDeductAmount = teacherSalary.abs();
+            }
+
+            if(BigDecimal.ZERO.compareTo(gpsDeductAmount)<=0){
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR, gpsDeductAmount));
             }
             }
 
 
             BigDecimal finalSalary = teacherSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
             BigDecimal finalSalary = teacherSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
@@ -1740,12 +1746,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
 
         //扣除费用
         //扣除费用
         BigDecimal deductCost = new BigDecimal(0);
         BigDecimal deductCost = new BigDecimal(0);
+        BigDecimal gpsDeductAmount = new BigDecimal("0");
 
 
         if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendances.get(0).getSignInStatus())){
         if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendances.get(0).getSignInStatus())){
             //未签到扣除全部课酬
             //未签到扣除全部课酬
             deductCost = deductCost.add(expectSalary.abs());
             deductCost = deductCost.add(expectSalary.abs());
 //            deductReasons.add("未签到扣除全部课酬");
 //            deductReasons.add("未签到扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, expectSalary.abs()));
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.abs()));
         }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())){
         }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())){
             //异常签到
             //异常签到
             int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendances.get(0).getSignInTime(), courseSchedule.getStartClassTime());
             int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendances.get(0).getSignInTime(), courseSchedule.getStartClassTime());
@@ -1754,24 +1761,24 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //课程开始前1分钟至开始后3分钟进入教室
                 //课程开始前1分钟至开始后3分钟进入教室
                 deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
                 deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
 //                deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
 //                deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
             }else if(signCourseTimeBetween<=-3){
             }else if(signCourseTimeBetween<=-3){
                 //课程开始后3分钟后进入教室
                 //课程开始后3分钟后进入教室
                 deductCost = deductCost.add(expectSalary.abs());
                 deductCost = deductCost.add(expectSalary.abs());
 //                deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
 //                deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, expectSalary.abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.abs()));
             }
             }
         }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.OFFLINE.equals(courseSchedule.getTeachMode())){
         }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.OFFLINE.equals(courseSchedule.getTeachMode())){
             deductCost = deductCost.add(expectSalary.abs());
             deductCost = deductCost.add(expectSalary.abs());
 //            deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
 //            deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, expectSalary.abs()));
+            gpsDeductAmount = expectSalary.abs();
         }
         }
 
 
         if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendances.get(0).getSignOutStatus())){
         if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendances.get(0).getSignOutStatus())){
             //未签退扣除全部课酬
             //未签退扣除全部课酬
             deductCost = deductCost.add(expectSalary.abs());
             deductCost = deductCost.add(expectSalary.abs());
 //            deductReasons.add("未签退扣除全部课酬");
 //            deductReasons.add("未签退扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, expectSalary.abs()));
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.abs()));
         }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignOutStatus())&&TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())){
         }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignOutStatus())&&TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())){
             //异常签退
             //异常签退
             int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendances.get(0).getSignOutTime(), courseSchedule.getEndClassTime());
             int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendances.get(0).getSignOutTime(), courseSchedule.getEndClassTime());
@@ -1781,17 +1788,21 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //课程开始前20分钟至开始后3分钟退出教室
                 //课程开始前20分钟至开始后3分钟退出教室
                 deductCost = deductCost.add(expectSalary.abs());
                 deductCost = deductCost.add(expectSalary.abs());
 //                deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
 //                deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, expectSalary.abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.abs()));
             }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
             }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
                 //课程结束前3分钟后至课程结束前退出教室
                 //课程结束前3分钟后至课程结束前退出教室
                 deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
                 deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
 //                deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
 //                deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
             }
             }
         }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.OFFLINE.equals(courseSchedule.getTeachMode())){
         }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.OFFLINE.equals(courseSchedule.getTeachMode())){
             deductCost = deductCost.add(expectSalary.abs());
             deductCost = deductCost.add(expectSalary.abs());
 //            deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
 //            deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, expectSalary.abs()));
+            gpsDeductAmount = expectSalary.abs();
+        }
+
+        if(BigDecimal.ZERO.compareTo(gpsDeductAmount)<=0){
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR, gpsDeductAmount));
         }
         }
 
 
         BigDecimal finalSalary = expectSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
         BigDecimal finalSalary = expectSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
@@ -1843,7 +1854,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             //未签到扣除全部课酬
             //未签到扣除全部课酬
             deductCost = deductCost.add(expectSalary.abs());
             deductCost = deductCost.add(expectSalary.abs());
 //            deductReasons.add("未签到扣除全部课酬");
 //            deductReasons.add("未签到扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, expectSalary.abs()));
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.abs()));
         }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
         }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
             //异常签到
             //异常签到
             int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
             int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
@@ -1852,12 +1863,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //课程开始前1分钟至开始后3分钟进入教室
                 //课程开始前1分钟至开始后3分钟进入教室
                 deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
                 deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
 //                deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
 //                deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
             }else if(signCourseTimeBetween<=-3){
             }else if(signCourseTimeBetween<=-3){
                 //课程开始后3分钟后进入教室
                 //课程开始后3分钟后进入教室
                 deductCost = deductCost.add(expectSalary.abs());
                 deductCost = deductCost.add(expectSalary.abs());
 //                deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
 //                deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_ERR, expectSalary.abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.abs()));
             }
             }
         }
         }
 
 
@@ -1865,7 +1876,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             //未签退扣除全部课酬
             //未签退扣除全部课酬
             deductCost = deductCost.add(expectSalary.abs());
             deductCost = deductCost.add(expectSalary.abs());
 //            deductReasons.add("未签退扣除全部课酬");
 //            deductReasons.add("未签退扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, expectSalary.abs()));
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.abs()));
         }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
         }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
             //异常签退
             //异常签退
             int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
             int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
@@ -1875,12 +1886,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //课程开始前20分钟至开始后3分钟退出教室
                 //课程开始前20分钟至开始后3分钟退出教室
                 deductCost = deductCost.add(expectSalary.abs());
                 deductCost = deductCost.add(expectSalary.abs());
 //                deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
 //                deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, expectSalary.abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.abs()));
             }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
             }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
                 //课程结束前3分钟后至课程结束前退出教室
                 //课程结束前3分钟后至课程结束前退出教室
                 deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
                 deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
 //                deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
 //                deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
             }
             }
         }
         }