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