|
@@ -1606,6 +1606,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
if(StringUtils.isBlank(courseAdjustInfo.getCourseScheduleIds())){
|
|
|
throw new BizException("请指定课程");
|
|
|
}
|
|
|
+ if(Objects.isNull(courseAdjustInfo.getCourseCreateStartTime())){
|
|
|
+ throw new BizException("请指定课程调整起始时间");
|
|
|
+ }
|
|
|
if(Objects.isNull(courseAdjustInfo.getCourseTimes())){
|
|
|
throw new BizException("请指定课程调整周期");
|
|
|
}
|
|
@@ -1634,72 +1637,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
}
|
|
|
return null;
|
|
|
}));
|
|
|
+
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(courseAdjustInfo.getCourseCreateStartTime());
|
|
|
List<Date> courseStartDates = new ArrayList<>();
|
|
|
|
|
|
Set<String> holidayDays = new HashSet<>();
|
|
|
- Integer tenantId = TenantContextHolder.getTenantId();
|
|
|
- if (courseAdjustInfo.isHoliday()) {
|
|
|
- String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId);
|
|
|
- if(StringUtils.isNotBlank(holidaySetting)){
|
|
|
- holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
|
|
|
- }
|
|
|
+ Integer tenantId = TenantContextHolder.getTenantId();
|
|
|
+ if (courseAdjustInfo.isHoliday()) {
|
|
|
+ String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId);
|
|
|
+ if(StringUtils.isNotBlank(holidaySetting)){
|
|
|
+ holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
Map<String, List<CourseSchedule>> result = new HashMap<String, List<CourseSchedule>>(){{
|
|
|
put("normal", new ArrayList<>());
|
|
|
put("revise", new ArrayList<>());
|
|
|
put("failed", new ArrayList<>());
|
|
|
}};
|
|
|
- while (true) {
|
|
|
- for (CourseTimeDto courseTime : courseAdjustInfo.getCourseTimes()) {
|
|
|
- if(courseTime.getCourseCreateStartTime() == null){
|
|
|
- courseTime.setCourseCreateStartTime(courseAdjustInfo.getCourseCreateStartTime());
|
|
|
- }
|
|
|
- if (courseTime.getCalendar() == null) {
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- calendar.setTime(courseTime.getCourseCreateStartTime());
|
|
|
- courseTime.setCalendar(calendar);
|
|
|
- }
|
|
|
- while (courseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(courseTime.getCalendar().getTime(), "yyyy-MM-dd"))) {
|
|
|
- courseTime.getCalendar().add(Calendar.DATE, courseTime.getIntervalDays());
|
|
|
- }
|
|
|
- String dateYmdStr = DateUtil.dateToString(courseTime.getCalendar().getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
- dateYmdStr = dateYmdStr + " " + courseTime.getStartClassTime();
|
|
|
- Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
|
|
|
|
|
|
- if (courseStartTime.compareTo(now) <= 0) {
|
|
|
- throw new BizException("课程调整时间不得小于当前时间");
|
|
|
- }
|
|
|
-
|
|
|
- courseStartDates.add(DateUtil.stringToDate(dateYmdStr, DateUtil.EXPANDED_DATE_TIME_FORMAT));
|
|
|
- CourseSchedule currentCourseSchedule = courseSchedules.get(courseStartDates.size() - 1);
|
|
|
- int singleClassMinutes = DateUtil.minutesBetween(currentCourseSchedule.getStartClassTime(), currentCourseSchedule.getEndClassTime());
|
|
|
- Date courseEndTime = DateUtil.addMinutes(courseStartTime, singleClassMinutes);
|
|
|
- //校验课程是否结算
|
|
|
- this.checkCourseIsSettlement(currentCourseSchedule);
|
|
|
- int num = studentAttendanceDao.countStudentAttendenceNum(currentCourseSchedule.getId().intValue());
|
|
|
- if (num > 0) {
|
|
|
- throw new BizException("{}[{}]{}-{}课程已点名",
|
|
|
- currentCourseSchedule.getName(),
|
|
|
- currentCourseSchedule.getId(),
|
|
|
- DateUtil.dateToString(currentCourseSchedule.getStartClassTime(),
|
|
|
- DateUtil.EXPANDED_DATE_TIME_FORMAT),
|
|
|
- DateUtil.dateToString(currentCourseSchedule.getEndClassTime(),
|
|
|
- DateUtil.EXPANDED_DATE_TIME_FORMAT));
|
|
|
- }
|
|
|
- currentCourseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
- currentCourseSchedule.setClassDate(courseStartTime);
|
|
|
- currentCourseSchedule.setStartClassTime(courseStartTime);
|
|
|
- currentCourseSchedule.setEndClassTime(courseEndTime);
|
|
|
- courseTime.getCalendar().add(Calendar.DATE, courseTime.getIntervalDays());
|
|
|
- if (courseStartDates.size() == adjustCourseScheduleIds.size()) {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (courseStartDates.size() == adjustCourseScheduleIds.size()) {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-/*
|
|
|
while (true) {
|
|
|
if (courseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
|
|
|
calendar.add(Calendar.DATE, 1);
|
|
@@ -1756,7 +1713,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
break;
|
|
|
}
|
|
|
calendar.add(Calendar.DATE, 1);
|
|
|
- }*/
|
|
|
+ }
|
|
|
for (CourseSchedule courseSchedule : courseSchedules) {
|
|
|
boolean b = checkSingleCourseConflict(courseSchedule, courseSchedules, result);
|
|
|
if(!b){
|
|
@@ -2367,37 +2324,37 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo) {
|
|
|
- SysUser user = sysUserService.getUser();
|
|
|
- if (Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())) {
|
|
|
- throw new BizException("请指定课程");
|
|
|
- }
|
|
|
-// if (Objects.isNull(vipGroupCourseAdjustInfo.getCourseCreateStartTime())) {
|
|
|
-// throw new BizException("请指定排课起始时间;");
|
|
|
-// }
|
|
|
- if (CollectionUtils.isEmpty(vipGroupCourseAdjustInfo.getCourseTimes())) {
|
|
|
- throw new BizException("请指定排课周期");
|
|
|
- }
|
|
|
- if (StringUtils.isBlank(vipGroupCourseAdjustInfo.getCourseScheduleIds())) {
|
|
|
- throw new BizException("请指定需要调整的课程");
|
|
|
- }
|
|
|
-// Date courseCreateStartTime = vipGroupCourseAdjustInfo.getCourseCreateStartTime();
|
|
|
- Date now = new Date();
|
|
|
- Date today = DateUtil.stringToDate(DateUtil.dateToString(now, DateUtil.ISO_EXPANDED_DATE_FORMAT),
|
|
|
- DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
- if (courseCreateStartTime.before(today)) {
|
|
|
- throw new BizException("排课起始时间不能小于当前时间");
|
|
|
- }
|
|
|
+ SysUser user = sysUserService.getUser();
|
|
|
+ if (Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())) {
|
|
|
+ throw new BizException("请指定课程");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(vipGroupCourseAdjustInfo.getCourseCreateStartTime())) {
|
|
|
+ throw new BizException("请指定排课起始时间;");
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isEmpty(vipGroupCourseAdjustInfo.getCourseTimes())) {
|
|
|
+ throw new BizException("请指定排课周期");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(vipGroupCourseAdjustInfo.getCourseScheduleIds())) {
|
|
|
+ throw new BizException("请指定需要调整的课程");
|
|
|
+ }
|
|
|
+ Date courseCreateStartTime = vipGroupCourseAdjustInfo.getCourseCreateStartTime();
|
|
|
+ Date now = new Date();
|
|
|
+ Date today = DateUtil.stringToDate(DateUtil.dateToString(now, DateUtil.ISO_EXPANDED_DATE_FORMAT),
|
|
|
+ DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
+ if (courseCreateStartTime.before(today)) {
|
|
|
+ throw new BizException("排课起始时间不能小于当前时间");
|
|
|
+ }
|
|
|
|
|
|
- boolean needSchoolId = Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode()) && vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE) && Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId());
|
|
|
- if (needSchoolId) {
|
|
|
- throw new BizException("请设置教学点");
|
|
|
- }
|
|
|
+ boolean needSchoolId = Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode()) && vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE) && Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId());
|
|
|
+ if (needSchoolId) {
|
|
|
+ throw new BizException("请设置教学点");
|
|
|
+ }
|
|
|
|
|
|
- int singleClassMinutes = 0;
|
|
|
- int courseNum = 0;
|
|
|
- Date coursesExpireDate = null;
|
|
|
- Date coursesStartDate = null;
|
|
|
- GroupType groupType = vipGroupCourseAdjustInfo.getGroupType();
|
|
|
+ int singleClassMinutes = 0;
|
|
|
+ int courseNum = 0;
|
|
|
+ Date coursesExpireDate = null;
|
|
|
+ Date coursesStartDate = null;
|
|
|
+ GroupType groupType = vipGroupCourseAdjustInfo.getGroupType();
|
|
|
|
|
|
VipGroup vipGroup=null;
|
|
|
VipGroupActivity vipGroupActivity = null;
|
|
@@ -2410,203 +2367,116 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
}
|
|
|
|
|
|
- switch (vipGroupCourseAdjustInfo.getGroupType()){
|
|
|
- case PRACTICE:
|
|
|
- PracticeGroup practiceGroup = practiceGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
|
|
|
- if (Objects.isNull(practiceGroup)) {
|
|
|
- throw new BizException("指定课程不存在");
|
|
|
- }
|
|
|
- singleClassMinutes = practiceGroup.getSingleClassMinutes();
|
|
|
- courseNum = courseScheduleDao.countVipGroupCourses(practiceGroup.getId().intValue(),groupType.getCode());
|
|
|
- coursesExpireDate = practiceGroup.getCoursesExpireDate();
|
|
|
- coursesStartDate = practiceGroup.getCoursesStartDate();
|
|
|
- break;
|
|
|
- default:
|
|
|
- if (Objects.isNull(vipGroup)) {
|
|
|
- throw new BizException("指定课程不存在");
|
|
|
- }
|
|
|
+ switch (vipGroupCourseAdjustInfo.getGroupType()){
|
|
|
+ case PRACTICE:
|
|
|
+ PracticeGroup practiceGroup = practiceGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
|
|
|
+ if (Objects.isNull(practiceGroup)) {
|
|
|
+ throw new BizException("指定课程不存在");
|
|
|
+ }
|
|
|
+ singleClassMinutes = practiceGroup.getSingleClassMinutes();
|
|
|
+ courseNum = courseScheduleDao.countVipGroupCourses(practiceGroup.getId().intValue(),groupType.getCode());
|
|
|
+ coursesExpireDate = practiceGroup.getCoursesExpireDate();
|
|
|
+ coursesStartDate = practiceGroup.getCoursesStartDate();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ if (Objects.isNull(vipGroup)) {
|
|
|
+ throw new BizException("指定课程不存在");
|
|
|
+ }
|
|
|
if(Objects.nonNull(vipGroup)
|
|
|
&&!VipGroupStatusEnum.PROGRESS.equals(vipGroup.getStatus())
|
|
|
&&!VipGroupStatusEnum.FINISHED.equals(vipGroup.getStatus())){
|
|
|
throw new BizException("非进行中课程组不允许进行此操作");
|
|
|
}
|
|
|
- singleClassMinutes = vipGroup.getSingleClassMinutes();
|
|
|
- courseNum = courseScheduleDao.countVipGroupCourses(vipGroup.getId().intValue(),groupType.getCode());
|
|
|
- }
|
|
|
- if (courseNum == 0) {
|
|
|
- throw new BizException("未排课的课程不能进行调整");
|
|
|
- }
|
|
|
+ singleClassMinutes = vipGroup.getSingleClassMinutes();
|
|
|
+ courseNum = courseScheduleDao.countVipGroupCourses(vipGroup.getId().intValue(),groupType.getCode());
|
|
|
+ }
|
|
|
+ if (courseNum == 0) {
|
|
|
+ throw new BizException("未排课的课程不能进行调整");
|
|
|
+ }
|
|
|
|
|
|
- ClassGroup classGroup = classGroupDao.findByGroupAndType(vipGroupCourseAdjustInfo.getVipGroupId().toString(),groupType.getCode());
|
|
|
- if (Objects.isNull(classGroup)) {
|
|
|
- throw new BizException("对应班级不存在");
|
|
|
- }
|
|
|
+ ClassGroup classGroup = classGroupDao.findByGroupAndType(vipGroupCourseAdjustInfo.getVipGroupId().toString(),groupType.getCode());
|
|
|
+ if (Objects.isNull(classGroup)) {
|
|
|
+ throw new BizException("对应班级不存在");
|
|
|
+ }
|
|
|
|
|
|
- //所有课程编号
|
|
|
- List<Long> courseScheduleIds = Arrays.asList(vipGroupCourseAdjustInfo.getCourseScheduleIds().split(","))
|
|
|
- .stream().map(Long::parseLong).collect(Collectors.toList());
|
|
|
- //所有的课程
|
|
|
- List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
|
|
|
+ //所有课程编号
|
|
|
+ List<Long> courseScheduleIds = Arrays.asList(vipGroupCourseAdjustInfo.getCourseScheduleIds().split(","))
|
|
|
+ .stream().map(Long::parseLong).collect(Collectors.toList());
|
|
|
+ //所有的课程
|
|
|
+ List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
|
|
|
//校验可排课时间
|
|
|
this.checkLiveAdjust(courseSchedules);
|
|
|
//校验机构线上课人数上限
|
|
|
this.checkOnlineCategory(courseSchedules,vipGroupCourseAdjustInfo.getTeachMode());
|
|
|
- courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
|
|
|
+ courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
|
|
|
//拷贝历史直播课
|
|
|
List<CourseSchedule> liveCourseSchedules = JSON.parseArray(JSON.toJSONString(courseSchedules),CourseSchedule.class);
|
|
|
//获取操作日志
|
|
|
List<CourseScheduleModifyLog> modifyLogs = getModifyLogs(courseScheduleIds, courseSchedules, user.getId(), now);
|
|
|
|
|
|
- if (courseScheduleIds.size() != courseScheduleIds.size()) {
|
|
|
- throw new BizException("部分课程不存在");
|
|
|
- }
|
|
|
+ if (courseScheduleIds.size() != courseScheduleIds.size()) {
|
|
|
+ throw new BizException("部分课程不存在");
|
|
|
+ }
|
|
|
|
|
|
-// Calendar calendar = Calendar.getInstance();
|
|
|
-// calendar.setTime(courseCreateStartTime);
|
|
|
- List<Date> courseStartDates = new ArrayList<>();
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(courseCreateStartTime);
|
|
|
+ List<Date> courseStartDates = new ArrayList<>();
|
|
|
|
|
|
Set<String> holidayDays = new HashSet<>();
|
|
|
|
|
|
- Integer tenantId = TenantContextHolder.getTenantId();
|
|
|
- if (vipGroupCourseAdjustInfo.isHoliday()) {
|
|
|
- String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId);
|
|
|
- if(StringUtils.isNotBlank(holidaySetting)){
|
|
|
- holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
|
|
|
- }
|
|
|
+ Integer tenantId = TenantContextHolder.getTenantId();
|
|
|
+ if (vipGroupCourseAdjustInfo.isHoliday()) {
|
|
|
+ String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING,tenantId);
|
|
|
+ if(StringUtils.isNotBlank(holidaySetting)){
|
|
|
+ holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
while (true) {
|
|
|
+ if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
|
|
|
+ calendar.add(Calendar.DATE, 1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ int i = calendar.get(Calendar.DAY_OF_WEEK);
|
|
|
+ if (i == 1) {
|
|
|
+ i = 7;
|
|
|
+ } else {
|
|
|
+ i = i - 1;
|
|
|
+ }
|
|
|
for (CourseTimeDto courseTime : vipGroupCourseAdjustInfo.getCourseTimes()) {
|
|
|
- if(courseTime.getCourseCreateStartTime() == null){
|
|
|
- courseTime.setCourseCreateStartTime(vipGroupCourseAdjustInfo.getCourseCreateStartTime());
|
|
|
- }
|
|
|
- if (courseTime.getCourseCreateStartTime().before(today)) {
|
|
|
- throw new BizException("排课起始时间不能小于当前时间");
|
|
|
- }
|
|
|
- if (courseTime.getCalendar() == null) {
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- calendar.setTime(courseTime.getCourseCreateStartTime());
|
|
|
- courseTime.setCalendar(calendar);
|
|
|
- }
|
|
|
- while (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(courseTime.getCalendar().getTime(), "yyyy-MM-dd"))) {
|
|
|
- courseTime.getCalendar().add(Calendar.DATE, courseTime.getIntervalDays());
|
|
|
- }
|
|
|
- String dateYmdStr = DateUtil.dateToString(courseTime.getCalendar().getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
- dateYmdStr = dateYmdStr + " " + courseTime.getStartClassTime();
|
|
|
- Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
|
|
|
- Date courseEndTime = DateUtil.addMinutes(courseStartTime, singleClassMinutes);
|
|
|
- if(DateUtil.daysBetween(DateUtil.stringToDate(DateUtil.format(courseStartTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN),
|
|
|
- DateUtil.stringToDate(DateUtil.format(courseEndTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN)) > 0){
|
|
|
- throw new BizException("单节课时不允许跨天");
|
|
|
- }
|
|
|
- courseStartDates.add(DateUtil.stringToDate(dateYmdStr, DateUtil.EXPANDED_DATE_TIME_FORMAT));
|
|
|
- CourseSchedule courseSchedule = courseSchedules.get(courseStartDates.size() - 1);
|
|
|
- //校验课程是否结算
|
|
|
- this.checkCourseIsSettlement(courseSchedule);
|
|
|
- int num = studentAttendanceDao.countStudentAttendenceNum(courseSchedule.getId().intValue());
|
|
|
- if (num > 0) {
|
|
|
- throw new BizException("{}[{}]{}-{}课程已点名",
|
|
|
- courseSchedule.getName(),
|
|
|
- courseSchedule.getId(),
|
|
|
- DateUtil.dateToString(courseSchedule.getStartClassTime(),
|
|
|
- DateUtil.EXPANDED_DATE_TIME_FORMAT),
|
|
|
- DateUtil.dateToString(courseSchedule.getEndClassTime(),
|
|
|
- DateUtil.EXPANDED_DATE_TIME_FORMAT));
|
|
|
+ if (Objects.isNull(courseTime.getDayOfWeek())) {
|
|
|
+ throw new BizException("排课循环周期错误");
|
|
|
}
|
|
|
- courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
- courseSchedule.setClassDate(courseStartTime);
|
|
|
- courseSchedule.setStartClassTime(courseStartTime);
|
|
|
- courseSchedule.setEndClassTime(courseEndTime);
|
|
|
-
|
|
|
- Integer allowOnlineToOffline = 0;
|
|
|
- if(Objects.nonNull(vipGroupActivity)){
|
|
|
- allowOnlineToOffline = vipGroupActivity.getAllowOnlineToOffline();
|
|
|
- ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(vipGroup.getId(), "VIP",null);
|
|
|
- if(activityUserMapper != null){
|
|
|
- if(vipGroup.getId().equals(activityUserMapper.getGiveVipGroupId())){
|
|
|
- allowOnlineToOffline = vipGroupActivity.getGiveAllowOnlineToOffline();
|
|
|
- }
|
|
|
- }
|
|
|
+ if (courseTime.getDayOfWeek() < 1 || courseTime.getDayOfWeek() > 7) {
|
|
|
+ throw new BizException("排课循环周期错误");
|
|
|
}
|
|
|
-
|
|
|
- if (Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode())) {
|
|
|
- boolean onlineToOffline = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
|
|
|
- &&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE);
|
|
|
- boolean offlineToOnline = courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
|
|
|
- &&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.ONLINE);
|
|
|
- if(onlineToOffline && Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){
|
|
|
- throw new BizException("此VIP课活动不支持线上课调整为线下课");
|
|
|
- }
|
|
|
- if(offlineToOnline&&Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 2 || allowOnlineToOffline == 3)){
|
|
|
- throw new BizException("此VIP课活动不支持线下课调整为线上课");
|
|
|
- }
|
|
|
- if(onlineToOffline&&Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId())){
|
|
|
- throw new BizException("请选择教学点");
|
|
|
- }
|
|
|
- courseSchedule.setTeachMode(vipGroupCourseAdjustInfo.getTeachMode());
|
|
|
- if (vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)) {
|
|
|
- if(Objects.nonNull(vipGroupCourseAdjustInfo.getSchoolId())){
|
|
|
- courseSchedule.setSchoolId(vipGroupCourseAdjustInfo.getSchoolId());
|
|
|
- }
|
|
|
- } else {
|
|
|
- courseSchedule.setSchoolId(null);
|
|
|
+ if (courseTime.getDayOfWeek() == i) {
|
|
|
+ String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
+ dateYmdStr = dateYmdStr + " " + courseTime.getStartClassTime();
|
|
|
+ Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
|
|
|
+ Date courseEndTime = DateUtil.addMinutes(courseStartTime, singleClassMinutes);
|
|
|
+ if(DateUtil.daysBetween(DateUtil.stringToDate(DateUtil.format(courseStartTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN),
|
|
|
+ DateUtil.stringToDate(DateUtil.format(courseEndTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN)) > 0){
|
|
|
+ throw new BizException("单节课时不允许跨天");
|
|
|
}
|
|
|
- }
|
|
|
- courseTime.getCalendar().add(Calendar.DATE, courseTime.getIntervalDays());
|
|
|
- if (courseStartDates.size() == courseScheduleIds.size()) {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (courseStartDates.size() == courseScheduleIds.size()) {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /*while (true) {
|
|
|
- if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.contains(DateUtil.format(calendar.getTime(), "yyyy-MM-dd"))) {
|
|
|
- calendar.add(Calendar.DATE, 1);
|
|
|
- continue;
|
|
|
- }
|
|
|
- int i = calendar.get(Calendar.DAY_OF_WEEK);
|
|
|
- if (i == 1) {
|
|
|
- i = 7;
|
|
|
- } else {
|
|
|
- i = i - 1;
|
|
|
- }
|
|
|
- for (CourseTimeDto courseTime : vipGroupCourseAdjustInfo.getCourseTimes()) {
|
|
|
- if (Objects.isNull(courseTime.getDayOfWeek())) {
|
|
|
- throw new BizException("排课循环周期错误");
|
|
|
- }
|
|
|
- if (courseTime.getDayOfWeek() < 1 || courseTime.getDayOfWeek() > 7) {
|
|
|
- throw new BizException("排课循环周期错误");
|
|
|
- }
|
|
|
- if (courseTime.getDayOfWeek() == i) {
|
|
|
- String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
- dateYmdStr = dateYmdStr + " " + courseTime.getStartClassTime();
|
|
|
- Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
|
|
|
- Date courseEndTime = DateUtil.addMinutes(courseStartTime, singleClassMinutes);
|
|
|
- if(DateUtil.daysBetween(DateUtil.stringToDate(DateUtil.format(courseStartTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN),
|
|
|
- DateUtil.stringToDate(DateUtil.format(courseEndTime,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN)) > 0){
|
|
|
- throw new BizException("单节课时不允许跨天");
|
|
|
- }
|
|
|
- courseStartDates.add(DateUtil.stringToDate(dateYmdStr, DateUtil.EXPANDED_DATE_TIME_FORMAT));
|
|
|
+ courseStartDates.add(DateUtil.stringToDate(dateYmdStr, DateUtil.EXPANDED_DATE_TIME_FORMAT));
|
|
|
CourseSchedule courseSchedule = courseSchedules.get(courseStartDates.size() - 1);
|
|
|
//校验课程是否结算
|
|
|
this.checkCourseIsSettlement(courseSchedule);
|
|
|
- int num = studentAttendanceDao.countStudentAttendenceNum(courseSchedule.getId().intValue());
|
|
|
- if (num > 0) {
|
|
|
- throw new BizException("{}[{}]{}-{}课程已点名",
|
|
|
+ int num = studentAttendanceDao.countStudentAttendenceNum(courseSchedule.getId().intValue());
|
|
|
+ if (num > 0) {
|
|
|
+ throw new BizException("{}[{}]{}-{}课程已点名",
|
|
|
courseSchedule.getName(),
|
|
|
courseSchedule.getId(),
|
|
|
- DateUtil.dateToString(courseSchedule.getStartClassTime(),
|
|
|
- DateUtil.EXPANDED_DATE_TIME_FORMAT),
|
|
|
- DateUtil.dateToString(courseSchedule.getEndClassTime(),
|
|
|
- DateUtil.EXPANDED_DATE_TIME_FORMAT));
|
|
|
- }
|
|
|
- courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
- courseSchedule.setClassDate(courseStartTime);
|
|
|
- courseSchedule.setStartClassTime(courseStartTime);
|
|
|
- courseSchedule.setEndClassTime(courseEndTime);
|
|
|
+ DateUtil.dateToString(courseSchedule.getStartClassTime(),
|
|
|
+ DateUtil.EXPANDED_DATE_TIME_FORMAT),
|
|
|
+ DateUtil.dateToString(courseSchedule.getEndClassTime(),
|
|
|
+ DateUtil.EXPANDED_DATE_TIME_FORMAT));
|
|
|
+ }
|
|
|
+ courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
+ courseSchedule.setClassDate(courseStartTime);
|
|
|
+ courseSchedule.setStartClassTime(courseStartTime);
|
|
|
+ courseSchedule.setEndClassTime(courseEndTime);
|
|
|
|
|
|
Integer allowOnlineToOffline = 0;
|
|
|
if(Objects.nonNull(vipGroupActivity)){
|
|
@@ -2620,13 +2490,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
}
|
|
|
|
|
|
if (Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode())) {
|
|
|
- boolean onlineToOffline = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
|
|
|
+ boolean onlineToOffline = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
|
|
|
&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE);
|
|
|
boolean offlineToOnline = courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
|
|
|
&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.ONLINE);
|
|
|
- if(onlineToOffline && Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){
|
|
|
- throw new BizException("此VIP课活动不支持线上课调整为线下课");
|
|
|
- }
|
|
|
+ if(onlineToOffline && Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 0 || allowOnlineToOffline == 3)){
|
|
|
+ throw new BizException("此VIP课活动不支持线上课调整为线下课");
|
|
|
+ }
|
|
|
if(offlineToOnline&&Objects.nonNull(vipGroupActivity) && (allowOnlineToOffline == 2 || allowOnlineToOffline == 3)){
|
|
|
throw new BizException("此VIP课活动不支持线下课调整为线上课");
|
|
|
}
|
|
@@ -2634,45 +2504,45 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
throw new BizException("请选择教学点");
|
|
|
}
|
|
|
courseSchedule.setTeachMode(vipGroupCourseAdjustInfo.getTeachMode());
|
|
|
- if (vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)) {
|
|
|
- if(Objects.nonNull(vipGroupCourseAdjustInfo.getSchoolId())){
|
|
|
+ if (vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)) {
|
|
|
+ if(Objects.nonNull(vipGroupCourseAdjustInfo.getSchoolId())){
|
|
|
courseSchedule.setSchoolId(vipGroupCourseAdjustInfo.getSchoolId());
|
|
|
- }
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ } else {
|
|
|
courseSchedule.setSchoolId(null);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (courseStartDates.size() == courseScheduleIds.size()) {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (courseStartDates.size() == courseScheduleIds.size()) {
|
|
|
- break;
|
|
|
- }
|
|
|
- calendar.add(Calendar.DATE, 1);
|
|
|
- }*/
|
|
|
- checkNewCourseSchedules(courseSchedules, false,false);
|
|
|
- //如果是陪练课,调整时间不允许超过有效期
|
|
|
- if(groupType == PRACTICE){
|
|
|
- for (CourseSchedule e:courseSchedules) {
|
|
|
- //已点名的不允许调整
|
|
|
- List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(e.getId());
|
|
|
- if(studentAttendances != null && studentAttendances.size() > 0){
|
|
|
- throw new BizException("调整失败: 课程已点名");
|
|
|
- }
|
|
|
- String classDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
- String startClassTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
- Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
- Date endDateTime = DateUtil.addMinutes(startDateTime,singleClassMinutes);
|
|
|
- if(DateUtil.minutesBetween(startDateTime,coursesStartDate) > 0){
|
|
|
- throw new BizException("调整失败: 课程{}调整时间早于有效期",e.getId());
|
|
|
- }
|
|
|
- if(DateUtil.minutesBetween(coursesExpireDate,endDateTime) > 0){
|
|
|
- throw new BizException("调整失败: 课程{}截止时间超过课程有效期",e.getId());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (courseStartDates.size() == courseScheduleIds.size()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (courseStartDates.size() == courseScheduleIds.size()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ calendar.add(Calendar.DATE, 1);
|
|
|
+ }
|
|
|
+ checkNewCourseSchedules(courseSchedules, false,false);
|
|
|
+ //如果是陪练课,调整时间不允许超过有效期
|
|
|
+ if(groupType == PRACTICE){
|
|
|
+ for (CourseSchedule e:courseSchedules) {
|
|
|
+ //已点名的不允许调整
|
|
|
+ List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(e.getId());
|
|
|
+ if(studentAttendances != null && studentAttendances.size() > 0){
|
|
|
+ throw new BizException("调整失败: 课程已点名");
|
|
|
+ }
|
|
|
+ String classDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
|
|
|
+ String startClassTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
|
|
|
+ Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
|
|
|
+ Date endDateTime = DateUtil.addMinutes(startDateTime,singleClassMinutes);
|
|
|
+ if(DateUtil.minutesBetween(startDateTime,coursesStartDate) > 0){
|
|
|
+ throw new BizException("调整失败: 课程{}调整时间早于有效期",e.getId());
|
|
|
+ }
|
|
|
+ if(DateUtil.minutesBetween(coursesExpireDate,endDateTime) > 0){
|
|
|
+ throw new BizException("调整失败: 课程{}截止时间超过课程有效期",e.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
if(groupType == VIP || groupType == LIVE){
|
|
|
CourseSchedule courseSchedule = courseSchedules.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
|
|
|
if(courseSchedule.getEndClassTime().compareTo(vipGroup.getCoursesExpireDate())>0){
|
|
@@ -2693,12 +2563,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- courseScheduleDao.batchUpdate(courseSchedules);
|
|
|
- classGroupService.updateClassGroupInfo(classGroup.getId());
|
|
|
- if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){
|
|
|
- teacherAttendanceDao.batchCleanCourseTeacherSignInfo(courseScheduleIds);
|
|
|
- }
|
|
|
- studentAttendanceDao.deleteByCourseSchedules(courseScheduleIds);
|
|
|
+ courseScheduleDao.batchUpdate(courseSchedules);
|
|
|
+ classGroupService.updateClassGroupInfo(classGroup.getId());
|
|
|
+ if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){
|
|
|
+ teacherAttendanceDao.batchCleanCourseTeacherSignInfo(courseScheduleIds);
|
|
|
+ }
|
|
|
+ studentAttendanceDao.deleteByCourseSchedules(courseScheduleIds);
|
|
|
//删除作业
|
|
|
courseHomeworkService.delHomwworkByCourseScheduleId(courseScheduleIds);
|
|
|
//删除评论
|