浏览代码

feat:课程调整

Joburgess 4 年之前
父节点
当前提交
ef180b1845

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.TeacherSalaryModifyLog;
 import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import com.ym.mec.biz.dal.enums.TeacherSalaryConfirmStatus;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
@@ -36,6 +37,17 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	int batchDeleteByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
 	/**
+	 * @describe 根据课程和教师类型删除教师课酬记录
+	 * @author Joburgess
+	 * @date 2021/4/9 0009
+	 * @param courseIds:
+	 * @param teachType:
+	 * @return int
+	 */
+	int deleteWithCourseAndTeachRole(@Param("courseIds") List<Long> courseIds,
+									 @Param("teachType") TeachTypeEnum teachType);
+
+	/**
 	 * @return java.util.List<com.ym.mec.biz.dal.dto.VipGroupSalaryDto>
 	 * @Author: Joburgess
 	 * @Date: 2019/10/11

+ 101 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BatchCourseAdjustDto.java

@@ -0,0 +1,101 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/4/9 0009
+ */
+public class BatchCourseAdjustDto {
+
+    @ApiModelProperty(value = "需要调整的课程编号")
+    private List<Long> courseScheduleIds;
+
+    @ApiModelProperty(value = "是否修改助教")
+    private Boolean changeTeachingTeacher = true;
+
+    @ApiModelProperty(value = "老师设置", required = true)
+    private List<ClassGroupTeacherMapper> classGroupTeacherMapperList;
+
+    @ApiModelProperty(value = "是否跳过节假日 true-跳过 false-不跳过", required = true)
+    private Boolean isHoliday;
+
+    @ApiModelProperty(value = "开始时间", required = true)
+    private String startDate;
+
+    @ApiModelProperty(value = "排课循环方式", required = true)
+    private List<CourseTimeDto> courseTimeDtoList;
+
+    @ApiModelProperty(value = "是否允许0课酬")
+    private Boolean allowZeroSalary = false;
+
+    @ApiModelProperty(value = "教学点")
+    private Integer schoolId;
+
+    public List<Long> getCourseScheduleIds() {
+        return courseScheduleIds;
+    }
+
+    public void setCourseScheduleIds(List<Long> courseScheduleIds) {
+        this.courseScheduleIds = courseScheduleIds;
+    }
+
+    public List<ClassGroupTeacherMapper> getClassGroupTeacherMapperList() {
+        return classGroupTeacherMapperList;
+    }
+
+    public void setClassGroupTeacherMapperList(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
+        this.classGroupTeacherMapperList = classGroupTeacherMapperList;
+    }
+
+    public Boolean getChangeTeachingTeacher() {
+        return changeTeachingTeacher;
+    }
+
+    public void setChangeTeachingTeacher(Boolean changeTeachingTeacher) {
+        this.changeTeachingTeacher = changeTeachingTeacher;
+    }
+
+    public Boolean getHoliday() {
+        return isHoliday;
+    }
+
+    public void setHoliday(Boolean holiday) {
+        isHoliday = holiday;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public List<CourseTimeDto> getCourseTimeDtoList() {
+        return courseTimeDtoList;
+    }
+
+    public void setCourseTimeDtoList(List<CourseTimeDto> courseTimeDtoList) {
+        this.courseTimeDtoList = courseTimeDtoList;
+    }
+
+    public Boolean getAllowZeroSalary() {
+        return allowZeroSalary;
+    }
+
+    public void setAllowZeroSalary(Boolean allowZeroSalary) {
+        this.allowZeroSalary = allowZeroSalary;
+    }
+
+    public Integer getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Integer schoolId) {
+        this.schoolId = schoolId;
+    }
+}

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

@@ -238,6 +238,15 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo);
 
 	/**
+	 * @describe 课程批量调整
+	 * @author Joburgess
+	 * @date 2021/4/9 0009
+	 * @param batchCourseAdjustInfo:
+	 * @return void
+	 */
+	HttpResponseResult batchCourseAdjust(BatchCourseAdjustDto batchCourseAdjustInfo);
+
+	/**
 	 * @describe 课程顺延
 	 * @author Joburgess
 	 * @date 2020/1/2

+ 31 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -2822,7 +2822,37 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		saveModifyLog(modifyLogs,courseScheduleIds);
     }
 
-    @Override
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public HttpResponseResult batchCourseAdjust(BatchCourseAdjustDto courseAdjustInfo) {
+		if(CollectionUtils.isEmpty(courseAdjustInfo.getCourseScheduleIds())){
+			return BaseController.failed("请指定需要调整的课程");
+		}
+		if(Objects.isNull(courseAdjustInfo.getStartDate())){
+			return BaseController.failed("请指定排课起始时间");
+		}
+		if(CollectionUtils.isEmpty(courseAdjustInfo.getCourseTimeDtoList())){
+			return BaseController.failed("请指定排课循环周期");
+		}
+		//未更新课程列表
+		List<CourseSchedule> oldCourses = courseScheduleDao.findByCourseScheduleIds(courseAdjustInfo.getCourseScheduleIds());
+
+		//删除教师课酬:如果助教不变更,则只更新主教课酬
+		courseScheduleTeacherSalaryDao.deleteWithCourseAndTeachRole(courseAdjustInfo.getCourseScheduleIds(), courseAdjustInfo.getChangeTeachingTeacher()?null:TeachTypeEnum.BISHOP);
+
+		//获取主教编号
+		Integer mainTeacherId = null;
+		if(!CollectionUtils.isEmpty(courseAdjustInfo.getClassGroupTeacherMapperList())){
+			ClassGroupTeacherMapper classGroupTeacherMapper = courseAdjustInfo.getClassGroupTeacherMapperList().stream().filter(c -> TeachTypeEnum.BISHOP.equals(c.getTeacherRole())).findAny().get();
+			if(Objects.nonNull(classGroupTeacherMapper)){
+				mainTeacherId = classGroupTeacherMapper.getUserId();
+			}
+		}
+
+		return BaseController.succeed();
+	}
+
+	@Override
     @Transactional(rollbackFor = Exception.class)
     public void coursePostpone(CoursePostponeDto coursePostPoneInfo) {
         SysUser user = sysUserFeignService.queryUserInfo();

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

@@ -168,6 +168,17 @@
 		</foreach>
 	</delete>
 
+	<delete id="deleteWithCourseAndTeachRole">
+		DELETE FROM course_schedule_teacher_salary
+		WHERE course_schedule_id_ IN
+			<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+				#{courseScheduleId}
+			</foreach>
+			<if test="teachType!=null">
+				AND teacher_role_ = #{teachType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+	</delete>
+
 	<sql id="courseScheduleTeacherSalaryQueryPage">
 		<where>
 			(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)