Jelajahi Sumber

临时班级加入im群组

周箭河 6 tahun lalu
induk
melakukan
233e60b563

+ 17 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
@@ -15,7 +16,9 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -54,9 +57,9 @@ public class CourseSchedule {
 
 	/**  */
 	private Long id;
-	
+
 	private GroupType groupType;
-	
+
 	/**  */
 	@ApiModelProperty(value = "乐团编号",required = false)
 	private String musicGroupId;
@@ -357,6 +360,18 @@ public class CourseSchedule {
 		this.teacher = teacher;
 	}
 
+
+	public static CourseScheduleType getCourseScheduleTypeByCode(String code) {
+		CourseScheduleType type = null;
+		for (CourseScheduleType courseScheduleType : CourseScheduleType.values()) {
+			if(courseScheduleType.getCode().equals(code)){
+				type = courseScheduleType;
+				break;
+			}
+		}
+		return type;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -481,6 +481,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     teacherDefaultMusicGroupSalary.setMainTeacher90MinSalary(zeroSalary);
                     teacherDefaultMusicGroupSalary.setAssistantTeacher90MinSalary(zeroSalary);
                     teacherDefaultMusicGroupSalary.setUserId(classGroupTeacherMapper.getUserId());
+                    teacherDefaultMusicGroupSalary.setCourseScheduleType(CourseSchedule.getCourseScheduleTypeByCode(courseType));
                     teacherSalaryByUserIdAndType.add(teacherDefaultMusicGroupSalary);
                 }
                 classGroupTeacherMapper.setTeacherDefaultMusicGroupSalaryList(teacherSalaryByUserIdAndType);

+ 39 - 40
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -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 计算教师课酬