|
@@ -402,7 +402,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
|
|
|
|
|
|
//教师对应的每个教学点的总课时
|
|
|
- Map<Integer, Map<Integer, Integer>> teacherClassMinutesMap = new HashMap<>();
|
|
|
+ Map<Integer, Map<Integer, Map<Date, Integer>>> teacherClassMinutesMap = new HashMap<>();
|
|
|
//计算老师对应的总课时
|
|
|
teacherSalarysByTeacher.forEach((teacherId, teacherSalarys) -> {
|
|
|
//当前老师所在课程的编号列表
|
|
@@ -416,19 +416,26 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
//根据教学点将当前老师的课程分组
|
|
|
Map<Integer, List<CourseSchedule>> schoolCourseSchedules = currentTeacherCourseSchedules.stream()
|
|
|
.collect(Collectors.groupingBy(CourseSchedule::getSchoolId));
|
|
|
- Map<Integer, Integer> schoolClassMinutesMap = new HashMap<>();
|
|
|
+ Map<Integer, Map<Date,Integer>> schoolClassMinutesMap = new HashMap<>();
|
|
|
for (Integer schoolId : schoolCourseSchedules.keySet()) {
|
|
|
- Integer classMinutes = 0;
|
|
|
//当前教学点的课程
|
|
|
List<CourseSchedule> currentSchoolCourseSchedules = schoolCourseSchedules.get(schoolId);
|
|
|
- for (CourseSchedule courseSchedule : currentSchoolCourseSchedules) {
|
|
|
- //如果课程为单机课或者为合奏课,则算入总课时长
|
|
|
- if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE)
|
|
|
- || courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX)) {
|
|
|
- classMinutes += DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
|
|
|
+ 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, classMinutes);
|
|
|
+ schoolClassMinutesMap.put(schoolId, dataClassMinutesMpa);
|
|
|
}
|
|
|
teacherClassMinutesMap.put(teacherId, schoolClassMinutesMap);
|
|
|
});
|
|
@@ -444,8 +451,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
boolean durationIsChange = false;
|
|
|
//当前课酬对应的课程信息
|
|
|
CourseSchedule courseSchedule = courseScheduleIdMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
|
- Map<Integer, Integer> schoolClassMinutesMap = teacherClassMinutesMap.get(courseScheduleTeacherSalary.getUserId());
|
|
|
- Integer schoolClassMinutes = schoolClassMinutesMap.get(courseSchedule.getSchoolId());
|
|
|
+ Map<Integer, Map<Date,Integer>> schoolClassMinutesMap = teacherClassMinutesMap.get(courseScheduleTeacherSalary.getUserId());
|
|
|
+ Map<Date,Integer> classDateMinutes = schoolClassMinutesMap.get(courseSchedule.getSchoolId());
|
|
|
+ Integer schoolClassMinutes = classDateMinutes.get(courseSchedule.getClassDate());
|
|
|
//结算方式
|
|
|
String settlementType = musicGroupSettlementsMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
|
|
|
if(StringUtils.isEmpty(settlementType)){
|
|
@@ -586,18 +594,21 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
||Objects.isNull(classGroupTeacherSalary)){
|
|
|
TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(),
|
|
|
vipGroup.getVipGroupCategoryId());
|
|
|
- VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
|
|
|
if(Objects.isNull(teacherDefaultVipGroupSalary)){
|
|
|
throw new BizException("请设置课酬");
|
|
|
}
|
|
|
onlineTeacherSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
|
|
|
offlineTeacherSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- oldStudentNum = vipGroupCategory.getStudentNum();
|
|
|
}else{
|
|
|
onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
|
|
|
offlineTeacherSalary=classGroupTeacherSalary.getSalary();
|
|
|
}
|
|
|
|
|
|
+ if(oldStudentNum==0){
|
|
|
+ VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
|
|
|
+ oldStudentNum = vipGroupCategory.getStudentNum();
|
|
|
+ }
|
|
|
+
|
|
|
if(Objects.isNull(classGroupTeacherSalary)){
|
|
|
ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(vipGroupId.toString(), GroupType.VIP.getCode());
|
|
|
classGroupTeacherSalary=new ClassGroupTeacherSalary();
|
|
@@ -615,7 +626,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
|
|
|
if(Objects.nonNull(onlineTeacherSalary)){
|
|
|
onlineTeacherSalary = onlineTeacherSalary
|
|
|
.divide(oldStudentNumDecimal, CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN)
|
|
|
- .multiply(studentNumDecimal).setScale(0);
|
|
|
+ .multiply(studentNumDecimal).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
if(Objects.nonNull(offlineTeacherSalary)){
|
|
|
offlineTeacherSalary = offlineTeacherSalary
|