Selaa lähdekoodia

Merge remote-tracking branch 'origin/teacher_income' into teacher_income

zouxuan 4 vuotta sitten
vanhempi
commit
10ae1cc34f

+ 24 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -2134,6 +2134,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //教师
                 Teacher teacher = idTeacherMap.get(teacherSalary.getUserId());
 
+                BigDecimal oldSalary = null;
+                BigDecimal oldSubsidy = null;
+                if(Objects.nonNull(teacherSalary.getSettlementTime())){
+                    oldSalary = teacherSalary.getActualSalary();
+                    oldSubsidy = teacherSalary.getSubsidy();
+                }
+
                 switch (courseSchedule.getGroupType()){
                     case MUSIC:
                         calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange);
@@ -2149,8 +2156,23 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 TeacherIncomeDto teacherIncomeInfo = new TeacherIncomeDto();
                 BeanUtils.copyProperties(courseSchedule, teacherIncomeInfo);
                 teacherIncomeInfo.setExpectSalary(teacherSalary.getExpectSalary());
-                teacherIncomeInfo.setSubsidy(teacherSalary.getSubsidy());
-                teacherIncomeInfo.setActualSalary(teacherSalary.getActualSalary());
+                teacherIncomeInfo.setSubsidy(Objects.nonNull(oldSalary)?oldSubsidy:teacherSalary.getSubsidy());
+                teacherIncomeInfo.setActualSalary(Objects.nonNull(oldSalary)?oldSalary:teacherSalary.getActualSalary());
+                //如果是已结算课程,则需要处理扣减原因
+                if(Objects.nonNull(oldSalary)){
+                    //判断课程是否在试用期内
+                    boolean trail = StringUtils.isBlank(teacherSalary.getDeductionReason())||teacherSalary.getDeductionReason().indexOf("未转正")!=-1;
+
+                    //如果上课日期在试用期内按80%结算
+                    if(trail){
+                        long trailReasonNum = teacherSalary.getDeductReasons().stream().filter(p -> DeductReasonEnum.TRAIL.equals(p.getDeductReason())).count();
+                        if(trailReasonNum<=0){
+                            teacherSalary.getDeductReasons().add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.TRAIL, oldSalary.subtract(oldSalary.multiply(new BigDecimal("0.8")))));
+                        }
+                    }else{
+                        teacherSalary.setDeductReasons(teacherSalary.getDeductReasons().stream().filter(p->!DeductReasonEnum.TRAIL.equals(p.getDeductReason())).collect(Collectors.toList()));
+                    }
+                }
                 teacherIncomeInfo.setDeductReasons(teacherSalary.getDeductReasons());
                 teacherIncomeInfo.setTeacherAttendance(teacherAttendances.get(0));
                 teacherIncomeInfo.setBelongToDaya(teacherSalary.getBelongToDaya());