浏览代码

Merge remote-tracking branch 'origin/master'

Joburgess 5 年之前
父节点
当前提交
c464450e7d

+ 2 - 0
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java

@@ -51,6 +51,8 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 		homeList.put("banner",queryPage(queryInfo));
 		queryInfo.setType(5);
 		homeList.put("flash",queryPage(queryInfo));
+		queryInfo.setType(6);
+		homeList.put("app",queryPage(queryInfo));
 		return homeList;
 	}
 

+ 3 - 8
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -37,14 +37,9 @@
 			<if test="search != null">
 				and title_ like '%' #{search} '%'
 			</if>
-			<choose>
-		        <when test="memo != null and memo != ''">
-		            and memo_ = #{memo}
-		        </when>
-		        <otherwise>
-		            and memo_ is null
-		        </otherwise>
-	        </choose>
+			<if test="memo != null">
+				and memo_ = #{memo}
+			</if>
 		</where>
 	</sql>
 	

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultPracticeGroupSalaryDao.java

@@ -15,6 +15,8 @@ public interface TeacherDefaultPracticeGroupSalaryDao extends BaseDAO<Long, Teac
 	 */
 	List<TeacherDefaultPracticeGroupSalary> queryByUserId(Integer userId);
 
+	List<TeacherDefaultPracticeGroupSalary> queryByUserIdList(@Param("userIdList") List<Integer> userIdList);
+
     int deleteByUserId(Integer userId);
     
     int batchInsert(List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList);

+ 90 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BatchInsertCoursesDto.java

@@ -0,0 +1,90 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.Date;
+import java.util.List;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+
+public class BatchInsertCoursesDto {
+
+	private Integer classGroupId;
+
+	private int coursesTimes;
+
+	private Date startDate;
+
+	private List<CourseTimeDto> teachingArrangementList;
+
+	private TeachModeEnum teachMode;
+
+	private CourseScheduleType type;
+
+	private Integer schoolId;
+
+	private boolean isJumpHoliday;
+
+	public Integer getClassGroupId() {
+		return classGroupId;
+	}
+
+	public void setClassGroupId(Integer classGroupId) {
+		this.classGroupId = classGroupId;
+	}
+
+	public int getCoursesTimes() {
+		return coursesTimes;
+	}
+
+	public void setCoursesTimes(int coursesTimes) {
+		this.coursesTimes = coursesTimes;
+	}
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public List<CourseTimeDto> getTeachingArrangementList() {
+		return teachingArrangementList;
+	}
+
+	public void setTeachingArrangementList(List<CourseTimeDto> teachingArrangementList) {
+		this.teachingArrangementList = teachingArrangementList;
+	}
+
+	public TeachModeEnum getTeachMode() {
+		return teachMode;
+	}
+
+	public void setTeachMode(TeachModeEnum teachMode) {
+		this.teachMode = teachMode;
+	}
+
+	public CourseScheduleType getType() {
+		return type;
+	}
+
+	public void setType(CourseScheduleType type) {
+		this.type = type;
+	}
+
+	public Integer getSchoolId() {
+		return schoolId;
+	}
+
+	public void setSchoolId(Integer schoolId) {
+		this.schoolId = schoolId;
+	}
+
+	public boolean getIsJumpHoliday() {
+		return isJumpHoliday;
+	}
+
+	public void setIsJumpHoliday(boolean isJumpHoliday) {
+		this.isJumpHoliday = isJumpHoliday;
+	}
+}

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

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
 import com.ym.mec.biz.dal.dto.CoursePostponeDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleEndDto;
+import com.ym.mec.biz.dal.dto.CourseTimeDto;
 import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.dto.VipGroupCourseAdjustInfoDto;
@@ -82,14 +83,15 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @param classGroupId 班级编号
 	 * @param coursesTimes 增加的课次
 	 * @param startDate 排课开始时间
-	 * @param teachingArrangement 教学安排(周几,几点-几点)
+	 * @param teachingArrangementList 教学安排(周几,几点-几点)
 	 * @param teachMode 教学模式
 	 * @param type 课程类型
 	 * @param schoolId 教学点
+	 * @param isJumpHoliday 是否跳过节假日
 	 * @return
 	 */
