Pārlūkot izejas kodu

线上基础技能课与乐团网管课课酬结算规则调整

Joburgess 5 gadi atpakaļ
vecāks
revīzija
85226422dd

+ 4 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -2745,16 +2745,15 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						}
 
 						//线上小班课
-						if(newCourseSchedule.getType() == CourseScheduleType.HIGH_ONLINE){
+						if(newCourseSchedule.getType() == CourseScheduleType.HIGH_ONLINE || newCourseSchedule.getType() == CourseScheduleType.MUSIC_NETWORK){
 							Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(ts.getClassGroupId());
 							BigDecimal salary = JSON.parseObject(tdms.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+							if(Objects.isNull(salary)){
+								throw new BizException("请设置老师默认课酬");
+							}
 							ts.setExpectSalary(salary);
 						}
 
-						if (newCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) {
-							ts.setExpectSalary(JSON.parseObject(tdms.getSalaryRuleJson()).getBigDecimal("1"));
-						}
-
 					} else if (newCourseSchedule.getGroupType() == GroupType.VIP) {
 						Map<String, BigDecimal> salaryMap = vipGroupService.countVipGroupPredictFee(vipGroup, teacherId, null, null);
 

+ 30 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -90,7 +90,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
 
     //按节数计算课酬的课程类型
-    protected static final Set<CourseSchedule.CourseScheduleType> UNIT_PRICE_COURSE_TYPES=new HashSet<>(Arrays.asList(CourseSchedule.CourseScheduleType.CLASSROOM, CourseSchedule.CourseScheduleType.HIGH, CourseSchedule.CourseScheduleType.HIGH_ONLINE));
+    protected static final Set<CourseSchedule.CourseScheduleType> UNIT_PRICE_COURSE_TYPES=new HashSet<>(Arrays.asList(CourseSchedule.CourseScheduleType.CLASSROOM, CourseSchedule.CourseScheduleType.HIGH, CourseSchedule.CourseScheduleType.HIGH_ONLINE, CourseSchedule.CourseScheduleType.MUSIC_NETWORK));
 
     @Override
     public BaseDAO<Long, CourseScheduleTeacherSalary> getDAO() {
@@ -516,6 +516,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         if (CollectionUtils.isEmpty(courseScheduleIds)) {
             return;
         }
+
         //获取课程对应教学点补贴
         List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds);
         Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses);
@@ -531,6 +532,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             return;
         }
 
+        //需要根据实际上课学员结算课酬的课程编号
+        List<Long> needStudentAttendanceCourseScheduleIds = yesterdayCourseSchedules.stream()
+                .filter(c -> CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(c.getType()) || CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(c.getType()))
+                .map(CourseSchedule::getId).collect(Collectors.toList());
+
+        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(needStudentAttendanceCourseScheduleIds);
+        Map<Long, Long> courseNormalStudentsMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(studentAttendances)){
+            courseNormalStudentsMap =studentAttendances.stream()
+                    .filter(studentAttendance -> StudentAttendanceStatusEnum.NORMAL.equals(studentAttendance.getStatus()))
+                    .collect(Collectors.groupingBy(StudentAttendance::getId, Collectors.counting()));
+        }
+
         //课程对应乐团结算方式集合
         List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
         Map<String, String> musicGroupSettlementsMap = MapUtil.convertMybatisMap(musicGroupSettlementTypeByCourse);
@@ -596,7 +610,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         //用户账户自己变动信息列表
 //        List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
         //计算课酬
-        courseScheduleTeacherSalaries.forEach(courseScheduleTeacherSalary -> {
+        for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
             /*TeacherAttendance teacherAttendanceInfo = teacherAttendanceDao.findByTeacherAttendanceInfo(courseScheduleTeacherSalary.getUserId().longValue(), courseScheduleTeacherSalary.getCourseScheduleId());
             if(Objects.isNull(teacherAttendanceInfo)
                 ||(Objects.isNull(teacherAttendanceInfo.getSignInTime())&&Objects.isNull(teacherAttendanceInfo.getSignOutTime()))){
@@ -680,6 +694,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     }
                     teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
                 }
+                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)){
+                        normalStudentNum = Long.valueOf(0);
+                    }
+                    if(Objects.nonNull(teacherDefaultMusicGroupSalaryWithTeacherId)){
+                        JSONObject salaryRuleJsonObject = JSONObject.parseObject(teacherDefaultMusicGroupSalaryWithTeacherId.getSalaryRuleJson());
+                        teacherSalary = salaryRuleJsonObject.getBigDecimal(normalStudentNum.toString());
+                    }
+                    if(Objects.isNull(teacherSalary)){
+                        teacherSalary = BigDecimal.ZERO;
+                    }
+                }
             }else{
                 teacherSalary=courseScheduleTeacherSalary.getTeacherActualSalary();
             }
@@ -706,7 +733,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 //            teacherCashAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
 //            userCashAccountDetails.add(teacherCashAccountDetail);
 
-        });
+        }
 //        sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);
     }