|  | @@ -3,7 +3,8 @@ 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.*;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.PracticeGroupType.FREE;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.PracticeGroupType.TRIAL;
 | 
	
		
			
				|  |  |  import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.lang.reflect.InvocationTargetException;
 | 
	
	
		
			
				|  | @@ -13,24 +14,26 @@ import java.text.SimpleDateFormat;
 | 
	
		
			
				|  |  |  import java.time.LocalDate;
 | 
	
		
			
				|  |  |  import java.time.LocalDateTime;
 | 
	
		
			
				|  |  |  import java.time.LocalTime;
 | 
	
		
			
				|  |  | -import java.util.*;
 | 
	
		
			
				|  |  | +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.Optional;
 | 
	
		
			
				|  |  | +import java.util.Set;
 | 
	
		
			
				|  |  | +import java.util.TreeSet;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  import java.util.stream.Stream;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -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.enums.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.event.source.SendSeoMessageSource;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.common.controller.BaseController;
 | 
	
		
			
				|  |  | -import com.ym.mec.common.entity.HttpResponseResult;
 | 
	
		
			
				|  |  | -import com.ym.mec.common.page.WrapperUtil;
 | 
	
		
			
				|  |  | -import com.ym.mec.common.tenant.TenantContextHolder;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  import org.apache.commons.collections.ListUtils;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | -import org.codehaus.jackson.map.util.BeanUtil;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  |  import org.springframework.beans.BeanUtils;
 | 
	
	
		
			
				|  | @@ -47,21 +50,148 @@ 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.ActivityUserMapperDao;
 | 
	
		
			
				|  |  | +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.PracticeGroupSellPriceDao;
 | 
	
		
			
				|  |  | +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.VipGroupActivityDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.BatchCourseAdjustDto;
 | 
	
		
			
				|  |  | +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.CourseMergeDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CoursePostponeDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CourseRepeatCheckDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CourseScheduleEndDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CourseSchedulePlanDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.CourseScheduleRateDto;
 | 
	
		
			
				|  |  | +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.PracticeCourseDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.SimpleUserDto;
 | 
	
		
			
				|  |  | +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.ActivityUserMapper;
 | 
	
		
			
				|  |  | +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.CourseGenerateDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseSchedule;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseScheduleAuditDetailDto;
 | 
	
		
			
				|  |  | +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.MusicGroupTrainPlan;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.PracticeGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.PracticeGroupSellPrice;
 | 
	
		
			
				|  |  | +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.TenantConfig;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.TenantConfigDetail;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroupActivity;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroupCategory;
 | 
	
		
			
				|  |  | +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.GroupStatusEnum;
 | 
	
		
			
				|  |  | +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.PracticeGroupType;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
 | 
	
		
			
				|  |  | +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.CourseEventSource;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.event.source.SendSeoMessageSource;
 | 
	
		
			
				|  |  | +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.ImGroupMemberService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.ImUserFriendService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.MusicGroupService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.MusicGroupTrainPlanService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.PracticeGroupService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.StudentServeService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysConfigService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysMessageService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysTenantConfigService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.TenantAssetsInfoService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.TenantConfigService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.VipGroupService;
 | 
	
		
			
				|  |  | +import com.ym.mec.common.controller.BaseController;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.dal.BaseDAO;
 | 
	
		
			
				|  |  | +import com.ym.mec.common.entity.HttpResponseResult;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.entity.ImGroupMember;
 | 
	
		
			
				|  |  | -import com.ym.mec.common.entity.ImGroupModel;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.exception.BizException;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.page.PageInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.page.QueryInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.common.page.WrapperUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.service.impl.BaseServiceImpl;
 | 
	
		
			
				|  |  | -import com.ym.mec.im.ImFeignService;
 | 
	
		
			
				|  |  | +import com.ym.mec.common.tenant.TenantContextHolder;
 | 
	
		
			
				|  |  |  import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.ListUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.MapUtil;
 | 
	
	
		
			
				|  | @@ -1558,7 +1688,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		Date startDateTime = existCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get().getStartClassTime();
 | 
	
		
			
				|  |  | +		/*Date startDateTime = existCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get().getStartClassTime();
 | 
	
		
			
				|  |  |  		Date endDateTime = existCourses.stream().min(Comparator.comparing(CourseSchedule::getEndClassTime)).get().getEndClassTime();
 | 
	
		
			
				|  |  |  		if(PRACTICE.equals(existCourses.get(0).getGroupType())){
 | 
	
		
			
				|  |  |  			PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(existCourses.get(0).getMusicGroupId()));
 | 
	
	
		
			
				|  | @@ -1570,7 +1700,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  					throw new BizException("调整失败: 截止时间超过课程有效期");
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		}*/
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		checkNewCourseSchedules(existCourses, false,false);
 | 
	
		
			
				|  |  |  		courseScheduleDao.batchUpdate(existCourses);
 |