|
|
@@ -1,12 +1,7 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
@@ -91,7 +86,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
if (!classGroup.getId().equals(classGroupTeacherMapper.getClassGroupId())) continue;
|
|
|
imGroupMemberList.add(new ImGroupMember(classGroupTeacherMapper.getUserId().toString()));
|
|
|
}
|
|
|
- if(imGroupMemberList.size()>0) {
|
|
|
+ if (imGroupMemberList.size() > 0) {
|
|
|
ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
|
|
|
imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
}
|
|
|
@@ -119,35 +114,30 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
public boolean classGroupTeacherMapperUpdate(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception {
|
|
|
Date date = new Date();
|
|
|
|
|
|
- List<Integer> teacherUserIds = classGroupTeacherMapperList.stream().map(teacher -> teacher.getUserId()).collect(Collectors.toList());
|
|
|
- List<TeacherDefaultMusicGroupSalary> byTeacher = teacherDefaultMusicGroupSalaryDao.findByTeacher(teacherUserIds);
|
|
|
+ List<CourseSchedule> classGroupNoStartCourseSchedules = courseScheduleService.findClassGroupNoStartCourseSchedules(classGroupTeacherMapperList);
|
|
|
+ if (classGroupNoStartCourseSchedules == null || classGroupNoStartCourseSchedules.size() == 0) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
- List<ClassGroupTeacherSalary> classGroupTeacherSalaryList = new ArrayList<>();
|
|
|
+ //老师默认的课酬
|
|
|
+ List<Integer> teacherUserIds = classGroupTeacherMapperList.stream().map(teacher -> teacher.getUserId()).collect(Collectors.toList());
|
|
|
+ List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryDao.findByTeacher(teacherUserIds);
|
|
|
+ Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
|
|
|
+ if (teacherSalaryList.size() > 0) {
|
|
|
+ teacherDefaultSalary = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
+ }
|
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
-
|
|
|
String musicGroupId = classGroupTeacherMapperList.get(0).getMusicGroupId();
|
|
|
MusicGroup musicGroup = musicGroupService.get(musicGroupId);
|
|
|
|
|
|
- List<CourseSchedule> classGroupNoStartCourseSchedules = courseScheduleService.findClassGroupNoStartCourseSchedules(classGroupTeacherMapperList);
|
|
|
-
|
|
|
- if(classGroupNoStartCourseSchedules == null || classGroupNoStartCourseSchedules.size()==0){
|
|
|
- return true;
|
|
|
- }
|
|
|
- //删除未开始的课程老师课酬
|
|
|
+ //删除未开始的课程老师课酬,和签到
|
|
|
List<Long> courseScheduleIds = classGroupNoStartCourseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
|
|
|
courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
|
|
|
teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
|
|
|
|
|
|
for (CourseSchedule classGroupNoStartCourseSchedule : classGroupNoStartCourseSchedules) {
|
|
|
-
|
|
|
- if (!classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE) &&
|
|
|
- !classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX) &&
|
|
|
- !classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)
|
|
|
- ) {
|
|
|
- continue;
|
|
|
- }
|
|
|
//课时长度
|
|
|
- int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(),classGroupNoStartCourseSchedule.getEndClassTime());
|
|
|
+ int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(), classGroupNoStartCourseSchedule.getEndClassTime());
|
|
|
for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
if (!classGroupTeacherMapper.getClassGroupId().equals(classGroupNoStartCourseSchedule.getClassGroupId())) {
|
|
|
continue;
|
|
|
@@ -157,26 +147,35 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
|
|
|
Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherDefaultMusicGroupSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
|
|
|
- TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroupNoStartCourseSchedule.getType());
|
|
|
- if (teacherDefaultMusicGroupSalary == null) {
|
|
|
- throw new BizException("请先设置老师课酬");
|
|
|
- }
|
|
|
+ TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroupNoStartCourseSchedule.getType());
|
|
|
+ if (teacherDefaultMusicGroupSalary == null) {
|
|
|
+ teacherDefaultMusicGroupSalary = teacherDefaultSalary.get(classGroupNoStartCourseSchedule.getType());
|
|
|
+ }
|
|
|
+ if (teacherDefaultMusicGroupSalary == null) {
|
|
|
+ throw new BizException("请先设置老师课酬");
|
|
|
+ }
|
|
|
|
|
|
//对应基准课酬
|
|
|
- BigDecimal baseSalary = new BigDecimal(0),classTimeDuty=new BigDecimal(0);
|
|
|
+ BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
|
|
|
|
|
|
- //基准课酬
|
|
|
+ //2.0课酬
|
|
|
if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
//课程时长与结算单位时长占比
|
|
|
- classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30),6,BigDecimal.ROUND_HALF_UP);
|
|
|
+ classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30), 6, BigDecimal.ROUND_HALF_UP);
|
|
|
baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
}
|
|
|
- //阶梯课酬
|
|
|
+ //3.0课酬
|
|
|
if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
//课程时长与结算单位时长占比
|
|
|
- classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90),6,BigDecimal.ROUND_HALF_UP);
|
|
|
+ classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), 6, BigDecimal.ROUND_HALF_UP);
|
|
|
baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
|
|
|
}
|
|
|
+ //课堂课课酬
|
|
|
+ if (musicGroup.isClassroomLessons()) {
|
|
|
+ //课程时长与结算单位时长占比
|
|
|
+ classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(40), 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
|
|
|
+ }
|
|
|
salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
//课程与老师薪水表
|
|
|
@@ -245,7 +244,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
}
|
|
|
|
|
|
//根据教师编号将对应结算方式下的默认课酬设置分组
|
|
|
- Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId,teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
+ Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
|
|
|
|
|
|
if (!courseSchedule.isBishopTeacherSalaryNotCreate()) {
|
|
|
//根据课程获取主教的默认课酬设置列表
|
|
|
@@ -280,11 +279,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param courseSchedule: 课程信息
|
|
|
- * @param teachType: 教师类型
|
|
|
- * @param settlementType: 结算方式
|
|
|
- * @param subsidy: 补贴
|
|
|
- * @param teacherId: 教师编号
|
|
|
+ * @param courseSchedule: 课程信息
|
|
|
+ * @param teachType: 教师类型
|
|
|
+ * @param settlementType: 结算方式
|
|
|
+ * @param subsidy: 补贴
|
|
|
+ * @param teacherId: 教师编号
|
|
|
* @param teacherDefaultMusicGroupSalaryWithTeacherId: 教师课酬
|
|
|
* @return com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary
|
|
|
* @describe 计算教师课酬
|