-	boolean batchAddCourseSchedule(Integer classGroupId, int coursesTimes, Date startDate, String teachingArrangement, TeachModeEnum teachMode,
-			CourseScheduleType type, Integer schoolId);
+	boolean batchAddCourseSchedule(Integer classGroupId, int coursesTimes, Date startDate, List<CourseTimeDto> teachingArrangementList,
+			TeachModeEnum teachMode, CourseScheduleType type, Integer schoolId, boolean isJumpHoliday);
 
 	/**
 	 * @Author: Joburgess

+ 183 - 83
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -106,6 +106,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     private MusicGroupService musicGroupService;
     @Autowired
     private SysConfigService sysConfigService;
+    @Autowired
+    private SchoolDao schoolDao;
     
     @Autowired
     private CourseHomeworkService courseHomeworkService;
@@ -245,84 +247,128 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
-	public boolean batchAddCourseSchedule(Integer classGroupId, int coursesTimes, Date startDate, String teachingArrangement, TeachModeEnum teachMode,
-			CourseScheduleType type, Integer schoolId) {
-    	ClassGroup classGroup = classGroupService.get(classGroupId);
-    	if(classGroup == null){
-    		throw new BizException("排课失败,班级信息不存在");
-    	}
-    	
-    	if(teachMode == TeachModeEnum.OFFLINE && schoolId == null){
-    		throw new BizException("线下课请指定教学点");
-    	}
-    	
-    	if(type == null){
-    		throw new BizException("请指定课程类型");
-    	}
-    	
-    	if (type == CourseScheduleType.VIP){
-    		throw new BizException("暂不支持vip课加课");
-    	}
-    	
-    	List<CourseTimeDto> teachingArrangementList = JsonUtil.parseArray(teachingArrangement, CourseTimeDto.class);
-    	if(teachingArrangementList == null || teachingArrangementList.size() == 0){
-    		throw new BizException("请设置课时安排");
-    	}
-    	
-    	//查询班级老师信息
-    	List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupTeacherMapperService.getClassGroupTeachers(classGroupId);
-    	
-    	//查询主教老师
-    	Integer teacherId = null;
-    	for(ClassGroupTeacherMapper cgtm : classGroupTeacherMapperList){
-    		if(cgtm.getTeacherRole() == TeachTypeEnum.BISHOP){
-    			teacherId = cgtm.getUserId();
-    			break;
-    		}
-    	}
-    	
-    	if(teacherId == null){
-    		throw new BizException("班级缺少主教老师");
-    	}
-    	
-    	//查询老师默认课酬
+	@Transactional(rollbackFor = Exception.class)
+	public boolean batchAddCourseSchedule(Integer classGroupId, int coursesTimes, Date startDate, List<CourseTimeDto> teachingArrangementList,
+			TeachModeEnum teachMode, CourseScheduleType type, Integer schoolId, boolean isJumpHoliday) {
+		ClassGroup classGroup = classGroupService.get(classGroupId);
+		if (classGroup == null) {
+			throw new BizException("排课失败,班级信息不存在");
+		}
+
+		if (teachMode == TeachModeEnum.OFFLINE && schoolId == null) {
+			throw new BizException("线下课请指定教学点");
+		}
+
+		if (type == null) {
+			throw new BizException("请指定课程类型");
+		}
+
+		if (type == CourseScheduleType.VIP) {
+			throw new BizException("暂不支持vip课加课");
+		}
+
+		if (teachingArrangementList == null || teachingArrangementList.size() == 0) {
+			throw new BizException("请设置课时安排");
+		}
+
+		BigDecimal subSidy = new BigDecimal(0);
+		// 查询教学点补贴
+		if (schoolId != null) {
+			School school = schoolDao.get(schoolId);
+			if (school == null) {
+				throw new BizException("指定的教学点不存在");
+			}
+			subSidy = school.getSubsidy();
+		}
+
+		// 查询班级老师信息
+		List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupTeacherMapperService.getClassGroupTeachers(classGroupId);
+
+		// 查询主教老师
+		Integer teacherId = null;
+		for (ClassGroupTeacherMapper cgtm : classGroupTeacherMapperList) {
+			if (cgtm.getTeacherRole() == TeachTypeEnum.BISHOP) {
+				teacherId = cgtm.getUserId();
+				break;
+			}
+		}
+
+		if (teacherId == null) {
+			throw new BizException("班级缺少主教老师");
+		}
+
+		List<Integer> teacherIdList = classGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toList());
+
+		// 查询老师列表
+		List<Teacher> teacherList = teacherDao.findByTeacherIds(teacherIdList);
+		Map<Integer, Teacher> teacherMap = teacherList.stream().collect(Collectors.toMap(Teacher::getId, t -> t));
+
+		Map<Integer, BigDecimal> teacherPracticeSalaryMap = new HashMap<Integer, BigDecimal>();
+		Map<Integer, TeacherDefaultMusicGroupSalary> teacherMusicSalaryMap = new HashMap<Integer, TeacherDefaultMusicGroupSalary>();
+
+		Date entryDate = null;
+		String settlementType = null;
+
+		// 查询老师默认课酬
 		if (type == CourseScheduleType.PRACTICE) {
 
 			List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao
-					.queryByUserId(teacherId);
-			
+					.queryByUserIdList(teacherIdList);
+
+			teacherPracticeSalaryMap = teacherDefaultPracticeGroupSalaryList.stream().collect(
+					Collectors.toMap(TeacherDefaultPracticeGroupSalary::getUserId, TeacherDefaultPracticeGroupSalary::getMainTeacherSalary));
+
 		} else {
+			MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+			if (musicGroup == null) {
+				throw new BizException("找不到乐团信息");
+			}
+			// 乐团结算方式
+			settlementType = musicGroup.getSettlementType().getCode();
+
+			// 老师入职的分界线
+			entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue(), "yyyy-MM-dd");
+
 			// 所有老师默认乐团课酬
-			/*List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(newTeacherIdList);
+			List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(teacherIdList);
+
 			for (TeacherDefaultMusicGroupSalary tdms : teacherDefaultMusicGroupSalaries) {
-				Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> map = musicGroupSalaryMap.get(tdms.getUserId());
-				if (map == null) {
-					map = new HashMap<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary>();
+				if (tdms.getCourseScheduleType() == type) {
+					teacherMusicSalaryMap.put(tdms.getUserId(), tdms);
 				}
-				map.put(tdms.getCourseScheduleType(), tdms);
-				musicGroupSalaryMap.put(tdms.getUserId(), map);
-			}*/
+			}
+		}
+
+		// 查询班级学生信息
+		List<ClassGroupStudentMapper> classGroupStudentMapperList = classGroupStudentMapperDao.findByClassGroup(classGroupId);
+
+		Map<Integer, CourseTimeDto> dayOfWeekMap = teachingArrangementList.stream().collect(Collectors.toMap(CourseTimeDto::getDayOfWeek, ct -> ct));
+
+		Calendar calendar = Calendar.getInstance();
+		Date now = new Date();
+		CourseTimeDto courseTimeDto = null;
+		List<CourseSchedule> courseScheduleList = new ArrayList<CourseSchedule>();
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<CourseScheduleTeacherSalary>();
+		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
+		List<TeacherAttendance> teacherAttendances = new ArrayList<TeacherAttendance>();
+		Map<String, Integer> holidayDays = new HashMap<>();
+		if (isJumpHoliday) {
+			try {
+		        Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+				holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
+				holidayDays = holiday.get(calendar.get(Calendar.YEAR));
+
+			} catch (Exception e) {
+				throw new BizException("获取节假日失败",e);
+			}
 		}
