| 
					
				 | 
			
			
				@@ -1,5 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.biz.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dto.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -18,10 +19,8 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.collection.MapUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.poi.util.StringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.context.annotation.Lazy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -31,6 +30,8 @@ import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.util.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.Duration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.LocalDateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -86,6 +87,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SysMessageService sysMessageService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private TeacherCourseRewardDao teacherCourseRewardDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private MusicGroupDao musicGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private TeacherDefaultPracticeGroupSalaryDao teacherDefaultPracticeGroupSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static final Logger LOGGER = LoggerFactory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1096,4 +1101,182 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         teacherSalaryComplaintsDao.updateComplaintStatusTuDoneWithMonth(month); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         teacherCourseRewardDao.updateTeacherRewardConfirmStatusWithMonth(month, null, TeacherSalaryConfirmStatus.COMPLETED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<CourseScheduleTeacherSalary> createTeacherCourseSalary(CourseSchedule courseSchedule, List<Integer> teacherIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(Objects.isNull(courseSchedule.getType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("请指定课程类型"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (Integer teacherId : teacherIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setClassGroupId(courseSchedule.getClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(teacherId.equals(courseSchedule.getActualTeacherId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.TEACHING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setUserId(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setCreateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setUpdateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        switch (courseSchedule.getGroupType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case MUSIC: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //生成乐团课课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                createMusicGroupCourseTeacherSalary(courseSchedule, courseScheduleTeacherSalaries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case VIP: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //生成vip课课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                createVipGroupCourseTeacherSalary(courseSchedule, courseScheduleTeacherSalaries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case PRACTICE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //生成网管课课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                createPracticeGroupCourseTeacherSalary(courseSchedule, courseScheduleTeacherSalaries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return courseScheduleTeacherSalaries; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @describe 创建课程指定教师的课酬记录-乐团课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @author Joburgess 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @date 2020.10.22 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param courseSchedule: 课程计划 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param courseScheduleTeacherSalaries: 教师课酬记录基本信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void createMusicGroupCourseTeacherSalary(CourseSchedule courseSchedule, List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Teacher> teachers = teacherDao.findByTeacherIds(teacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, Teacher> teacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, teacher -> teacher)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TeacherDefaultMusicGroupSalary> allTeacherDefaultMusicGroupSalary = teacherDefaultMusicGroupSalaryDao.findByTeacher(teacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, List<TeacherDefaultMusicGroupSalary>> teacherSalaryMap = allTeacherDefaultMusicGroupSalary.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(), "yyyy-MM-dd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long classCourseDuration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherSalaryMap.get(courseScheduleTeacherSalary.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal salary; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(courseSchedule.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Teacher teacher = teacherMap.get(courseScheduleTeacherSalary.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (teacherDefaultMusicGroupSalary == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("请设置" + teacher.getRealName() + "老师的" + courseSchedule.getType().getMsg() + "课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //对应基准课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Objects.nonNull(teacher.getEntryDate()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    && (teacher.getEntryDate().after(entryDate) || teacher.getEntryDate().getTime() == entryDate.getTime())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //基准课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //课程时长与结算单位时长占比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                baseSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //阶梯课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //课程时长与结算单位时长占比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                baseSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //课堂课课酬改为按分钟数计算,并且时长占比向下取整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.CLASSROOM)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                baseSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), BigDecimal.ZERO.intValue(), BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //基础技能提高课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                salary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    salary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //线上小班课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(courseSchedule.getClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (studentNum < 3 || studentNum > 5) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String numWaring = studentNum < 3 ? "小班课人数不能小于3," : "小班课人数不能大于5,"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw new BizException( numWaring + "请调整"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setExpectSalary(salary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setClassGroupId(courseSchedule.getClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setCreateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setUpdateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @describe 创建课程指定教师的课酬记录-VIP课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @author Joburgess 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @date 2020.10.22 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param courseSchedule: 课程计划 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param courseScheduleTeacherSalaries: 教师课酬记录基本信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void createVipGroupCourseTeacherSalary(CourseSchedule courseSchedule, List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VipGroup vipGroup = vipGroupService.get(Long.valueOf(courseSchedule.getMusicGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, BigDecimal> salaryMap = vipGroupService.countVipGroupPredictFee(vipGroup, courseSchedule.getActualTeacherId(), null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            courseScheduleTeacherSalary.setExpectSalary(courseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?salaryMap.get("offlineTeacherSalary"):salaryMap.get("onlineTeacherSalary")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @describe 创建课程指定教师的课酬记录-网管课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @author Joburgess 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @date 2020.10.22 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param courseSchedule: 课程计划 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param courseScheduleTeacherSalaries: 教师课酬记录基本信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void createPracticeGroupCourseTeacherSalary(CourseSchedule courseSchedule, List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TeacherDefaultPracticeGroupSalary> allTeacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao.queryByUserIdList(teacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, List<TeacherDefaultPracticeGroupSalary>> teacherSalaryMap = allTeacherDefaultPracticeGroupSalaryList.stream().collect(Collectors.groupingBy(TeacherDefaultPracticeGroupSalary::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            final List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherSalaryMap.get(courseScheduleTeacherSalary.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (teacherDefaultPracticeGroupSalaryList != null && teacherDefaultPracticeGroupSalaryList.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                courseScheduleTeacherSalary.setExpectSalary(teacherDefaultPracticeGroupSalaryList.get(0).getMainTeacherSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("请设置老师 的网管课课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |