瀏覽代碼

feat:课酬调整变更

Joburgess 4 年之前
父節點
當前提交
e29995d114

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleTeacherSalary.java

@@ -71,6 +71,8 @@ public class CourseScheduleTeacherSalary {
 
 	private Boolean belongToDaya;
 
+	private Boolean enableChangeSalary = true;
+
 	private List<TeacherSalaryDeductReasonDto> deductReasons;
 
 	public List<TeacherSalaryDeductReasonDto> getDeductReasons() {
@@ -273,6 +275,14 @@ public class CourseScheduleTeacherSalary {
 		this.courseSchedule = courseSchedule;
 	}
 
+	public Boolean getEnableChangeSalary() {
+		return enableChangeSalary;
+	}
+
+	public void setEnableChangeSalary(Boolean enableChangeSalary) {
+		this.enableChangeSalary = enableChangeSalary;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 41 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -3460,8 +3460,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<CourseScheduleTeacherSalary> insertCourseScheduleTeacherSalaryList = new ArrayList<CourseScheduleTeacherSalary>();
 
 		// 获取课程对应教学点补贴
-		List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds);
-		Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses);
+//		List<Map<Long, BigDecimal>> courseSubsidyByCourses = courseScheduleTeacherSalaryDao.findCourseSubsidyByCourses(courseScheduleIds);
+//		Map<Integer, BigDecimal> courseSubsidyMap = MapUtil.convertIntegerMap(courseSubsidyByCourses);
 
 		// 课程对应乐团结算方式集合
 		List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
@@ -3617,8 +3617,15 @@ 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();
+					}
 				}
 
 				courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIdList);
@@ -3630,7 +3637,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					ts.setCreateTime(date);
 					ts.setGroupType(newCourseSchedule.getGroupType());
 					ts.setMusicGroupId(newCourseSchedule.getMusicGroupId());
-					ts.setSubsidy(courseSubsidyMap.get(courseScheduleId));
 					if (teacherId == newCourseSchedule.getActualTeacherId().intValue()) {
 						ts.setTeacherRole(TeachTypeEnum.BISHOP);
 					} else {
@@ -3638,37 +3644,44 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					}
 					ts.setUpdateTime(date);
 					ts.setUserId(teacherId);