-    	
-    	//查询班级学生信息
-    	List<ClassGroupStudentMapper> classGroupStudentMapperList = classGroupStudentMapperDao.findByClassGroup(classGroupId);
-    	
-    	//查询教学点补贴
-    	
-    	Map<Integer,CourseTimeDto> dayOfWeekMap = teachingArrangementList.stream().collect(Collectors.toMap(CourseTimeDto :: getDayOfWeek, ct -> ct));
-    	
-    	Calendar calendar = Calendar.getInstance();
-    	Date now = new Date();
-    	CourseTimeDto courseTimeDto = null;
-    	List<CourseSchedule> courseScheduleList = new ArrayList<CourseSchedule>();
-    	List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<CourseScheduleTeacherSalary>();
-        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
-        List<TeacherAttendance> teacherAttendances = new ArrayList<TeacherAttendance>();
+		calendar.setTime(startDate);
 		for (int i = 0; i < coursesTimes; i++) {
 			while (true) {
-				startDate = DateUtil.addDays1(startDate, 1);
-				calendar.setTime(startDate);
+	            if (holidayDays.containsKey(DateUtil.format(calendar.getTime(), "MMdd"))) {
+	                calendar.add(Calendar.DATE, 1);
+	                continue;
+	            }
 				// 查询当前日期是周几
 				int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
 				if (dayOfWeek == 1) {
@@ -337,7 +383,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
 					courseSchedule.setClassGroupId(classGroup.getId());
 					courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-					courseSchedule.setClassDate(startDate);
+					courseSchedule.setClassDate(calendar.getTime());
 
 					String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
 
@@ -348,11 +394,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					dateYmdStr = dateYmdStr + " " + courseTimeDto.getEndClassTime();
 					Date courseEndTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
 					courseSchedule.setEndClassTime(courseEndTime);
-					
-					if(courseEndTime.before(courseStartTime)){
+
+					if (courseEndTime.before(courseStartTime)) {
 						throw new BizException("课时上课时间安排错误");
 					}
-
+					
 					courseSchedule.setTeacherId(teacherId);
 					courseSchedule.setActualTeacherId(teacherId);
 					courseSchedule.setCreateTime(now);
@@ -362,6 +408,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					courseSchedule.setGroupType(classGroup.getGroupType());
 					courseSchedule.setName(classGroup.getName());
 					courseSchedule.setSchoolId(schoolId);
+					courseSchedule.setSubsidy(subSidy);
 					courseScheduleList.add(courseSchedule);
 
 					// 课程与老师薪水表
@@ -372,10 +419,58 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						courseScheduleTeacherSalary.setMusicGroupId(classGroup.getMusicGroupId());
 						courseScheduleTeacherSalary.setTeacherRole(cgtm.getTeacherRole());
 						courseScheduleTeacherSalary.setUserId(cgtm.getUserId());
-						//courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue()));
+						if (type == CourseScheduleType.PRACTICE) {
+							courseScheduleTeacherSalary.setExpectSalary(teacherPracticeSalaryMap.get(cgtm.getUserId()));
+						} else if (type == CourseScheduleType.VIP) {
+
+						} else {
+							TeacherDefaultMusicGroupSalary tdms = teacherMusicSalaryMap.get(cgtm.getUserId());
+
+							int newMinutes = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
+
+							int unitMinutes = 30;
+
+							// 如果当前教师是在指定日期之后入职的,则按照3.0的方式结算
+							if (type != CourseScheduleType.CLASSROOM) {
+								Teacher teacher = teacherMap.get(teacherId);
+								if (Objects.nonNull(teacher.getEntryDate())
+										&& (teacher.getEntryDate().after(entryDate) || teacher.getEntryDate().getTime() == entryDate.getTime())) {
+									settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY.getCode();
+								}
+							}
+							if (StringUtils.equals(settlementType, "TEACHER_DEFAULT")) {
+								if (type == CourseScheduleType.CLASSROOM) {
+									unitMinutes = 40;
+								} else if (type == CourseScheduleType.HIGH) {
+									unitMinutes = 45;
+								}
+								if (courseScheduleTeacherSalary.getTeacherRole() == TeachTypeEnum.BISHOP) {
+									courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(tdms.getMainTeacher30MinSalary().doubleValue() * newMinutes
+											/ unitMinutes));
+								} else {
+									courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(tdms.getAssistantTeacher30MinSalary().doubleValue() * newMinutes
+											/ unitMinutes));
+								}
+							} else if (StringUtils.equals(settlementType, "GRADIENT_SALARY")) {
+								unitMinutes = 90;
+								if (type == CourseScheduleType.CLASSROOM) {
+									unitMinutes = 40;
+								} else if (type == CourseScheduleType.HIGH) {
+									unitMinutes = 45;
+								}
+								if (courseScheduleTeacherSalary.getTeacherRole() == TeachTypeEnum.BISHOP) {
+									courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(tdms.getMainTeacher90MinSalary().doubleValue() * newMinutes
+											/ unitMinutes));
+								} else {
+									courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(tdms.getAssistantTeacher90MinSalary().doubleValue() * newMinutes
+											/ unitMinutes));
+								}
+							}
+						}
 						courseScheduleTeacherSalary.setCreateTime(now);
 						courseScheduleTeacherSalary.setUpdateTime(now);
 						courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
