Pārlūkot izejas kodu

拆分班级重新计算课凑

zouxuan 4 gadi atpakaļ
vecāks
revīzija
926dbb0150

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -531,6 +531,13 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     Map<String,Long> querySubCourseTime(Integer classGroupId);
 
     /**
+     * 重新计算课酬
+     * @param classGroupIds
+     * @return
+     */
+    void batchUpdateTeacherSalary(List<Integer> classGroupIds);
+
+    /**
      * 跨团班级合并提交
      * @param mergeClassSplitClassAffirmDto
      * @return

+ 76 - 71
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -3908,6 +3908,81 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
+    public void batchUpdateTeacherSalary(List<Integer> classGroupIds) {
+        if(classGroupIds.size() > 0){
+            //获取班级学员人数
+            List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds, ClassGroupStudentStatusEnum.NORMAL);
+            Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
+            List<ClassGroup> byClassGroupIds = classGroupDao.findByClassGroupIds(classGroupIds, null);
+            for (ClassGroup classGroup : byClassGroupIds) {
+                Long aLong = classGroupStudentNumMap.get(classGroup.getId());
+                classGroup.setStudentNum(aLong==null?0:aLong.intValue());
+                if(classGroup.getType() == HIGH_ONLINE || classGroup.getType() == HIGH){
+                    if(aLong != null && aLong > 0){
+                        List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
+                        if(courseScheduleList.size() > 0){
+                            //调整未上课课酬
+                            List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getClassGroupTeachers(classGroup.getId());
+                            Date nowDate = new Date();
+                            List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+                            List<Long> courseScheduleIds = courseScheduleList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
+                            courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
+                            for (CourseSchedule courseSchedule : courseScheduleList) {
+                                for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
+                                    List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacher.getUserId(), null, null);
+                                    if (teacherSalaryList == null || teacherSalaryList.size() == 0) {
+                                        throw new BizException("请设置老师线上网管课课酬");
+                                    }
+                                    Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
+                                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(CourseSchedule.CourseScheduleType.HIGH_ONLINE);
+
+                                    if (classGroup.getType().equals(HIGH_ONLINE) && aLong > 5l) {
+                                        aLong = 5l;
+                                    }
+                                    BigDecimal salary = null;
+                                    if(classGroup.getType().equals(HIGH_ONLINE)){
+                                        salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(aLong + "");
+                                    }else if(classGroup.getType().equals(HIGH)){
+                                        MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+                                        TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryHigh = collect.get(CourseSchedule.CourseScheduleType.HIGH);
+                                        if(Objects.isNull(teacherDefaultMusicGroupSalaryHigh)){
+                                            throw new BizException("请设置老师课酬");
+                                        }
+                                        salary = TeachTypeEnum.BISHOP.equals(classGroupTeacher.getTeacherRole()) ? teacherDefaultMusicGroupSalaryHigh.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryHigh.getAssistantTeacher30MinSalary();
+                                        if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                                            salary = TeachTypeEnum.BISHOP.equals(classGroupTeacher.getTeacherRole()) ? teacherDefaultMusicGroupSalaryHigh.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryHigh.getAssistantTeacher90MinSalary();
+                                        }
+                                        if(Objects.isNull(salary)){
+                                            throw new BizException("请设置老师课酬");
+                                        }
+                                        salary = salary.multiply(new BigDecimal(aLong));
+                                    }
+                                    if(Objects.isNull(salary)){
+                                        throw new BizException("请设置老师课酬");
+                                    }
+                                    CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
+                                    courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
+                                    courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
+                                    courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
+                                    courseScheduleTeacherSalary.setTeacherRole(classGroupTeacher.getTeacherRole());
+                                    courseScheduleTeacherSalary.setUserId(classGroupTeacher.getUserId());
+                                    courseScheduleTeacherSalary.setExpectSalary(salary);
+                                    courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
+                                    courseScheduleTeacherSalary.setCreateTime(nowDate);
+                                    courseScheduleTeacherSalary.setUpdateTime(nowDate);
+                                    courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
+                                }
+                            }
+                            courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
+                        }
+                    }
+                }
+            }
+            classGroupDao.batchUpdate(byClassGroupIds);
+        }
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -4065,76 +4140,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
         }
         //如果是基础技能班,重新计算老师课酬
-        if(classGroupIds.size() > 0){
-            //获取班级学员人数
-            List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds, ClassGroupStudentStatusEnum.NORMAL);
-            Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
-            List<ClassGroup> byClassGroupIds = classGroupDao.findByClassGroupIds(classGroupIds, null);
-            for (ClassGroup classGroup : byClassGroupIds) {
-                Long aLong = classGroupStudentNumMap.get(classGroup.getId());
-                classGroup.setStudentNum(aLong==null?0:aLong.intValue());
-                if(classGroup.getType() == HIGH_ONLINE || classGroup.getType() == HIGH){
-                    if(aLong != null && aLong > 0){
-                        List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
-                        if(courseScheduleList.size() > 0){
-                            //调整未上课课酬
-                            List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getClassGroupTeachers(classGroup.getId());
-                            Date nowDate = new Date();
-                            List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
-                            List<Long> courseScheduleIds = courseScheduleList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
-                            courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
-                            for (CourseSchedule courseSchedule : courseScheduleList) {
-                                for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
-                                    List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacher.getUserId(), null, null);
-                                    if (teacherSalaryList == null || teacherSalaryList.size() == 0) {
-                                        throw new BizException("请设置老师线上网管课课酬");
-                                    }
-                                    Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
-                                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(CourseSchedule.CourseScheduleType.HIGH_ONLINE);
-
-                                    if (classGroup.getType().equals(HIGH_ONLINE) && aLong > 5l) {
-                                        aLong = 5l;
-                                    }
-                                    BigDecimal salary = null;
-                                    if(classGroup.getType().equals(HIGH_ONLINE)){
-                                        salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(aLong + "");
-                                    }else if(classGroup.getType().equals(HIGH)){
-                                        MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
-                                        TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryHigh = collect.get(CourseSchedule.CourseScheduleType.HIGH);
-                                        if(Objects.isNull(teacherDefaultMusicGroupSalaryHigh)){
-                                            throw new BizException("请设置老师课酬");
-                                        }
-                                        salary = TeachTypeEnum.BISHOP.equals(classGroupTeacher.getTeacherRole()) ? teacherDefaultMusicGroupSalaryHigh.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryHigh.getAssistantTeacher30MinSalary();
-                                        if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
-                                            salary = TeachTypeEnum.BISHOP.equals(classGroupTeacher.getTeacherRole()) ? teacherDefaultMusicGroupSalaryHigh.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryHigh.getAssistantTeacher90MinSalary();
-                                        }
-                                        if(Objects.isNull(salary)){
-                                            throw new BizException("请设置老师课酬");
-                                        }
-                                        salary = salary.multiply(new BigDecimal(aLong));
-                                    }
-                                    if(Objects.isNull(salary)){
-                                        throw new BizException("请设置老师课酬");
-                                    }
-                                    CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
-                                    courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
-                                    courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
-                                    courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
-                                    courseScheduleTeacherSalary.setTeacherRole(classGroupTeacher.getTeacherRole());
-                                    courseScheduleTeacherSalary.setUserId(classGroupTeacher.getUserId());
-                                    courseScheduleTeacherSalary.setExpectSalary(salary);
-                                    courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
-                                    courseScheduleTeacherSalary.setCreateTime(nowDate);
-                                    courseScheduleTeacherSalary.setUpdateTime(nowDate);
-                                    courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
-                                }
-                            }
-                            courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
-                        }
-                    }
-                }
-            }
-            classGroupDao.batchUpdate(byClassGroupIds);
-        }
+        batchUpdateTeacherSalary(classGroupIds);
     }
 }

+ 3 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -11,23 +11,13 @@ import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType.SP
 import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.Map.Entry;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.event.source.GroupEventSource;
 import com.ym.mec.biz.service.*;
 import org.apache.commons.beanutils.BeanUtils;
@@ -52,8 +42,6 @@ import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -1110,6 +1098,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			//删除教师课酬
 			courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
 		}
+		classGroupService.batchUpdateTeacherSalary(classGroupIds);
 		imUserFriendService.refreshGroupImUserFriend(musicGroupPaymentCalenders.get(0).getMusicGroupId(),GroupType.MUSIC);
 	}