|  | @@ -260,6 +260,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            if(Objects.isNull(teacher)||(Objects.nonNull(teacher.getIsSettlementSalary())&&!teacher.getIsSettlementSalary())){
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setDeductionReason("不结算课酬");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setSettlementTime(now);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setBelongToDaya(false);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  //            boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0;
 | 
	
		
			
				|  |  |  //            boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -336,6 +347,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setSettlementTime(now);
 | 
	
		
			
				|  |  | +            courseScheduleTeacherSalary.setBelongToDaya(false);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -390,6 +402,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            if(Objects.isNull(teacher)||(Objects.nonNull(teacher.getIsSettlementSalary())&&!teacher.getIsSettlementSalary())){
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setDeductionReason("不结算课酬");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setSettlementTime(now);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setBelongToDaya(false);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  //            boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0;
 | 
	
		
			
				|  |  |  //            boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -469,6 +492,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setSettlementTime(now);
 | 
	
		
			
				|  |  | +            courseScheduleTeacherSalary.setBelongToDaya(false);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -570,6 +594,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            if(Objects.isNull(teacher)||(Objects.nonNull(teacher.getIsSettlementSalary())&&!teacher.getIsSettlementSalary())){
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setDeductionReason("不结算课酬");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setBelongToDaya(false);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setSettlementTime(now);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              if(CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
 | 
	
		
			
				|  |  |                  Long normalStudentNum = courseNormalStudentsMap.get(courseSchedule.getId());
 | 
	
		
			
				|  |  |                  if(Objects.isNull(normalStudentNum)){
 | 
	
	
		
			
				|  | @@ -667,6 +702,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                  //更新教师结算信息
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalary.setSubsidy(subsidy);
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
 | 
	
		
			
				|  |  | +                courseScheduleTeacherSalary.setBelongToDaya(false);
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalary.setSettlementTime(now);
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -813,6 +849,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |              //更新教师结算信息
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setSubsidy(subsidy);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
 | 
	
		
			
				|  |  | +            courseScheduleTeacherSalary.setBelongToDaya(false);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalary.setSettlementTime(now);
 | 
	
		
			
				|  |  |              courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -1558,6 +1595,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |      public void calMusicCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
 | 
	
		
			
				|  |  |                                                    List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 | 
	
		
			
				|  |  | +            //不结算课酬
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          BigDecimal teacherSalary = courseScheduleTeacherSalary.getExpectSalary();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if(CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
 | 
	
	
		
			
				|  | @@ -1789,6 +1831,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                                                  List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange) {
 | 
	
		
			
				|  |  |          List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 | 
	
		
			
				|  |  | +            //不结算课酬
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |          BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          BigDecimal subsidy = new BigDecimal(0);
 | 
	
	
		
			
				|  | @@ -1891,6 +1938,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                                                 List<TeacherAttendance> teacherAttendances, School school, Teacher teacher) {
 | 
	
		
			
				|  |  |          List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
 | 
	
		
			
				|  |  | +            //不结算课酬
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |          BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          BigDecimal subsidy = new BigDecimal(0);
 | 
	
	
		
			
				|  | @@ -2187,11 +2239,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
	
		
			
				|  |  |                          if(trailReasonNum<=0){
 | 
	
		
			
				|  |  |                              teacherSalary.getDeductReasons().add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.TRAIL, teacherIncomeInfo.getExpectIncome().subtract(teacherIncomeInfo.getExpectIncome().multiply(new BigDecimal("0.8")))));
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | -                    }else{
 | 
	
		
			
				|  |  | +                    }else if(!CollectionUtils.isEmpty(teacherSalary.getDeductReasons())){
 | 
	
		
			
				|  |  |                          teacherSalary.setDeductReasons(teacherSalary.getDeductReasons().stream().filter(p->!DeductReasonEnum.TRAIL.equals(p.getDeductReason())).collect(Collectors.toList()));
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  teacherIncomeInfo.setDeductReasons(teacherSalary.getDeductReasons());
 | 
	
		
			
				|  |  | +                if(CollectionUtils.isEmpty(teacherSalary.getDeductReasons())){
 | 
	
		
			
				|  |  | +                    teacherIncomeInfo.setDeductReasons(Collections.EMPTY_LIST);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  teacherIncomeInfo.setTeacherAttendance(teacherAttendances.get(0));
 | 
	
		
			
				|  |  |                  if(Objects.nonNull(school)&&Objects.nonNull(teacherIncomeInfo.getTeacherAttendance())){
 | 
	
		
			
				|  |  |                      teacherIncomeInfo.getTeacherAttendance().setSchoolLongitudeLatitude(school.getLongitudeLatitude());
 |