|  | @@ -232,12 +232,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |              }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
 |  |              }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
 | 
											
												
													
														|  |                  //异常签到
 |  |                  //异常签到
 | 
											
												
													
														|  |                  int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseScheduleTeacherSalary.getCourseSchedule().getStartClassTime());
 |  |                  int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseScheduleTeacherSalary.getCourseSchedule().getStartClassTime());
 | 
											
												
													
														|  | -                int signCourseTimeBetween = signCourseTimeBetweenSeconds/60;
 |  | 
 | 
											
												
													
														|  | -                if(signCourseTimeBetween<1&&signCourseTimeBetween>-3){
 |  | 
 | 
											
												
													
														|  | 
 |  | +                float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
 | 
											
												
													
														|  | 
 |  | +                if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
 | 
											
												
													
														|  |                      //课程开始前1分钟至开始后3分钟进入教室
 |  |                      //课程开始前1分钟至开始后3分钟进入教室
 | 
											
												
													
														|  | -                    deductCost = deductCost.add(new BigDecimal(50));
 |  | 
 | 
											
												
													
														|  | -                    deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除50元");
 |  | 
 | 
											
												
													
														|  | -                }else if(signCourseTimeBetween<-3){
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
 | 
											
												
													
														|  | 
 |  | +                }else if(signCourseTimeBetween<=-3){
 | 
											
												
													
														|  |                      //课程开始后3分钟后进入教室
 |  |                      //课程开始后3分钟后进入教室
 | 
											
												
													
														|  |                      deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 |  |                      deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 | 
											
												
													
														|  |                      deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
 |  |                      deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
 | 
											
										
											
												
													
														|  | @@ -250,20 +250,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |                  deductReasons.add("未签退扣除一半课酬");
 |  |                  deductReasons.add("未签退扣除一半课酬");
 | 
											
												
													
														|  |              }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
 |  |              }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
 | 
											
												
													
														|  |                  //异常签退
 |  |                  //异常签退
 | 
											
												
													
														|  | -                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getStartClassTime());
 |  | 
 | 
											
												
													
														|  | -                float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |                  int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getEndClassTime());
 |  |                  int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getEndClassTime());
 | 
											
												
													
														|  |                  float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float)60;
 |  |                  float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float)60;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -                if(signCourseTimeBetween<=20&&signOutCourseTimeBetween>3){
 |  | 
 | 
											
												
													
														|  | 
 |  | +                if(signOutCourseTimeBetween>3){
 | 
											
												
													
														|  |                      //课程开始前20分钟至开始后3分钟退出教室
 |  |                      //课程开始前20分钟至开始后3分钟退出教室
 | 
											
												
													
														|  |                      deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 |  |                      deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 | 
											
												
													
														|  | -                    deductReasons.add("课程开始前20分钟至开始后3分钟退出教室扣除全部课酬");
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
 | 
											
												
													
														|  |                  }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
 |  |                  }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
 | 
											
												
													
														|  |                      //课程结束前3分钟后至课程结束前退出教室
 |  |                      //课程结束前3分钟后至课程结束前退出教室
 | 
											
												
													
														|  | -                    deductCost = deductCost.add(new BigDecimal(50));
 |  | 
 | 
											
												
													
														|  | -                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除50元");
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -274,7 +271,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |                  courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
 |  |                  courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            courseScheduleTeacherSalary.setActualSalary(finalSalary);
 |  | 
 | 
											
												
													
														|  | 
 |  | +            courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
 | 
											
												
													
														|  |              courseScheduleTeacherSalary.setSettlementTime(now);
 |  |              courseScheduleTeacherSalary.setSettlementTime(now);
 | 
											
												
													
														|  |              courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 |  |              courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
											
												
													
														|  |          });
 |  |          });
 | 
											
										
											
												
													
														|  | @@ -348,8 +345,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |                  float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
 |  |                  float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
 | 
											
												
													
														|  |                  if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
 |  |                  if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
 | 
											
												
													
														|  |                      //课程开始前1分钟至开始后3分钟进入教室
 |  |                      //课程开始前1分钟至开始后3分钟进入教室
 | 
											
												
													
														|  | -                    deductCost = deductCost.add(new BigDecimal(50));
 |  | 
 | 
											
												
													
														|  | -                    deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除50元");
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
 | 
											
												
													
														|  |                  }else if(signCourseTimeBetween<=-3){
 |  |                  }else if(signCourseTimeBetween<=-3){
 | 
											
												
													
														|  |                      //课程开始后3分钟后进入教室
 |  |                      //课程开始后3分钟后进入教室
 | 
											
												
													
														|  |                      deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 |  |                      deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 | 
											
										
											
												
													
														|  | @@ -369,20 +366,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |                  deductReasons.add("未签退扣除一半课酬");
 |  |                  deductReasons.add("未签退扣除一半课酬");
 | 
											
												
													
														|  |              }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
 |  |              }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
 | 
											
												
													
														|  |                  //异常签退
 |  |                  //异常签退
 | 
											
												
													
														|  | -                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getStartClassTime());
 |  | 
 | 
											
												
													
														|  | -                float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |                  int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getEndClassTime());
 |  |                  int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getEndClassTime());
 | 
											
												
													
														|  |                  float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float)60;
 |  |                  float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float)60;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -                if(signCourseTimeBetween<=20&&signOutCourseTimeBetween>3){
 |  | 
 | 
											
												
													
														|  | 
 |  | +                if(signOutCourseTimeBetween>3){
 | 
											
												
													
														|  |                      //课程开始前20分钟至开始后3分钟退出教室
 |  |                      //课程开始前20分钟至开始后3分钟退出教室
 | 
											
												
													
														|  |                      deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 |  |                      deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
 | 
											
												
													
														|  | -                    deductReasons.add("课程开始前20分钟至开始后3分钟退出教室扣除全部课酬");
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
 | 
											
												
													
														|  |                  }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
 |  |                  }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
 | 
											
												
													
														|  |                      //课程结束前3分钟后至课程结束前退出教室
 |  |                      //课程结束前3分钟后至课程结束前退出教室
 | 
											
												
													
														|  | -                    deductCost = deductCost.add(new BigDecimal(50));
 |  | 
 | 
											
												
													
														|  | -                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除50元");
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |                  if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
 |  |                  if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
 | 
											
										
											
												
													
														|  | @@ -399,7 +393,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 |  |              BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            courseScheduleTeacherSalary.setActualSalary(finalSalary);
 |  | 
 | 
											
												
													
														|  | 
 |  | +            courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
 | 
											
												
													
														|  |              courseScheduleTeacherSalary.setSettlementTime(now);
 |  |              courseScheduleTeacherSalary.setSettlementTime(now);
 | 
											
												
													
														|  |              courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 |  |              courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
											
												
													
														|  |          });
 |  |          });
 | 
											
										
											
												
													
														|  | @@ -464,15 +458,15 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |                          || CourseSchedule.CourseScheduleType.HIGH.equals(c.getType()))
 |  |                          || CourseSchedule.CourseScheduleType.HIGH.equals(c.getType()))
 | 
											
												
													
														|  |                  .map(CourseSchedule::getId).collect(Collectors.toList());
 |  |                  .map(CourseSchedule::getId).collect(Collectors.toList());
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        List<StudentAttendance> studentAttendances = null;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        List<CourseScheduleStudentPayment> studentAttendances = null;
 | 
											
												
													
														|  |          if(!CollectionUtils.isEmpty(needStudentAttendanceCourseScheduleIds)){
 |  |          if(!CollectionUtils.isEmpty(needStudentAttendanceCourseScheduleIds)){
 | 
											
												
													
														|  | -            studentAttendances = studentAttendanceDao.findByCourseIds(needStudentAttendanceCourseScheduleIds);
 |  | 
 | 
											
												
													
														|  | 
 |  | +            studentAttendances = courseScheduleStudentPaymentDao.findByCourseScheduleIds(needStudentAttendanceCourseScheduleIds);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          Map<Long, Long> courseNormalStudentsMap = new HashMap<>();
 |  |          Map<Long, Long> courseNormalStudentsMap = new HashMap<>();
 | 
											
												
													
														|  |          if(!CollectionUtils.isEmpty(studentAttendances)){
 |  |          if(!CollectionUtils.isEmpty(studentAttendances)){
 | 
											
												
													
														|  |              courseNormalStudentsMap =studentAttendances.stream()
 |  |              courseNormalStudentsMap =studentAttendances.stream()
 | 
											
												
													
														|  |  //                    .filter(studentAttendance -> StudentAttendanceStatusEnum.NORMAL.equals(studentAttendance.getStatus()))
 |  |  //                    .filter(studentAttendance -> StudentAttendanceStatusEnum.NORMAL.equals(studentAttendance.getStatus()))
 | 
											
												
													
														|  | -                    .collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId, Collectors.counting()));
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    .collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.counting()));
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          //课程对应乐团结算方式集合
 |  |          //课程对应乐团结算方式集合
 | 
											
										
											
												
													
														|  | @@ -522,6 +516,66 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |                  if(Objects.isNull(teacherSalary)){
 |  |                  if(Objects.isNull(teacherSalary)){
 | 
											
												
													
														|  |                      teacherSalary = BigDecimal.ZERO;
 |  |                      teacherSalary = BigDecimal.ZERO;
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                //扣除费用
 | 
											
												
													
														|  | 
 |  | +                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()));
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
 | 
											
												
													
														|  | 
 |  | +                if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
 | 
											
												
													
														|  | 
 |  | +                    //未签到扣除全部课酬
 | 
											
												
													
														|  | 
 |  | +                    deductCost = deductCost.add(teacherSalary);
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("未签到扣除全部课酬");
 | 
											
												
													
														|  | 
 |  | +                }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
 | 
											
												
													
														|  | 
 |  | +                    //异常签到
 | 
											
												
													
														|  | 
 |  | +                    int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
 | 
											
												
													
														|  | 
 |  | +                    float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
 | 
											
												
													
														|  | 
 |  | +                    if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
 | 
											
												
													
														|  | 
 |  | +                        //课程开始前1分钟至开始后3分钟进入教室
 | 
											
												
													
														|  | 
 |  | +                        deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
 | 
											
												
													
														|  | 
 |  | +                        deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
 | 
											
												
													
														|  | 
 |  | +                    }else if(signCourseTimeBetween<=-3){
 | 
											
												
													
														|  | 
 |  | +                        //课程开始后3分钟后进入教室
 | 
											
												
													
														|  | 
 |  | +                        deductCost = deductCost.add(teacherSalary);
 | 
											
												
													
														|  | 
 |  | +                        deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
 | 
											
												
													
														|  | 
 |  | +                    //未签退扣除一半课酬
 | 
											
												
													
														|  | 
 |  | +                    deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("未签退扣除一半课酬");
 | 
											
												
													
														|  | 
 |  | +                }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
 | 
											
												
													
														|  | 
 |  | +                    //异常签退
 | 
											
												
													
														|  | 
 |  | +                    int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
 | 
											
												
													
														|  | 
 |  | +                    float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float)60;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                    if(signOutCourseTimeBetween>3){
 | 
											
												
													
														|  | 
 |  | +                        //课程开始前20分钟至开始后3分钟退出教室
 | 
											
												
													
														|  | 
 |  | +                        deductCost = deductCost.add(teacherSalary);
 | 
											
												
													
														|  | 
 |  | +                        deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
 | 
											
												
													
														|  | 
 |  | +                    }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
 | 
											
												
													
														|  | 
 |  | +                        //课程结束前3分钟后至课程结束前退出教室
 | 
											
												
													
														|  | 
 |  | +                        deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
 | 
											
												
													
														|  | 
 |  | +                        deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                BigDecimal finalSalary = teacherSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                if(BigDecimal.ZERO.compareTo(deductCost)<0){
 | 
											
												
													
														|  | 
 |  | +                    deductReasons.add("扣除总费用:" + deductCost);
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setDeductionReason(org.apache.commons.lang3.StringUtils.join(deductReasons, ";"));
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                //更新教师结算信息
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalary.setSettlementTime(now);
 | 
											
												
													
														|  | 
 |  | +                courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                continue;
 | 
											
												
													
														|  |              }else if(CourseSchedule.CourseScheduleType.HIGH.equals(courseSchedule.getType())){
 |  |              }else if(CourseSchedule.CourseScheduleType.HIGH.equals(courseSchedule.getType())){
 | 
											
												
													
														|  |                  //根据课程类型获取对应的默认课酬设置列表
 |  |                  //根据课程类型获取对应的默认课酬设置列表
 | 
											
												
													
														|  |                  List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithCourseType = teacherDefaultMusicGroupSalariesGroupByCourseType.get(courseSchedule.getType());
 |  |                  List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithCourseType = teacherDefaultMusicGroupSalariesGroupByCourseType.get(courseSchedule.getType());
 | 
											
										
											
												
													
														|  | @@ -611,11 +665,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |              }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;
 | 
											
												
													
														|  | -                if(signCourseTimeBetween>=0&&signCourseTimeBetween<20){
 |  | 
 | 
											
												
													
														|  | 
 |  | +                if(signCourseTimeBetween>0&&signCourseTimeBetween<=20){
 | 
											
												
													
														|  |                      //未提前20分钟打卡扣除50元
 |  |                      //未提前20分钟打卡扣除50元
 | 
											
												
													
														|  |                      deductCost = deductCost.add(new BigDecimal(50));
 |  |                      deductCost = deductCost.add(new BigDecimal(50));
 | 
											
												
													
														|  |                      deductReasons.add("未提前20分钟打卡扣除50元");
 |  |                      deductReasons.add("未提前20分钟打卡扣除50元");
 | 
											
												
													
														|  | -                }else if(signCourseTimeBetween<0&&signCourseTimeBetween>-30){
 |  | 
 | 
											
												
													
														|  | 
 |  | +                }else if(signCourseTimeBetween<=0&&signCourseTimeBetween>-30){
 | 
											
												
													
														|  |                      //迟到30分钟内扣除一半课酬
 |  |                      //迟到30分钟内扣除一半课酬
 | 
											
												
													
														|  |                      deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
 |  |                      deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
 | 
											
												
													
														|  |                      deductReasons.add("迟到30分钟内扣除一半课酬");
 |  |                      deductReasons.add("迟到30分钟内扣除一半课酬");
 | 
											
										
											
												
													
														|  | @@ -642,7 +696,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 | 
											
												
													
														|  |                      //早退
 |  |                      //早退
 | 
											
												
													
														|  |                      deductCost = deductCost.add(teacherSalary);
 |  |                      deductCost = deductCost.add(teacherSalary);
 | 
											
												
													
														|  |                      deductReasons.add("早退扣除全部课酬");
 |  |                      deductReasons.add("早退扣除全部课酬");
 | 
											
												
													
														|  | -                }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元");
 |