Forráskód Böngészése

feat:课酬调整变更

Joburgess 4 éve
szülő
commit
4986789c3a

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -108,7 +108,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @return
 	 */
 	boolean batchAddCourseSchedule(Integer classGroupId, int coursesTimes, Date startDate, Date groupEndDate, Date groupStartDate, List<CourseTimeDto> teachingArrangementList,
-			TeachModeEnum teachMode, CourseScheduleType type, Integer schoolId, boolean isJumpHoliday);
+			TeachModeEnum teachMode, CourseScheduleType type, Integer schoolId, boolean isJumpHoliday, List<CourseScheduleTeacherSalary> oldCourseScheduleTeacherSalaries);
 	
 	/**
 	 * 批量调整

+ 8 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1332,35 +1332,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         //4、调整未上课课酬
         if (allNotStartCourses.size() > 0) {
-            Date nowDate = new Date();
-//            List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
             List<Long> courseScheduleIds = allNotStartCourses.stream().map(CourseSchedule::getId).collect(Collectors.toList());
             List<CourseScheduleTeacherSalary> oldCourseSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
             courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
             Map<Long, CourseSchedule> idCourseMap = allNotStartCourses.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c, (c1, c2) -> c1));
             for (CourseScheduleTeacherSalary oldCourseSalary : oldCourseSalaries) {
                 oldCourseSalary.setId(null);
+                //课酬调整后不能更新课酬
+                if(!oldCourseSalary.getEnableChangeSalary()){
+                    continue;
+                }
                 courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(null, idCourseMap.get(oldCourseSalary.getCourseScheduleId()), oldCourseSalary);
             }
-//            for (CourseSchedule courseSchedule : allNotStartCourses) {
-//                if(!ctm.containsKey(courseSchedule.getClassGroupId())){
-//                    continue;
-//                }
-//                List<ClassGroupTeacherMapper> classGroupTeachers = ctm.get(courseSchedule.getClassGroupId());
-//                for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
-//                    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.setClassGroupId(courseSchedule.getClassGroupId());
-//                    courseScheduleTeacherSalary.setCreateTime(nowDate);
-//                    courseScheduleTeacherSalary.setUpdateTime(nowDate);
-//                    courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(null, courseSchedule, courseScheduleTeacherSalary);
-//                    courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
-//                }
-//            }
             courseScheduleTeacherSalaryService.batchInsert(oldCourseSalaries);
         }
 
@@ -3955,6 +3938,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                             if (courseSchedule.getType() == CourseScheduleType.HIGH_ONLINE || courseSchedule.getType() == CourseScheduleType.HIGH) {
                                 List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedule(courseSchedule.getId());
                                 for (CourseScheduleTeacherSalary teacherSalary : courseScheduleTeacherSalaries) {
+                                    //课酬调整后不能更新课酬
+                                    if(!teacherSalary.getEnableChangeSalary()){
+                                        continue;
+                                    }
                                     List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(teacherSalary.getUserId(), null, null);
                                     if (teacherSalaryList == null || teacherSalaryList.size() == 0) {
                                         throw new BizException("请设置老师线上网管课课酬");

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -613,6 +613,10 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
             Map<Long, CourseSchedule> idCourseMap = classGroupNotStartCourse.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c, (c1, c2) -> c1));
             for (CourseScheduleTeacherSalary oldCourseSalary : oldCourseSalaries) {
                 oldCourseSalary.setId(null);
+                //课酬调整后不能更新课酬
+                if(!oldCourseSalary.getEnableChangeSalary()){
+                    continue;
+                }
                 courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(null, idCourseMap.get(oldCourseSalary.getCourseScheduleId()), oldCourseSalary);
             }
 

+ 26 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -410,7 +410,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean batchAddCourseSchedule(Integer classGroupId, int coursesTimes, Date startDate, Date groupEndDate, Date groupStartDate, List<CourseTimeDto> teachingArrangementList,
-			TeachModeEnum teachMode, CourseScheduleType type, Integer schoolId, boolean isJumpHoliday) {
+			TeachModeEnum teachMode, CourseScheduleType type, Integer schoolId, boolean isJumpHoliday, List<CourseScheduleTeacherSalary> oldCourseScheduleTeacherSalaries) {
 		ClassGroup classGroup = classGroupService.get(classGroupId);
 		if (classGroup == null) {
 			throw new BizException("排课失败,班级信息不存在");
@@ -432,6 +432,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			throw new BizException("请设置课时安排");
 		}
 
+		if(!CollectionUtils.isEmpty(oldCourseScheduleTeacherSalaries)){
+			oldCourseScheduleTeacherSalaries.sort(Comparator.comparing(c->c.getCourseSchedule().getStartClassTime()));
+		}
+
 		BigDecimal subSidy = new BigDecimal(0);
 		// 查询教学点补贴
 		if (schoolId != null) {
@@ -627,6 +631,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					courseScheduleDao.insert(courseSchedule);
 					courseScheduleList.add(courseSchedule);
 
+					CourseScheduleTeacherSalary oldCourseMainTeacherSalary = null;
+					if(!CollectionUtils.isEmpty(oldCourseScheduleTeacherSalaries)){
+						oldCourseMainTeacherSalary = oldCourseScheduleTeacherSalaries.get(courseScheduleList.size()-1);
+					}
+
 					// 课程与老师薪水表
 					for (ClassGroupTeacherMapper cgtm : classGroupTeacherMapperList) {
 						CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
@@ -635,7 +644,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						courseScheduleTeacherSalary.setMusicGroupId(classGroup.getMusicGroupId());
 						courseScheduleTeacherSalary.setTeacherRole(cgtm.getTeacherRole());
 						courseScheduleTeacherSalary.setUserId(cgtm.getUserId());
-						if (type == CourseScheduleType.PRACTICE) {
+						if(TeachTypeEnum.BISHOP.equals(cgtm.getTeacherRole())&&Objects.nonNull(oldCourseMainTeacherSalary)&&!oldCourseMainTeacherSalary.getEnableChangeSalary()){
+							courseScheduleTeacherSalary.setExpectSalary(oldCourseMainTeacherSalary.getExpectSalary());
+							courseScheduleTeacherSalary.setSubsidy(oldCourseMainTeacherSalary.getSubsidy());
+							courseScheduleTeacherSalary.setEnableChangeSalary(oldCourseMainTeacherSalary.getEnableChangeSalary());
+						}else if (type == CourseScheduleType.PRACTICE) {
 							PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
 							if(practiceGroup == null){
 								throw new BizException("课程组不存在");
@@ -874,6 +887,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 		}
 
+		Map<Long, CourseSchedule> idCourseMap = courseScheduleList.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c, (c1, c2) -> c1));
+		List<CourseScheduleTeacherSalary> oldCourseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
+		oldCourseScheduleTeacherSalaries = oldCourseScheduleTeacherSalaries.stream().filter(c->TeachTypeEnum.BISHOP.equals(c.getTeacherRole())).collect(Collectors.toList());
+		oldCourseScheduleTeacherSalaries.forEach(o->o.setCourseSchedule(idCourseMap.get(o.getCourseScheduleId())));
+
 		courseScheduleDao.batchDeleteAllCourseSchedules(courseScheduleIds);
 		courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
 		courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
@@ -902,7 +920,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		// 批量加课
 		batchAddCourseSchedule(classGroupId, batchInsertCoursesDto.getCourseScheduleIdList().size(), batchInsertCoursesDto.getStartDate(), endDate, startDate,
 				batchInsertCoursesDto.getTeachingArrangementList(), batchInsertCoursesDto.getTeachMode(), batchInsertCoursesDto.getType(),
-				batchInsertCoursesDto.getSchoolId(), batchInsertCoursesDto.getIsJumpHoliday());
+				batchInsertCoursesDto.getSchoolId(), batchInsertCoursesDto.getIsJumpHoliday(), oldCourseScheduleTeacherSalaries);
 		return true;
 	}
 
@@ -2973,6 +2991,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					if(courseSalaryListMap.containsKey(oldCourses.get(i).getId())){
 						List<CourseScheduleTeacherSalary> ctss = courseSalaryListMap.get(oldCourses.get(i).getId());
 						for (CourseScheduleTeacherSalary teacherSalary : ctss) {
+							//课酬调整后不能更新课酬
+							if(!teacherSalary.getEnableChangeSalary()){
+								continue;
+							}
 							courseScheduleTeacherSalaryService.updateSingleCourseTeacherSalary(oldCourses.get(i), teacherSalary);
 						}
 						courseScheduleTeacherSalaryDao.batchUpdate(ctss);
@@ -3617,14 +3639,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 				List<CourseScheduleTeacherSalary> oldCourseScheduleTeacherSalaryList = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
 				Map<Long, List<CourseScheduleTeacherSalary>> courseSalaryListMap = new HashMap<>();
-				Boolean changeMainTeacherSalary = false;
 				CourseScheduleTeacherSalary mainTeacherSalary = null;
 				if(!CollectionUtils.isEmpty(oldCourseScheduleTeacherSalaryList)){
 					courseSalaryListMap = oldCourseScheduleTeacherSalaryList.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
 					List<CourseScheduleTeacherSalary> mainTeacherSalarys = oldCourseScheduleTeacherSalaryList.stream().filter(t -> TeachTypeEnum.BISHOP.equals(t.getTeacherRole())).collect(Collectors.toList());
 					if(!CollectionUtils.isEmpty(mainTeacherSalarys)){
 						mainTeacherSalary = mainTeacherSalarys.get(0);
-						changeMainTeacherSalary = mainTeacherSalary.getEnableChangeSalary();
 					}
 				}
 
@@ -3645,7 +3665,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					ts.setUpdateTime(date);
 					ts.setUserId(teacherId);
 
-					if(TeachTypeEnum.BISHOP.equals(ts.getTeacherRole())&&!changeMainTeacherSalary){
+					if(Objects.nonNull(mainTeacherSalary)&&!mainTeacherSalary.getEnableChangeSalary()){
 						ts.setExpectSalary(mainTeacherSalary.getExpectSalary());
 						ts.setSubsidy(mainTeacherSalary.getSubsidy());
 					}else{

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -932,6 +932,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             List<Map<Integer, String>> teachModeById = courseScheduleDao.getTeachModeById(courseIds);
             Map<Integer, String> coureTeachModeMap = MapUtil.convertIntegerMap(teachModeById);
             for(int i=0;i<courseScheduleTeacherSalaries.size();i++){
+                if(!courseScheduleTeacherSalaries.get(i).getEnableChangeSalary()){
+                    continue;
+                }
                 String courseType = coureTeachModeMap.get(courseScheduleTeacherSalaries.get(i).getCourseScheduleId());
 
                 Map<String, BigDecimal> salary = vipGroupService.countVipGroupPredictFee(vipGroup, vipGroup.getUserId(), courseScheduleTeacherSalaries.get(i).getCourseScheduleId());

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java

@@ -116,6 +116,10 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 					List<CourseScheduleTeacherSalary> list = new ArrayList<CourseScheduleTeacherSalary>();
 					// 批量修改课程课酬
 					for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
+						//课酬调整后不能更新课酬
+						if(!ts.getEnableChangeSalary()){
+							continue;
+						}
 						MusicGroup musicGroup = musicGroupMap.get(ts.getMusicGroupId());
 						// 课酬结算标准
 						if (musicGroup != null) {

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultPracticeGroupSalaryServiceImpl.java

@@ -94,6 +94,10 @@ public class TeacherDefaultPracticeGroupSalaryServiceImpl extends BaseServiceImp
 					List<CourseScheduleTeacherSalary> list = new ArrayList<CourseScheduleTeacherSalary>();
 
 					for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
+						//课酬调整后不能更新课酬
+						if(!ts.getEnableChangeSalary()){
+							continue;
+						}
 						if (origSalary != null && origSalary.getMainTeacherSalary().compareTo(ts.getExpectSalary()) == 0
 								&& origSalary.getMainTeacherSalary().compareTo(salary) != 0) {
 							if(freeTeacherSalary.compareTo(ts.getExpectSalary())==0){

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultVipGroupSalaryServiceImpl.java

@@ -139,6 +139,10 @@ public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Lon
 					List<CourseScheduleTeacherSalary> list = new ArrayList<CourseScheduleTeacherSalary>();
 
 					for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
+						//课酬调整后不能更新课酬
+						if(!ts.getEnableChangeSalary()){
+							continue;
+						}
 						VipGroup vipGroup = vipGroupMap.get(Long.parseLong(ts.getMusicGroupId()));
 						// 课酬结算标准
 						if (vipGroup != null) {

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -65,7 +65,7 @@
     <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
 		INSERT INTO course_schedule_teacher_salary (id_,group_type_,music_group_id_,course_schedule_id_,teacher_role_,
 		user_id_,expect_salary_,create_time_,update_time_,subsidy_,actual_salary_,settlement_time_,class_group_id_,
-		reduce_salary,confirm_status_,memo_,#{enable_change_salary_})
+		reduce_salary,confirm_status_,memo_,enable_change_salary_)
 		VALUES
 		<foreach collection="list" item="data" separator=",">
 			(#{data.id},#{data.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{data.musicGroupId},#{data.courseScheduleId},

+ 6 - 6
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -180,12 +180,12 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo));
     }
 
-    @ApiOperation(value = "课程批量调整")
-    @PostMapping("/batchUpdateCourseSchedule")
-    public Object batchUpdateCourseSchedule(@RequestBody BatchInsertCoursesDto batchInsertCoursesDto){
-        scheduleService.batchUpdateCourseSchedule(batchInsertCoursesDto);
-        return succeed();
-    }
+//    @ApiOperation(value = "课程批量调整")
+//    @PostMapping("/batchUpdateCourseSchedule")
+//    public Object batchUpdateCourseSchedule(@RequestBody BatchInsertCoursesDto batchInsertCoursesDto){
+//        scheduleService.batchUpdateCourseSchedule(batchInsertCoursesDto);
+//        return succeed();
+//    }
 
     @ApiOperation(value = "课时调整")
     @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -378,7 +378,7 @@ public class CourseScheduleController extends BaseController {
     	}
 		courseScheduleService.batchAddCourseSchedule(batchInsertCoursesDto.getClassGroupId(), batchInsertCoursesDto.getCoursesTimes(),
 				batchInsertCoursesDto.getStartDate(), null,null, batchInsertCoursesDto.getTeachingArrangementList(), batchInsertCoursesDto.getTeachMode(),
-				batchInsertCoursesDto.getType(), batchInsertCoursesDto.getSchoolId(), batchInsertCoursesDto.getIsJumpHoliday());
+				batchInsertCoursesDto.getType(), batchInsertCoursesDto.getSchoolId(), batchInsertCoursesDto.getIsJumpHoliday(), null);
         return succeed();
     }