-					// 重新生成课酬
-					if (newCourseSchedule.getGroupType() == GroupType.MUSIC) {
-						courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(null, newCourseSchedule, ts);
-					} else if (newCourseSchedule.getGroupType() == GroupType.VIP) {
-						Map<String, BigDecimal> salaryMap = vipGroupService.countVipGroupPredictFee(vipGroup, teacherId, ts.getCourseScheduleId());
 
-						BigDecimal teacherSalary=null;
+					if(TeachTypeEnum.BISHOP.equals(ts.getTeacherRole())&&!changeMainTeacherSalary){
+						ts.setExpectSalary(mainTeacherSalary.getExpectSalary());
+						ts.setSubsidy(mainTeacherSalary.getSubsidy());
+					}else{
+						// 重新生成课酬
+						if (newCourseSchedule.getGroupType() == GroupType.MUSIC) {
+							courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(null, newCourseSchedule, ts);
+						} else if (newCourseSchedule.getGroupType() == GroupType.VIP) {
+							Map<String, BigDecimal> salaryMap = vipGroupService.countVipGroupPredictFee(vipGroup, teacherId, ts.getCourseScheduleId());
 
-						if(Objects.nonNull(salaryMap)){
-							teacherSalary=newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?salaryMap.get("offlineTeacherSalary"):salaryMap.get("onlineTeacherSalary");
-						}
+							BigDecimal teacherSalary=null;
 
-						ts.setExpectSalary(teacherSalary);
-
-					} else if (newCourseSchedule.getGroupType() == PRACTICE) {
-						SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
-						BigDecimal freeTeacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
-
-						List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao
-								.queryByUserId(teacherId);
-						List<CourseScheduleTeacherSalary> teacherSalaries = courseSalaryListMap.get(ts.getCourseScheduleId());
-						if(!CollectionUtils.isEmpty(teacherSalaries)&&freeTeacherSalary.compareTo(teacherSalaries.get(0).getExpectSalary())==0){
-							ts.setExpectSalary(freeTeacherSalary);
-						}else{
-							if (teacherDefaultPracticeGroupSalaryList != null && teacherDefaultPracticeGroupSalaryList.size() > 0) {
-								ts.setExpectSalary(teacherDefaultPracticeGroupSalaryList.get(0).getMainTeacherSalary());
-							} else {
-								throw new BizException("请设置老师 的网管课课酬");
+							if(Objects.nonNull(salaryMap)){
+								teacherSalary=newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?salaryMap.get("offlineTeacherSalary"):salaryMap.get("onlineTeacherSalary");
+							}
+
+							ts.setExpectSalary(teacherSalary);
+
+						} else if (newCourseSchedule.getGroupType() == PRACTICE) {
+							SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
+							BigDecimal freeTeacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+
+							List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao
+									.queryByUserId(teacherId);
+							List<CourseScheduleTeacherSalary> teacherSalaries = courseSalaryListMap.get(ts.getCourseScheduleId());
+							if(!CollectionUtils.isEmpty(teacherSalaries)&&freeTeacherSalary.compareTo(teacherSalaries.get(0).getExpectSalary())==0){
+								ts.setExpectSalary(freeTeacherSalary);
+							}else{
+								if (teacherDefaultPracticeGroupSalaryList != null && teacherDefaultPracticeGroupSalaryList.size() > 0) {
+									ts.setExpectSalary(teacherDefaultPracticeGroupSalaryList.get(0).getMainTeacherSalary());
+								} else {
+									throw new BizException("请设置老师 的网管课课酬");
+								}
 							}
 						}
 					}
+
 					if(ts.getExpectSalary() == null){
 						throw new BizException("请设置老师的课酬");
 					}

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

@@ -2391,6 +2391,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 courseScheduleTeacherSalary.setExpectSalary(salary);
             }
             courseScheduleTeacherSalary.setSubsidy(subsidy);
+            courseScheduleTeacherSalary.setEnableChangeSalary(false);
             courseScheduleTeacherSalary.setUpdateTime(new Date());
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         }

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

@@ -33,6 +33,7 @@
 		<result column="memo_" property="memo" />
 		<result column="deduction_reason_" property="deductionReason"/>
 		<result column="belong_to_daya_" property="belongToDaya" />
+		<result column="enable_change_salary_" property="enableChangeSalary" />
 	</resultMap>
 	
 	<resultMap type="com.ym.mec.biz.dal.dto.TeacherVipSalaryDto" id="teacherVipSalaryDto" extends="CourseScheduleTeacherSalary">
@@ -56,20 +57,21 @@
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary" useGeneratedKeys="true" keyColumn="id" 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_)
+		reduce_salary,confirm_status_,memo_,enable_change_salary_)
 		VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{courseScheduleId},
 		#{teacherRole},#{userId},#{expectSalary},now(),now(),#{subsidy},#{actualSalary},#{settlementTime},#{classGroupId},
-		#{reduceSalary},#{confirmStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{memo})
+		#{reduceSalary},#{confirmStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{memo},#{enableChangeSalary})
 	</insert>
     <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_)
+		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},
 			#{data.teacherRole},#{data.userId},#{data.expectSalary},now(),now(),#{data.subsidy},#{data.actualSalary},#{data.settlementTime},
-			#{data.classGroupId},#{data.reduceSalary},#{data.confirmStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{data.memo})
+			#{data.classGroupId},#{data.reduceSalary},#{data.confirmStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{data.memo},
+			#{data.enableChangeSalary})
 		</foreach>
     </insert>
 
@@ -125,6 +127,9 @@
 			<if test="belongToDaya != null">
 				belong_to_daya_ = #{belongToDaya},
 			</if>
+			<if test="enableChangeSalary != null">
+				enable_change_salary_ = #{enableChangeSalary},
+			</if>
 		</set> WHERE id_ = #{id} 
 	</update>
 
@@ -464,6 +469,7 @@
 		UPDATE course_schedule_teacher_salary csts left join course_schedule cs on csts.course_schedule_id_ = cs.id_ 
 		set
 			csts.subsidy_ = #{subsidy},
+		    csts.enable_change_salary_ = 0,
 		    <if test="salary!=null">
 				csts.expect_salary_ = #{salary},
 			</if>