Browse Source

feat:乐团改造

Joburgess 4 years ago
parent
commit
1e7989b3e9

+ 1 - 121
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -511,9 +511,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         Date date = DateUtil.addMonths(now, -1);
         String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
         String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
-        Integer settlementClassMinutes = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.MUSIC_GROUP_SETTLEMENT_CLASS_MINUTES).getParanValue());
-        Integer singleClassTime = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.MUSIC_GROUP_SETTLEMENT_SINGLE_CLASS_MINUTES).getParanValue());
-        Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(),"yyyy-MM-dd");
+
         //获取上个月的课程计划
         List<CourseSchedule> yesterdayCourseSchedules = courseScheduleDao.findCourseScheduleWithDate(startDate,endDate);
         //课程编号列表
@@ -560,100 +558,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     .collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId, Collectors.counting()));
         }
 
-        //课程对应乐团结算方式集合
-        List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
-        Map<String, String> musicGroupSettlementsMap = MapUtil.convertMybatisMap(musicGroupSettlementTypeByCourse);
-
-        //教师对应课程列表集合
-        Map<Integer, List<CourseScheduleTeacherSalary>> teacherSalarysByTeacher = courseScheduleTeacherSalaries.stream()
-                .collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getUserId));
-
         //所有老师编号
         List<Integer> allTeacherIds = courseScheduleTeacherSalaries.stream()
                 .map(CourseScheduleTeacherSalary::getUserId)
                 .collect(Collectors.toList());
 
-        //所有教师列表
-        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
-        Map<Integer, Teacher> teacherMap = teachers.stream()
-                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
-
         //所有老师默认乐团课酬
         List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
         Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType));
 
-
-        //教师对应的每个教学点的总课时
-        Map<Integer, Map<Integer, Map<Date, Integer>>> teacherClassMinutesMap = new HashMap<>();
-        //计算老师对应的总课时
-        teacherSalarysByTeacher.forEach((teacherId, teacherSalarys) -> {
-            //当前老师所在课程的编号列表
-            List<Long> currentTeacherCourscheduleIds = teacherSalarys.stream()
-                    .map(CourseScheduleTeacherSalary::getCourseScheduleId)
-                    .collect(Collectors.toList());
-            //当前老师的课程列表
-            List<CourseSchedule> currentTeacherCourseSchedules = yesterdayCourseSchedules.stream()
-                    .filter(courseSchedule -> currentTeacherCourscheduleIds.contains(courseSchedule.getId()))
-                    .collect(Collectors.toList());
-            //根据教学点将当前老师的课程分组
-            Map<Integer, List<CourseSchedule>> schoolCourseSchedules = currentTeacherCourseSchedules.stream()
-                    .filter(courseSchedule -> Objects.nonNull(courseSchedule.getSchoolId()))
-                    .collect(Collectors.groupingBy(CourseSchedule::getSchoolId));
-            Map<Integer, Map<Date,Integer>> schoolClassMinutesMap = new HashMap<>();
-            for (Integer schoolId : schoolCourseSchedules.keySet()) {
-                //当前教学点的课程
-                List<CourseSchedule> currentSchoolCourseSchedules = schoolCourseSchedules.get(schoolId);
-                Map<Date, List<CourseSchedule>> courseScheduleWithDate = currentSchoolCourseSchedules.stream()
-                        .collect(Collectors.groupingBy(CourseSchedule::getClassDate));
-                Map<Date,Integer> dataClassMinutesMpa = new HashMap<>();
-                for (Date classDate:courseScheduleWithDate.keySet()){
-                    Integer classMinutes = 0;
-                    List<CourseSchedule> classCourses = courseScheduleWithDate.get(classDate);
-                    for (CourseSchedule courseSchedule : classCourses) {
-                        //如果课程为单机课或者为合奏课,则算入总课时长
-                        if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE)
-                                || courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX)) {
-                            classMinutes += DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
-                        }
-                    }
-                    dataClassMinutesMpa.put(classDate, classMinutes);
-                }
-                schoolClassMinutesMap.put(schoolId, dataClassMinutesMpa);
-            }
-            teacherClassMinutesMap.put(teacherId, schoolClassMinutesMap);
-        });
         //计算课酬
         for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
