| 
					
				 | 
			
			
				@@ -64,6 +64,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SysConfigService sysConfigDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SysTenantConfigService sysTenantConfigService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private TeacherAttendanceDao teacherAttendanceDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ClassGroupDao classGroupDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,16 +74,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ClassGroupStudentMapperDao classGroupStudentMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private CourseScheduleRewardsRulesService courseScheduleRewardsRulesService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private StudentAttendanceDao studentAttendanceDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private TeacherSalaryComplaintsDao teacherSalaryComplaintsDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private TeacherCourseRewardService teacherCourseRewardService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SysMessageService sysMessageService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private TeacherCourseRewardDao teacherCourseRewardDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -216,7 +212,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void practiceTeacherSalarySettlement() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void practiceTeacherSalarySettlement(Integer tenantId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取教师未结算课程记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date date = DateUtil.addMonths(now, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -242,28 +238,21 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal zero = new BigDecimal("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //试用期课酬规则 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String configValue2 = sysTenantConfigService.getConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Integer probationTeacherSalary = 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(StringUtils.isNotEmpty(configValue2)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            probationTeacherSalary = Integer.parseInt(configValue2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取课程对应教学点补贴 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(new ArrayList<>(courseScheduleIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal zero = new BigDecimal("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < someDayAgoTeacherCourseSalaryNoSettlement.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CourseScheduleTeacherSalary courseScheduleTeacherSalary = someDayAgoTeacherCourseSalaryNoSettlement.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            expectSalary = expectSalary.add(subsidy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            if(BigDecimal.ZERO.compareTo(subsidy)!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                deductReasons.add("教学点补贴:" + subsidy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 courseScheduleTeacherSalary.setSubsidy(zero); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -286,22 +275,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //判断课程是否在试用期内 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getEntryDate())>=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                trail = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())>=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //如果上课日期在试用期内按80%结算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(trail){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                expectSalary = expectSalary.multiply(new BigDecimal("0.8")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(isTrail(teacher,courseScheduleTeacherSalary.getCourseSchedule().getClassDate())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                expectSalary = expectSalary.multiply(new BigDecimal(probationTeacherSalary/100)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 deductReasons.add("未转正"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -364,12 +340,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleTeacherSalary.setSettlementTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleTeacherSalary.setBelongToDaya(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void teacherSalarySettlement() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void teacherSalarySettlement(Integer tenantId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date date = DateUtil.addMonths(now, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -388,6 +364,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             LOGGER.info("未获取到未结算课酬记录!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //试用期课酬规则 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String configValue2 = sysTenantConfigService.getConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Integer probationTeacherSalary = 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(StringUtils.isNotEmpty(configValue2)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            probationTeacherSalary = Integer.parseInt(configValue2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取未结算课程编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -395,30 +378,15 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().collect(Collectors.groupingBy(ta -> org.apache.commons.lang3.StringUtils.joinWith(":", ta.getCourseScheduleId(), ta.getTeacherId()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal zero = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取课程对应教学点补贴 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //处理课酬信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < someDayAgoTeacherCourseSalaryNoSettlement.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CourseScheduleTeacherSalary courseScheduleTeacherSalary = someDayAgoTeacherCourseSalaryNoSettlement.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            expectSalary = expectSalary.add(subsidy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            if(BigDecimal.ZERO.compareTo(subsidy)!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                deductReasons.add("教学点补贴:" + subsidy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                courseScheduleTeacherSalary.setSubsidy(zero); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(BigDecimal.ZERO.compareTo(courseScheduleTeacherSalary.getSubsidy())!=0){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -439,22 +407,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //判断课程是否在试用期内 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getEntryDate())>=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                trail = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())>=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //如果上课日期在试用期内按80%结算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(trail){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                expectSalary = expectSalary.multiply(new BigDecimal("0.8")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(isTrail(teacher,courseScheduleTeacherSalary.getCourseSchedule().getClassDate())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                expectSalary = expectSalary.multiply(new BigDecimal(probationTeacherSalary/100)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 deductReasons.add("未转正"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -462,7 +418,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal deductCost = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(courseTeacherAttendances.get(0).getSignInStatus())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //未签到扣除全部课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 deductCost = deductCost.add(expectSalary.abs()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -520,12 +475,24 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleTeacherSalary.setSettlementTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleTeacherSalary.setBelongToDaya(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Boolean isTrail(Teacher teacher,Date classDate){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //判断课程是否在试用期内 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&classDate.compareTo(teacher.getEntryDate())>=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            trail = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&classDate.compareTo(teacher.getFormalStaffDate())>=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return trail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void musicGroupTeacherSalarySettlement() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void musicGroupTeacherSalarySettlement(Integer tenantId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date date = DateUtil.addMonths(now, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -541,10 +508,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal zero = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取课程对应教学点补贴 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Set<Integer> schoolIds = yesterdayCourseSchedules.stream().map(CourseSchedule::getSchoolId).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<School> schools = schoolDao.getSchools(new ArrayList<>(schoolIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, School> idSchoolMap = new HashMap<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -563,20 +526,35 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //定位范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String gpsRange = sysTenantConfigService.getConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         double attendanceRange = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(Objects.nonNull(sysConfig)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            attendanceRange = Double.valueOf(sysConfig.getParanValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(StringUtils.isNotEmpty(gpsRange)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            attendanceRange = Double.valueOf(gpsRange); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //签到签退定位异常扣除金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        String configValue = sysTenantConfigService.getConfigValue(SysConfigService.OFFLINE_GPS_ERROR_CUT_SALARY,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        Integer gpsCutSalary = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if(StringUtils.isNotEmpty(configValue)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            gpsCutSalary = Integer.parseInt(configValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //签到签退定位异常扣除单位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        String configValue1 = sysTenantConfigService.getConfigValue(SysConfigService.OFFLINE_GPS_ERROR_CUT_SALARY_UNIT,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        UnitEnum unitEnum = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if(StringUtils.isNotEmpty(configValue1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            unitEnum = UnitEnum.valueOf(configValue1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          //试用期课酬规则 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String configValue2 = sysTenantConfigService.getConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Integer probationTeacherSalary = 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(StringUtils.isNotEmpty(configValue2)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            probationTeacherSalary = Integer.parseInt(configValue2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //教师签到记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().collect(Collectors.groupingBy(ta -> org.apache.commons.lang3.StringUtils.joinWith(":", ta.getCourseScheduleId(), ta.getTeacherId()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //学员点名记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<StudentAttendance> allStudentAttendances = studentAttendanceDao.findByCourseIds(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Long, List<StudentAttendance>> courseStudentAttendanceMap = allStudentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //需要根据实际上课学员结算课酬的课程编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Long> needStudentAttendanceCourseScheduleIds = yesterdayCourseSchedules.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .filter(c -> CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(c.getType()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -591,23 +569,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Long, Long> courseNormalStudentsMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(!CollectionUtils.isEmpty(studentAttendances)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseNormalStudentsMap =studentAttendances.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    .filter(studentAttendance -> StudentAttendanceStatusEnum.NORMAL.equals(studentAttendance.getStatus())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.counting())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //课程对应乐团结算方式集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, String> musicGroupSettlementsMap = MapUtil.convertMybatisMap(musicGroupSettlementTypeByCourse); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //所有老师编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> allTeacherIds = courseScheduleTeacherSalaries.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .map(CourseScheduleTeacherSalary::getUserId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //所有老师默认乐团课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Set<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Teacher> teachers = teacherDao.findByTeacherIds(new ArrayList<>(teacherIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, Teacher> idTeacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, t -> t, (t1, t2) -> t1)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -644,15 +608,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 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(courseScheduleTeacherSalary.getSubsidy())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     courseScheduleTeacherSalary.setSubsidy(zero); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -662,24 +617,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     deductReasons.add("课程补贴:" + courseScheduleTeacherSalary.getSubsidy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //未转正 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //试用期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //判断课程是否在试用期内 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                boolean trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseSchedule.getClassDate().compareTo(teacher.getEntryDate())>=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    trail = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())>=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //如果上课日期在试用期内按80%结算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(trail){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    teacherSalary = teacherSalary.multiply(new BigDecimal("0.8")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(isTrail(teacher,courseSchedule.getClassDate())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherSalary = teacherSalary.multiply(new BigDecimal(probationTeacherSalary/100)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     deductReasons.add("未转正"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -749,15 +689,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             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(courseScheduleTeacherSalary.getSubsidy())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 courseScheduleTeacherSalary.setSubsidy(zero); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -767,9 +698,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 deductReasons.add("课程补贴:" + courseScheduleTeacherSalary.getSubsidy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //判断课程是否在试用期内 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             boolean trail = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -790,15 +718,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal deductCost = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean isCallName = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<StudentAttendance> courseStudentAttendance = courseStudentAttendanceMap.get(courseScheduleTeacherSalary.getCourseScheduleId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(!CollectionUtils.isEmpty(courseStudentAttendance)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                long csaNum = courseStudentAttendance.stream().filter(csa -> DateUtil.hoursBetween(csa.getCreateTime(), courseSchedule.getStartClassTime()) < 4).count(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(csaNum>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    isCallName = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             TeacherAttendance teacherAttendance = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(!CollectionUtils.isEmpty(courseTeacherAttendances)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 teacherAttendance = courseTeacherAttendances.get(0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -822,6 +741,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     signOutInRange = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //签到状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(Objects.isNull(teacherAttendance) || Objects.isNull(teacherAttendance.getSignInStatus())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //无签到记录扣除全部课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                deductCost = deductCost.add(teacherSalary.abs()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                deductReasons.add("未签到扣除全部课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignInStatus())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //无签到记录扣除全部课酬 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2160,11 +2086,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //签到GPS范围VIP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        double vipAttendanceRange = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(Objects.nonNull(vipSysConfig)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        double vipAttendanceRange = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if(Objects.nonNull(vipSysConfig)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //教师签到记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2203,7 +2129,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 case VIP: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 case PRACTICE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, false); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2228,7 +2154,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         teacherSalaryOverview.setAttendanceRange(attendanceRange); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        teacherSalaryOverview.setVipAttendanceRange(vipAttendanceRange); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teacherSalaryOverview.setVipAttendanceRange(attendanceRange); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return teacherSalaryOverview; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2277,11 +2203,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //签到GPS范围VIP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double vipAttendanceRange = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(Objects.nonNull(vipSysConfig)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            double vipAttendanceRange = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            if(Objects.nonNull(vipSysConfig)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //教师签到记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2323,7 +2249,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, queryInfo.getUpdated()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     case VIP: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange, queryInfo.getUpdated()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange, queryInfo.getUpdated()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     case PRACTICE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, queryInfo.getUpdated()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2567,4 +2493,5 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sysMessageService.batchPushMessage(MessageTypeEnum.TEACHER_PUSH_INCOME_REMIND, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 userMap, null, 0, "12", "TEACHER","income_remind.mp3","income_remind_channel"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |