|  | @@ -227,6 +227,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |          Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
 | 
	
		
			
				|  |  | +            List<String> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
 | 
	
		
			
				|  |  |              if (Objects.isNull(subsidy)) {
 | 
	
	
		
			
				|  | @@ -235,14 +236,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setSubsidy(subsidy);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().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")));
 | 
	
		
			
				|  |  | +                deductReasons.add("未转正");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //扣除费用
 | 
	
		
			
				|  |  |              BigDecimal deductCost = new BigDecimal(0);
 | 
	
		
			
				|  |  | -            List<String> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
 | 
	
	
		
			
				|  | @@ -289,9 +295,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if(BigDecimal.ZERO.compareTo(deductCost)<0){
 | 
	
		
			
				|  |  |                  deductReasons.add("扣除总费用:" + deductCost);
 | 
	
		
			
				|  |  | -                courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            if(!CollectionUtils.isEmpty(deductReasons))
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setSettlementTime(now);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
	
	
		
			
				|  | @@ -358,21 +364,25 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |          //处理课酬信息
 | 
	
		
			
				|  |  |          someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            List<String> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  |              BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
 | 
	
		
			
				|  |  |              if (Objects.isNull(subsidy)) {
 | 
	
		
			
				|  |  |                  subsidy = new BigDecimal(0);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setSubsidy(subsidy);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().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")));
 | 
	
		
			
				|  |  | +                deductReasons.add("未转正");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //扣除费用
 | 
	
		
			
				|  |  |              BigDecimal deductCost = new BigDecimal(0);
 | 
	
		
			
				|  |  | -            List<String> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  |              List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
 | 
	
	
		
			
				|  | @@ -421,16 +431,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
 | 
	
		
			
				|  |  | -                    deductCost = courseScheduleTeacherSalary.getExpectSalary();
 | 
	
		
			
				|  |  | -                    deductReasons.clear();
 | 
	
		
			
				|  |  | +                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 | 
	
		
			
				|  |  |                      deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if(BigDecimal.ZERO.compareTo(deductCost)<0){
 | 
	
		
			
				|  |  |                  deductReasons.add("扣除总费用:" + deductCost);
 | 
	
		
			
				|  |  | -                courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            if(!CollectionUtils.isEmpty(deductReasons))
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -563,21 +573,25 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                  if(Objects.isNull(teacherSalary)){
 | 
	
		
			
				|  |  |                      teacherSalary = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                List<String> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  BigDecimal subsidy = courseSubsidyMap.get(courseSchedule.getId());
 | 
	
		
			
				|  |  |                  if (Objects.isNull(subsidy)) {
 | 
	
		
			
				|  |  |                      subsidy = new BigDecimal(0);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  teacherSalary = teacherSalary.add(subsidy);
 | 
	
		
			
				|  |  | +                if(BigDecimal.ZERO.compareTo(subsidy)!=0){
 | 
	
		
			
				|  |  | +                    deductReasons.add("教学点补贴:" + subsidy);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //如果上课日期在转正日期之前的按80%结算
 | 
	
		
			
				|  |  |                  if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0){
 | 
	
		
			
				|  |  |                      teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
 | 
	
		
			
				|  |  | +                    deductReasons.add("未转正");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //扣除费用
 | 
	
		
			
				|  |  |                  BigDecimal deductCost = new BigDecimal(0);
 | 
	
		
			
				|  |  | -                List<String> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  |                  deductReasons.add("课程应到人数:" + normalStudentNum);
 | 
	
		
			
				|  |  |                  List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -626,7 +640,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                  if(BigDecimal.ZERO.compareTo(deductCost)<0){
 | 
	
		
			
				|  |  |                      deductReasons.add("扣除总费用:" + deductCost);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                courseScheduleTeacherSalary.setDeductionReason(org.apache.commons.lang3.StringUtils.join(deductReasons, ";"));
 | 
	
		
			
				|  |  | +                if(!CollectionUtils.isEmpty(deductReasons))
 | 
	
		
			
				|  |  | +                    courseScheduleTeacherSalary.setDeductionReason(org.apache.commons.lang3.StringUtils.join(deductReasons, ";"));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //更新教师结算信息
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalary.setSubsidy(subsidy);
 | 
	
	
		
			
				|  | @@ -674,19 +689,24 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                  teacherSalary=courseScheduleTeacherSalary.getExpectSalary();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            List<String> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              BigDecimal subsidy = courseSubsidyMap.get(courseSchedule.getId());
 | 
	
		
			
				|  |  |              if (Objects.isNull(subsidy)) {
 | 
	
		
			
				|  |  |                  subsidy = new BigDecimal(0);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              teacherSalary = teacherSalary.add(subsidy);
 | 
	
		
			
				|  |  | +            if(BigDecimal.ZERO.compareTo(subsidy)!=0){
 | 
	
		
			
				|  |  | +                deductReasons.add("教学点补贴:" + subsidy);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0){
 | 
	
		
			
				|  |  |                  teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
 | 
	
		
			
				|  |  | +                deductReasons.add("未转正");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //扣除费用
 | 
	
		
			
				|  |  |              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;
 | 
	
	
		
			
				|  | @@ -775,9 +795,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if(!signInInRange&&!signOutInRange){
 | 
	
		
			
				|  |  | -                deductReasons.clear();
 | 
	
		
			
				|  |  |                  //签到签退GPS定位在指定距离外
 | 
	
		
			
				|  |  | -                deductCost = teacherSalary;
 | 
	
		
			
				|  |  | +                deductCost = deductCost.add(teacherSalary);
 | 
	
		
			
				|  |  |                  deductReasons.add("签到签退GPS定位在指定距离外,扣除全部课酬");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -785,6 +804,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if(BigDecimal.ZERO.compareTo(deductCost)<0){
 | 
	
		
			
				|  |  |                  deductReasons.add("扣除总费用:" + deductCost);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(!CollectionUtils.isEmpty(deductReasons)){
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalary.setDeductionReason(org.apache.commons.lang3.StringUtils.join(deductReasons, ";"));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 |