-            boolean durationIsChange = false;
             //当前课酬对应的课程信息
             CourseSchedule courseSchedule = courseScheduleIdMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
-            Map<Integer, Map<Date,Integer>> schoolClassMinutesMap = teacherClassMinutesMap.get(courseScheduleTeacherSalary.getUserId());
-            Map<Date,Integer> classDateMinutes = schoolClassMinutesMap.get(courseSchedule.getSchoolId());
-
-            //结算方式
-            String settlementType = musicGroupSettlementsMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
-            if(StringUtils.isEmpty(settlementType)){
-                LOGGER.error("未指定课酬结算方式[{}]", courseScheduleTeacherSalary.getId());
-            }
-            Teacher teacher=teacherMap.get(courseScheduleTeacherSalary.getUserId());
-            //如果当前教师是在指定日期之后入职的,则按照3.0的方式结算
-            if(Objects.nonNull(teacher.getEntryDate())
-                    &&(teacher.getEntryDate().after(entryDate)||teacher.getEntryDate().getTime()==entryDate.getTime())){
-                settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY.getCode();
-            }
-
-            //当前课程的时长
-            int duration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
-            //如果是单技课或者合奏课并且结算方式为3.0
-            if (Objects.nonNull(classDateMinutes)&&settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY.getCode())
-                    &&(courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE)
-                    || courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX))) {
-                Integer schoolClassMinutes = classDateMinutes.get(courseSchedule.getClassDate());
-                if (schoolClassMinutes >= settlementClassMinutes && duration < singleClassTime) {
-                    duration = singleClassTime;
-                    durationIsChange = true;
-                }
-            }
 
             if(CourseSchedule.CourseScheduleType.HIGH.equals(courseSchedule.getType())){
                 courseSchedule.setType(CourseSchedule.CourseScheduleType.HIGH_ONLINE);
@@ -688,43 +605,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 if(Objects.isNull(teacherSalary)){
                     teacherSalary = BigDecimal.ZERO;
                 }
-            }else if(durationIsChange&&!UNIT_PRICE_COURSE_TYPES.contains(courseSchedule.getType())){
-                //根据课程类型获取对应的默认课酬设置列表
-                List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithCourseType = teacherDefaultMusicGroupSalariesGroupByCourseType.get(courseSchedule.getType());
-                if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithCourseType)) {
-                    LOGGER.error("存在未指定结算方式的课程类型[{}]", courseScheduleTeacherSalary.getId());
-                }
-
-                //根据教师编号将对应结算方式下的默认课酬设置分组
-                Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
-
-                TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseScheduleTeacherSalary.getUserId());
-
-                //课程时长与结算单位时长占比
-                BigDecimal classTimeDuty = new BigDecimal(duration);
-                BigDecimal teacherDefaultSalary = new BigDecimal(0);
-
-                //如果结算方式是教师默认课酬
-                if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT.getCode())) {
-                    classTimeDuty = classTimeDuty.divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                    if(Objects.nonNull(teacherDefaultMusicGroupSalaryWithTeacherId)){
-                        teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
-                    }
-                } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY.getCode())) {
-                    classTimeDuty = classTimeDuty.divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                    if(Objects.nonNull(teacherDefaultMusicGroupSalaryWithTeacherId)){
-                        teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
-                    }
-                }
-
-                if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
-                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                } else if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)) {
-                    teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
-                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(40), BigDecimal.ZERO.intValue(), BigDecimal.ROUND_DOWN);
-                }
-
-                teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
             }else{
                 teacherSalary=courseScheduleTeacherSalary.getExpectSalary();
             }