+						courseScheduleTeacherSalary.setSubsidy(subSidy);
 						courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
 					}
 
@@ -406,28 +501,33 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					}
 					break;
 				}
+                calendar.add(Calendar.DATE, 1);
 			}
 		}
 		
-		if(courseScheduleList.size() > 0){
+		//检查冲突
+		checkNewCourseSchedules(courseScheduleList, false);
+        createCourseScheduleName(courseScheduleList);
+
+		if (courseScheduleList.size() > 0) {
 			courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
 		}
-		
-		if(courseScheduleTeacherSalaries.size() > 0){
+
+		if (courseScheduleTeacherSalaries.size() > 0) {
 			courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
 		}
-		
-		if(courseScheduleStudentPayments.size() > 0){
+
+		if (courseScheduleStudentPayments.size() > 0) {
 			courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 		}
-		
-		if(teacherAttendances.size() > 0){
+
+		if (teacherAttendances.size() > 0) {
 			teacherAttendanceDao.batchInsert(teacherAttendances);
 		}
-		
-		//更新班级信息
+
+		// 更新班级信息
 		classGroupService.updateClassGroupInfo(classGroupId);
-		
+
 		return true;
 	}
 

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/TeacherDefaultPracticeGroupSalaryMapper.xml

@@ -100,6 +100,14 @@
 	<select id="queryByUserId" resultMap="TeacherDefaultPracticeGroupSalary">
 		SELECT * FROM teacher_default_practice_group_salary where user_id_ = #{userId} ORDER BY id_
 	</select>
+
+	<select id="queryByUserIdList" resultMap="TeacherDefaultPracticeGroupSalary">
+		SELECT * FROM teacher_default_practice_group_salary where ser_id_ IN
+		<foreach collection="userIdList" item="userId" open="(" close=")" separator=",">
+			#{userId}
+		</foreach>
+		ORDER BY id_
+	</select>
 	<select id="findByTeacherAndCourseMinutes" resultMap="TeacherDefaultPracticeGroupSalary">
 		SELECT * FROM teacher_default_practice_group_salary where user_id_ = #{userId} AND minutes_=#{minutes}
 	</select>

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

@@ -1,18 +1,50 @@
 package com.ym.mec.web.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.BatchInsertCoursesDto;
 import com.ym.mec.biz.dal.dto.CoursePostponeDto;
 import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
 import com.ym.mec.biz.dal.dto.VipGroupCourseAdjustInfoDto;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.PracticeGroupQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleComplaintsService;
@@ -21,22 +53,6 @@ import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.models.auth.In;
-import org.apache.commons.lang.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @Author Joburgess
@@ -266,6 +282,16 @@ public class CourseScheduleController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "批量新增")
+    @PostMapping("/batchAddCourses")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAddCourses')")
+    public Object batchAddCourses(@RequestBody BatchInsertCoursesDto batchInsertCoursesDto){
+		scheduleService.batchAddCourseSchedule(batchInsertCoursesDto.getClassGroupId(), batchInsertCoursesDto.getCoursesTimes(),
+				batchInsertCoursesDto.getStartDate(), batchInsertCoursesDto.getTeachingArrangementList(), batchInsertCoursesDto.getTeachMode(),
+				batchInsertCoursesDto.getType(), batchInsertCoursesDto.getSchoolId(), batchInsertCoursesDto.getIsJumpHoliday());
+        return succeed();
+    }
+
     @ApiOperation(value = "终极课表获取")
     @GetMapping("/superFindCourseSchedules")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/superFindCourseSchedules')")