|  | @@ -1,21 +1,154 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.GroupType.MUSIC;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.GroupType.VIP;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.PracticeGroupType.CHARGE;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.PracticeGroupType.FREE;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.PracticeGroupType.TRIAL;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.lang.reflect.InvocationTargetException;
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.text.SimpleDateFormat;
 | 
	
		
			
				|  |  | +import java.time.LocalDate;
 | 
	
		
			
				|  |  | +import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.Arrays;
 | 
	
		
			
				|  |  | +import java.util.Calendar;
 | 
	
		
			
				|  |  | +import java.util.Collection;
 | 
	
		
			
				|  |  | +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.Objects;
 | 
	
		
			
				|  |  | +import java.util.Set;
 | 
	
		
			
				|  |  | +import java.util.TreeSet;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | +import java.util.stream.Stream;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import org.apache.commons.collections.ListUtils;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import org.slf4j.Logger;
 | 
	
		
			
				|  |  | +import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | +import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.context.annotation.Lazy;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Propagation;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | +import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUserRole;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dto.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.ClassGroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.ClassGroupTeacherSalaryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleModifyLogDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleReviewDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CoursesGroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CoursesGroupModifyLogDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.GroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.MusicGroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.PracticeGroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.SchoolDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.SubjectDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.SysConfigDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TeacherDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TeacherDefaultPracticeGroupSalaryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.BatchInsertCoursesDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 | 
	
		
			
				|  |  | +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.CourseScheduleRateDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CourseScheduleStudentDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CourseTimeDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.Mapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.TeacherRemarkCommitDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupCourseAdjustInfoDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.ClassGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseGenerateDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseSchedule;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseScheduleModifyLog;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseScheduleReview;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CoursesGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CoursesGroupModifyLog;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.Group;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.MusicGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.PracticeGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.School;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.StudentAttendance;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.Subject;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.SysConfig;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.Teacher;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.TeacherAttendance;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.TeacherDefaultPracticeGroupSalary;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.GroupType;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.ParamEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.TeachModeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.event.source.StudentEventSource;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.ClassGroupService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.CourseHomeworkService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.CourseScheduleService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.MusicGroupService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.PracticeGroupService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysConfigService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysMessageService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.VipGroupService;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.dal.BaseDAO;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.entity.ImGroupMember;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.entity.ImGroupModel;
 | 
	
	
		
			
				|  | @@ -29,30 +162,6 @@ import com.ym.mec.util.collection.ListUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.MapUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.date.DateUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.json.JsonUtil;
 | 
	
		
			
				|  |  | -import org.apache.commons.collections.ListUtils;
 | 
	
		
			
				|  |  | -import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | -import org.slf4j.Logger;
 | 
	
		
			
				|  |  | -import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | -import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  | -import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | -import org.springframework.context.annotation.Bean;
 | 
	
		
			
				|  |  | -import org.springframework.context.annotation.Lazy;
 | 
	
		
			
				|  |  | -import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -import org.springframework.transaction.annotation.Propagation;
 | 
	
		
			
				|  |  | -import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | -import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import java.lang.reflect.InvocationTargetException;
 | 
	
		
			
				|  |  | -import java.math.BigDecimal;
 | 
	
		
			
				|  |  | -import java.text.SimpleDateFormat;
 | 
	
		
			
				|  |  | -import java.time.LocalDate;
 | 
	
		
			
				|  |  | -import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | -import java.util.*;
 | 
	
		
			
				|  |  | -import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | -import java.util.stream.Stream;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import static com.ym.mec.biz.dal.enums.GroupType.*;
 | 
	
		
			
				|  |  | -import static com.ym.mec.biz.dal.enums.PracticeGroupType.*;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSchedule> implements CourseScheduleService {
 | 
	
	
		
			
				|  | @@ -472,13 +581,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  					String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -					dateYmdStr = dateYmdStr + " " + courseTimeDto.getStartClassTime();
 | 
	
		
			
				|  |  | -					Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
 | 
	
		
			
				|  |  | +					String startTimeStr = dateYmdStr + " " + courseTimeDto.getStartClassTime();
 | 
	
		
			
				|  |  | +					Date courseStartTime = DateUtil.stringToDate(startTimeStr, "yyyy-MM-dd HH:mm");
 | 
	
		
			
				|  |  |  					courseSchedule.setStartClassTime(courseStartTime);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  					if (StringUtils.isNotBlank(courseTimeDto.getEndClassTime())) {
 | 
	
		
			
				|  |  | -						dateYmdStr = dateYmdStr + " " + courseTimeDto.getEndClassTime();
 | 
	
		
			
				|  |  | -						Date courseEndTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
 | 
	
		
			
				|  |  | +						String endTimeStr = dateYmdStr + " " + courseTimeDto.getEndClassTime();
 | 
	
		
			
				|  |  | +						Date courseEndTime = DateUtil.stringToDate(endTimeStr, "yyyy-MM-dd HH:mm");
 | 
	
		
			
				|  |  |  						courseSchedule.setEndClassTime(courseEndTime);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  						if (courseEndTime.before(courseStartTime)) {
 | 
	
	
		
			
				|  | @@ -1750,8 +1859,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |                                  ||!preCourseSchedule.getEndClassTime().after(backCourseSchedule.getStartClassTime())) {
 | 
	
		
			
				|  |  |                              continue;
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | -                        if (!checkExistCourseSchedule
 | 
	
		
			
				|  |  | -                                && !courseScheduleIdsSet.contains(backCourseSchedule.getId())) {
 | 
	
		
			
				|  |  | +                        if (preCourseSchedule.equals(backCourseSchedule)) {
 | 
	
		
			
				|  |  |                              continue;
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2103,7 +2211,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          newNode:
 | 
	
		
			
				|  |  |          for (CourseSchedule newCourseSchedule : courseSchedules) {
 | 
	
		
			
				|  |  | -            for (CourseSchedule existCourseSchedule : existCourseSchedules) {
 | 
	
		
			
				|  |  | +            for (CourseSchedule existCourseSchedule : allCourseSchedules) {
 | 
	
		
			
				|  |  |                  if (newCourseSchedule.getEndClassTime().compareTo(existCourseSchedule.getStartClassTime()) <= 0) {
 | 
	
		
			
				|  |  |                      continue newNode;
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -2111,6 +2219,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |                      continue;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                if(newCourseSchedule.equals(existCourseSchedule)){
 | 
	
		
			
				|  |  | +                	continue;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  boolean isTeacherRepeat = false;
 | 
	
		
			
				|  |  |                  boolean isStudentRepeat = false;
 | 
	
		
			
				|  |  |                  //检测老师冲突
 | 
	
	
		
			
				|  | @@ -2168,7 +2280,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |                      continue;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                if (existCourseSchedule.getClassGroupType().equals(ClassGroupTypeEnum.SNAP.getCode()) || existCourseSchedule.getClassGroupType().equals(ClassGroupTypeEnum.VIP.getCode())) {
 | 
	
		
			
				|  |  | +                if (ClassGroupTypeEnum.SNAP.getCode().equals(existCourseSchedule.getClassGroupType()) || ClassGroupTypeEnum.VIP.getCode().equals(existCourseSchedule.getClassGroupType())) {
 | 
	
		
			
				|  |  |                      throw new BizException(courseCheckInfo(newCourseSchedule, existCourseSchedule, existCourseScheduleIds, isTeacherRepeat?1:3));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2218,13 +2330,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          errInfo.append("安排的课程存在冲突,");
 | 
	
		
			
				|  |  |          errInfo.append("冲突课程为:");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (Objects.isNull(preCourseSchedule.getId()) && Objects.isNull(backCourseSchedule.getId())) {
 | 
	
		
			
				|  |  | -            errInfo.setLength(0);
 | 
	
		
			
				|  |  | -            errInfo.append("您设置的循环周期存在时间冲突");
 | 
	
		
			
				|  |  | -            return errInfo.toString();
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        CourseSchedule courseSchedule = new CourseSchedule();
 | 
	
		
			
				|  |  | +        CourseSchedule courseSchedule = null;
 | 
	
		
			
				|  |  |          if (Objects.nonNull(preCourseSchedule.getId()) && existCourseScheduleIds.contains(preCourseSchedule.getId())) {
 | 
	
		
			
				|  |  |              courseSchedule = preCourseSchedule;
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -2232,6 +2338,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |              courseSchedule = backCourseSchedule;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		if (Objects.isNull(courseSchedule)) {
 | 
	
		
			
				|  |  | +			errInfo.setLength(0);
 | 
	
		
			
				|  |  | +			errInfo.append("您设置的循环周期存在时间冲突");
 | 
	
		
			
				|  |  | +			return errInfo.toString();
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          String groupName = "";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (Objects.nonNull(courseSchedule.getId())) {
 | 
	
	
		
			
				|  | @@ -2984,7 +3096,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  			// 修改了主教/助教/课程状态,需修改考勤记录
 | 
	
		
			
				|  |  |  			List<TeacherAttendance> teacherAttendanceList = teacherAttendanceMap.get(courseScheduleId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			List<Integer> oldTeacherIdList = teacherAttendanceList.stream().map(TeacherAttendance::getTeacherId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  | +			List<Integer> oldTeacherIdList = new ArrayList<Integer>();
 | 
	
		
			
				|  |  | +			if(teacherAttendanceList != null){
 | 
	
		
			
				|  |  | +				oldTeacherIdList = teacherAttendanceList.stream().map(TeacherAttendance::getTeacherId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |              List<Integer> newTeacherIdList = new ArrayList<>();
 | 
	
		
			
				|  |  |              newTeacherIdList.addAll(newCourseSchedule.getTeachingTeacherIdList());
 | 
	
		
			
				|  |  |              newTeacherIdList.add(newCourseSchedule.getActualTeacherId());
 |