|
@@ -3,15 +3,20 @@ package com.ym.mec.biz.service.impl;
|
|
|
import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
|
|
|
import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
|
|
|
import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
|
|
|
+import com.ym.mec.biz.dal.dto.ClassGroupTeachersDto;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
|
|
|
import com.ym.mec.biz.dal.enums.TeachTypeEnum;
|
|
|
+import com.ym.mec.biz.service.ClassGroupService;
|
|
|
import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
|
|
|
import com.ym.mec.biz.service.CourseScheduleService;
|
|
|
import com.ym.mec.biz.service.SysConfigService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
+import com.ym.mec.common.entity.ImGroupMember;
|
|
|
+import com.ym.mec.common.entity.ImGroupModel;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
+import com.ym.mec.im.ImFeignService;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
@@ -37,6 +42,10 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
|
|
|
@Autowired
|
|
|
private SysConfigService sysConfigService;
|
|
|
+ @Autowired
|
|
|
+ private ImFeignService imFeignService;
|
|
|
+ @Autowired
|
|
|
+ private ClassGroupService classGroupService;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, ClassGroupTeacherMapper> getDAO() {
|
|
@@ -48,13 +57,34 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
public int classGroupTeachersInsert(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
|
|
|
//删除班级已经设置的老师
|
|
|
classGroupTeacherMapperDao.delMusicGroupTeacherMapper(classGroupTeacherMapperList);
|
|
|
+
|
|
|
+ //老师加入群组
|
|
|
+ List<ImGroupMember> imGroupMemberList = new ArrayList<>();
|
|
|
+ String classGroupIds = "";
|
|
|
+ for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
+ classGroupIds += classGroupTeacherMapper.getClassGroupId() + ",";
|
|
|
+ }
|
|
|
+ classGroupIds = classGroupIds.substring(0, classGroupIds.length() - 1);
|
|
|
+ List<ClassGroup> classGroups = classGroupService.findClassGroupByIds(classGroupIds);
|
|
|
+
|
|
|
+ for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
|
|
|
+ for (ClassGroup classGroup : classGroups) {
|
|
|
+ if (!classGroup.getId().equals(classGroupTeacherMapper.getClassGroupId())) continue;
|
|
|
+ imGroupMemberList.add(new ImGroupMember(classGroupTeacherMapper.getUserId().toString()));
|
|
|
+ ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
|
|
|
+ // 加入群组
|
|
|
+ imFeignService.groupJoin(new ImGroupModel(classGroupTeacherMapper.getClassGroupId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
|
|
|
}
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public List<ClassGroupTeacherMapper> findClassGroupTeachers(List ClassGroupList) {
|
|
|
- return classGroupTeacherMapperDao.findClassGroupTeachers(ClassGroupList);
|
|
|
+ public List<ClassGroupTeacherMapper> findClassGroupTeachers(List<ClassGroupTeachersDto> ClassGroupList) {
|
|
|
+ Set<Integer> collect = ClassGroupList.stream().map(ClassGroupTeachersDto::getId).collect(Collectors.toSet());
|
|
|
+ return classGroupTeacherMapperDao.findClassGroupTeachers(StringUtils.join(collect, ","));
|
|
|
}
|
|
|
|
|
|
public boolean classGroupTeacherMapperUpdate(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception {
|
|
@@ -116,18 +146,18 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
public void createCourseScheduleTeacherSalary(List<CourseSchedule> courseSchedules) {
|
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
|
|
|
- BigDecimal teacherSalaryTimeUnit=new BigDecimal(sysConfigService.findByParamName(SysConfigService.TEACHER_SALARY_TIME_UNIT).getParanValue());
|
|
|
+ BigDecimal teacherSalaryTimeUnit = new BigDecimal(sysConfigService.findByParamName(SysConfigService.TEACHER_SALARY_TIME_UNIT).getParanValue());
|
|
|
|
|
|
//课程编号列表
|
|
|
List<Long> courseScheduleIds = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
|
|
|
//主教老师列表
|
|
|
List<Integer> allTeacherIds = courseSchedules.stream().map(courseSchedule -> courseSchedule.getActualTeacherId().intValue()).collect(Collectors.toList());
|
|
|
//助教老师列表
|
|
|
- List<Integer> teachingTeacherIds=new ArrayList<>();
|
|
|
+ List<Integer> teachingTeacherIds = new ArrayList<>();
|
|
|
courseSchedules.forEach(courseSchedule -> teachingTeacherIds.addAll(courseSchedule.getTeachingTeacherIdList()));
|
|
|
allTeacherIds.addAll(teachingTeacherIds);
|
|
|
//所有老师列表
|
|
|
- allTeacherIds=allTeacherIds.stream().distinct().collect(Collectors.toList());
|
|
|
+ allTeacherIds = allTeacherIds.stream().distinct().collect(Collectors.toList());
|
|
|
|
|
|
//所有老师默认乐团课酬
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
|
|
@@ -135,35 +165,35 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
|
|
|
//获取课程对应教学点补贴
|
|
|
List<Map<Integer, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds);
|
|
|
- Map<Integer,BigDecimal> courseSubsidyMap= MapUtil.convertMybatisMap(courseSubsidyByCourses);
|
|
|
+ Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertMybatisMap(courseSubsidyByCourses);
|
|
|
|
|
|
//课程对应乐团结算方式集合
|
|
|
List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
|
|
|
Map<String, String> musicGroupSettlementsMap = MapUtil.convertMybatisMap(musicGroupSettlementTypeByCourse);
|
|
|
|
|
|
courseSchedules.forEach(courseSchedule -> {
|
|
|
- if(Objects.isNull(courseSchedule.getType())){
|
|
|
+ if (Objects.isNull(courseSchedule.getType())) {
|
|
|
throw new BizException("存在未指定课程类型的课程");
|
|
|
}
|
|
|
|
|
|
//获取结算方式
|
|
|
String settlementType = musicGroupSettlementsMap.get(courseSchedule.getId());
|
|
|
- if(StringUtils.isBlank(settlementType)){
|
|
|
+ if (StringUtils.isBlank(settlementType)) {
|
|
|
throw new BizException("存在未指定结算方式的课程");
|
|
|
}
|
|
|
|
|
|
//根据课程类型获取对应的默认课酬设置列表
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithCourseType = teacherDefaultMusicGroupSalariesGroupByCourseType.get(courseSchedule.getType());
|
|
|
- if(CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithCourseType)){
|
|
|
+ if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithCourseType)) {
|
|
|
throw new BizException("存在未指定结算方式的课程类型");
|
|
|
}
|
|
|
|
|
|
//根据结算方式将对应课程类型下的默认课酬设置列表分组
|
|
|
- Map<String, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalaryGroupBySettlementType = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.groupingBy(teacherDefaultMusicGroupSalary->teacherDefaultMusicGroupSalary.getSettlementType().getCode()));
|
|
|
+ Map<String, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalaryGroupBySettlementType = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.groupingBy(teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary.getSettlementType().getCode()));
|
|
|
|
|
|
//获取对应结算方式下的默认课酬设置列表
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithSettlementType = teacherDefaultMusicGroupSalaryGroupBySettlementType.get(settlementType);
|
|
|
- if(CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithSettlementType)){
|
|
|
+ if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithSettlementType)) {
|
|
|
throw new BizException("未找到结算方式对应的默认课酬");
|
|
|
}
|
|
|
|
|
@@ -174,9 +204,9 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
int duration = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), courseSchedule.getStartClassTime());
|
|
|
|
|
|
//课程时长与结算单位时长占比
|
|
|
- BigDecimal classTimeDuty=new BigDecimal(duration).divide(teacherSalaryTimeUnit);
|
|
|
+ BigDecimal classTimeDuty = new BigDecimal(duration).divide(teacherSalaryTimeUnit);
|
|
|
|
|
|
- if(!courseSchedule.isBishopTeacherSalaryNotCreate()){
|
|
|
+ if (!courseSchedule.isBishopTeacherSalaryNotCreate()) {
|
|
|
//根据课程获取主教的默认课酬设置列表
|
|
|
List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseSchedule.getActualTeacherId());
|
|
|
courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
|
|
@@ -193,10 +223,10 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
//计算助教课程薪酬
|
|
|
//助教编号列表
|
|
|
List<Integer> teachingTeacherIdList = courseSchedule.getTeachingTeacherIdList();
|
|
|
- if(CollectionUtils.isEmpty(teachingTeacherIdList)){
|
|
|
+ if (CollectionUtils.isEmpty(teachingTeacherIdList)) {
|
|
|
return;
|
|
|
}
|
|
|
- teachingTeacherIdList.forEach(teacherId->{
|
|
|
+ teachingTeacherIdList.forEach(teacherId -> {
|
|
|
List<TeacherDefaultMusicGroupSalary> teachingTeacherDefaultMusicGroupSalariesWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(teacherId);
|
|
|
courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
|
|
|
courseSchedule,
|
|
@@ -213,9 +243,6 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @describe 计算教师课酬
|
|
|
- * @author Joburgess
|
|
|
- * @date 2019/10/24
|
|
|
* @param courseSchedule:
|
|
|
* @param teachType:
|
|
|
* @param settlementType:
|
|
@@ -225,6 +252,9 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
* @param teacherId:
|
|
|
* @param teacherDefaultMusicGroupSalariesWithTeacherId:
|
|
|
* @return com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary
|
|
|
+ * @describe 计算教师课酬
|
|
|
+ * @author Joburgess
|
|
|
+ * @date 2019/10/24
|
|
|
*/
|
|
|
private CourseScheduleTeacherSalary countMusicGroupTeacherSalary(CourseSchedule courseSchedule,
|
|
|
TeachTypeEnum teachType,
|
|
@@ -233,25 +263,25 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
|
|
|
BigDecimal subsidy,
|
|
|
int duration,
|
|
|
Integer teacherId,
|
|
|
- List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithTeacherId){
|
|
|
- if(CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithTeacherId)){
|
|
|
+ List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithTeacherId) {
|
|
|
+ if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithTeacherId)) {
|
|
|
throw new BizException("存在未设置默认课酬的教师");
|
|
|
}
|
|
|
//教师课酬
|
|
|
- BigDecimal teacherSalary=new BigDecimal(0);
|
|
|
+ BigDecimal teacherSalary = new BigDecimal(0);
|
|
|
|
|
|
//如果结算方式是教师默认课酬
|
|
|
- if(settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)){
|
|
|
+ if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
|
|
|
TeacherDefaultMusicGroupSalary bishopTeacherDefaultMusicGroupSalary = teacherDefaultMusicGroupSalariesWithTeacherId.get(0);
|
|
|
- if(Objects.isNull(bishopTeacherDefaultMusicGroupSalary)){
|
|
|
+ if (Objects.isNull(bishopTeacherDefaultMusicGroupSalary)) {
|
|
|
throw new BizException("存在未设置默认课酬的教师");
|
|
|
}
|
|
|
- BigDecimal bishopTeacherDefaultSalary = teachType==TeachTypeEnum.BISHOP?bishopTeacherDefaultMusicGroupSalary.getMainTeacherSalary():bishopTeacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
|
|
|
- teacherSalary=bishopTeacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }else if(settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)){
|
|
|
+ BigDecimal bishopTeacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? bishopTeacherDefaultMusicGroupSalary.getMainTeacherSalary() : bishopTeacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
|
|
|
+ teacherSalary = bishopTeacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
|
|
|
for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherDefaultMusicGroupSalariesWithTeacherId) {
|
|
|
- if(duration >= teacherDefaultMusicGroupSalary.getDurationMin() && duration <= teacherDefaultMusicGroupSalary.getDurationMin()){
|
|
|
- teacherSalary=teachType==TeachTypeEnum.BISHOP?teacherDefaultMusicGroupSalary.getMainTeacherSalary():teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
|
|
|
+ if (duration >= teacherDefaultMusicGroupSalary.getDurationMin() && duration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
|
|
|
+ teacherSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
|
|
|
break;
|
|
|
}
|
|
|
}
|