|
@@ -1,5 +1,6 @@
|
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.date.DateUnit;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -323,7 +324,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
Iterator<CourseTimeEntity> iterator = calendarEntity.getCourseTime().iterator();
|
|
|
while (iterator.hasNext()) {
|
|
|
CourseTimeEntity next = iterator.next();
|
|
|
- boolean flag = checkCourseTime(nowCourse, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime, next.getStartTime(), next.getEndTime());
|
|
|
+ boolean flag = checkCourseTime(nowCourse, CourseTimeEntity::getStartTime, CourseTimeEntity::getFreeEndTime, next.getStartTime(), next.getFreeEndTime());
|
|
|
if (flag) {
|
|
|
iterator.remove();
|
|
|
}
|
|
@@ -443,6 +444,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
timeEntity.setEndTime(edate);
|
|
|
//再加上单节课休息时间
|
|
|
edate = DateUtil.addMinutes(edate, freeCourseMinutes);
|
|
|
+ timeEntity.setFreeEndTime(edate);
|
|
|
result.add(timeEntity);
|
|
|
}
|
|
|
}
|
|
@@ -536,6 +538,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
|
|
|
// 检查时间段是否满足课程时间,不满足则删除,满足 并且可多段的情况下,将时间段拆分
|
|
|
courseTime = splitTime(courseTime,courseMinutes,freeMinutes);
|
|
|
+ courseTime.sort(Comparator.comparing(CourseTimeEntity::getStartTime));
|
|
|
calendarEntity.setCourseTime(courseTime);
|
|
|
|
|
|
//如果日历时间集合数据删没了,那么就证明当天课程已经满了 0:未满 1满
|
|
@@ -611,10 +614,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
}
|
|
|
for (CourseTimeEntity trainingPlanTimeDetail : timeList) {
|
|
|
if (time.getStartTime().compareTo(trainingPlanTimeDetail.getStartTime()) < 0) {
|
|
|
- if (time.getEndTime().compareTo(trainingPlanTimeDetail.getStartTime()) <= 0) {
|
|
|
+ if (time.getFreeEndTime().compareTo(trainingPlanTimeDetail.getStartTime()) <= 0) {
|
|
|
result.add(time);
|
|
|
return result;
|
|
|
- } else if (time.getEndTime().compareTo(trainingPlanTimeDetail.getEndTime()) <= 0) {
|
|
|
+ } else if (time.getFreeEndTime().compareTo(trainingPlanTimeDetail.getFreeEndTime()) <= 0) {
|
|
|
CourseTimeEntity trainingPlanTimeDetail1 = new CourseTimeEntity();
|
|
|
trainingPlanTimeDetail1.setStartTime(time.getStartTime());
|
|
|
trainingPlanTimeDetail1.setEndTime(trainingPlanTimeDetail.getStartTime());
|
|
@@ -627,9 +630,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
result.add(trainingPlanTimeDetail1);
|
|
|
time.setStartTime(trainingPlanTimeDetail.getEndTime());
|
|
|
}
|
|
|
- } else if (time.getStartTime().compareTo(trainingPlanTimeDetail.getEndTime()) <= 0) {
|
|
|
- if (time.getEndTime().compareTo(trainingPlanTimeDetail.getEndTime()) > 0) {
|
|
|
- time.setStartTime(trainingPlanTimeDetail.getEndTime());
|
|
|
+ } else if (time.getStartTime().compareTo(trainingPlanTimeDetail.getFreeEndTime()) <= 0) {
|
|
|
+ if (time.getFreeEndTime().compareTo(trainingPlanTimeDetail.getFreeEndTime()) > 0) {
|
|
|
+ time.setStartTime(trainingPlanTimeDetail.getFreeEndTime());
|
|
|
} else {
|
|
|
return result;
|
|
|
}
|
|
@@ -653,16 +656,17 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
for (int i = 1; i < timeList.size(); i++) {
|
|
|
CourseTimeEntity nextTime = timeList.get(i);
|
|
|
// 如果下一个时间段的开始时间小于等于上一个时间段的结束时间
|
|
|
- if (nextTime.getStartTime().compareTo(time.getEndTime()) <= 0 ) {
|
|
|
+ if (nextTime.getStartTime().compareTo(time.getFreeEndTime()) <= 0 ) {
|
|
|
// 合并时间段
|
|
|
- if (nextTime.getEndTime().compareTo(time.getEndTime()) >= 0) {
|
|
|
+ if (nextTime.getFreeEndTime().compareTo(time.getFreeEndTime()) >= 0) {
|
|
|
time.setEndTime(nextTime.getEndTime());
|
|
|
+ time.setFreeEndTime(nextTime.getFreeEndTime());
|
|
|
}
|
|
|
} else {
|
|
|
// 保存上一个时间段
|
|
|
result.add(time);
|
|
|
// 重置时间段
|
|
|
- if (nextTime.getEndTime().compareTo(time.getEndTime()) >= 0) {
|
|
|
+ if (nextTime.getFreeEndTime().compareTo(time.getFreeEndTime()) >= 0) {
|
|
|
time = nextTime;
|
|
|
}
|
|
|
}
|
|
@@ -687,6 +691,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
String star = sysConfigService.findConfigValue(SysConfigConstant.COURSE_START_SETTING);//系统开课时间
|
|
|
String end = sysConfigService.findConfigValue(SysConfigConstant.COURSE_END_SETTING);//系统关课时间
|
|
|
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
//获取每日日期数据
|
|
|
while (firstDay.isBefore(lastDay) || firstDay.isEqual(lastDay)) {
|
|
|
CourseCalendarEntity entity = new CourseCalendarEntity();
|
|
@@ -700,7 +705,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
.map(t -> getCourseTimeEntity(entity, (JSONObject) t))
|
|
|
.filter(f -> checkTime(f, star, end))
|
|
|
.collect(Collectors.toList());
|
|
|
- entity.setCourseTime(timeEntities);
|
|
|
+ if (!now.isAfter(firstDay)) {
|
|
|
+ entity.setCourseTime(timeEntities);
|
|
|
+ }
|
|
|
}
|
|
|
list.add(entity);
|
|
|
firstDay = firstDay.plusDays(1L);
|
|
@@ -742,6 +749,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
CourseTimeEntity courseTimeEntity = new CourseTimeEntity();
|
|
|
courseTimeEntity.setStartTime(DateUtil.addDays(time.getStartTime(), addDay));
|
|
|
courseTimeEntity.setEndTime(DateUtil.addDays(time.getEndTime(), addDay));
|
|
|
+ courseTimeEntity.setFreeEndTime(DateUtil.addDays(time.getFreeEndTime(), addDay));
|
|
|
times.add(courseTimeEntity);
|
|
|
});
|
|
|
entity.setCourseTime(times);
|
|
@@ -814,6 +822,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
lockCourse.setClassDate(DateUtil.toDate(ymd));
|
|
|
lockCourse.setStartTime(courseTimeEntity.getStartTime());
|
|
|
lockCourse.setEndTime(courseTimeEntity.getEndTime());
|
|
|
+ lockCourse.setFreeEndTime(courseTimeEntity.getFreeEndTime());
|
|
|
lockCourseList.add(lockCourse);
|
|
|
});
|
|
|
}
|
|
@@ -839,7 +848,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
v.forEach(course -> {
|
|
|
CourseTimeEntity courseTimeEntity = new CourseTimeEntity();
|
|
|
courseTimeEntity.setStartTime(course.getStartTime());
|
|
|
- courseTimeEntity.setEndTime(course.getFreeEndTime());
|
|
|
+ courseTimeEntity.setEndTime(course.getEndTime());
|
|
|
+ courseTimeEntity.setFreeEndTime(course.getFreeEndTime());
|
|
|
value.add(courseTimeEntity);
|
|
|
});
|
|
|
nowCourse.put(DateUtil.dateToString(k), value);
|
|
@@ -1459,16 +1469,24 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
baseMapper.update(null, Wrappers.<CourseSchedule>lambdaUpdate()
|
|
|
.eq(CourseSchedule::getId, adjustVo.getCourseId())
|
|
|
.set(CourseSchedule::getStartTime, DateUtil.getYesterday())
|
|
|
- .set(CourseSchedule::getEndTime, DateUtil.getYesterday()));
|
|
|
+ .set(CourseSchedule::getEndTime, DateUtil.getYesterday())
|
|
|
+ .set(CourseSchedule::getFreeEndTime, DateUtil.getYesterday())
|
|
|
+ );
|
|
|
|
|
|
CourseTimeEntity timeEntity = new CourseTimeEntity();
|
|
|
timeEntity.setStartTime(startTime);
|
|
|
timeEntity.setEndTime(endTime);
|
|
|
+
|
|
|
+ // 加上课间时间
|
|
|
+ int feeTime = Integer.parseInt(String.valueOf(cn.hutool.core.date.DateUtil.between(schedule.getEndTime(), schedule.getFreeEndTime(), DateUnit.MINUTE)));
|
|
|
+ Date freeEndTime = DateUtil.offsetMinute(endTime, feeTime);
|
|
|
+ timeEntity.setFreeEndTime(freeEndTime);
|
|
|
+
|
|
|
List<CourseTimeEntity> timeList = Arrays.asList(timeEntity);
|
|
|
//校验老师课程是否冲突
|
|
|
- this.batchCheckTeacherCourseTime(teacherId, timeList, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime);
|
|
|
+ this.batchCheckTeacherCourseTime(teacherId, timeList, CourseTimeEntity::getStartTime, CourseTimeEntity::getFreeEndTime);
|
|
|
//校验学生课程是否冲突
|
|
|
- this.batchCheckTeacherCourseTime(studentPayment.getUserId(), timeList, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime);
|
|
|
+ this.batchCheckStudentCourseTime(studentPayment.getUserId(), timeList, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime);
|
|
|
|
|
|
baseMapper.courseAdjust(adjustVo);
|
|
|
|
|
@@ -2442,6 +2460,11 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
throw new BizException("无法修改课程");
|
|
|
}
|
|
|
|
|
|
+ // 加上课间时间
|
|
|
+ int feeTime = Integer.parseInt(String.valueOf(cn.hutool.core.date.DateUtil.between(courseSchedule.getStartTime(), startTime, DateUnit.MINUTE)));
|
|
|
+ Date freeEndTime = DateUtil.offsetMinute(endTime, feeTime);
|
|
|
+ courseTime.setFreeEndTime(freeEndTime);
|
|
|
+
|
|
|
//校验上下课时间
|
|
|
Integer singleCourseTime = courseSchedule.getSingleCourseTime();
|
|
|
if (!DateUtil.offsetMinute(startTime, singleCourseTime).equals(endTime)) {
|
|
@@ -2452,10 +2475,11 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
baseMapper.update(null, Wrappers.<CourseSchedule>lambdaUpdate()
|
|
|
.eq(CourseSchedule::getId, courseId)
|
|
|
.set(CourseSchedule::getStartTime, DateUtil.getYesterday())
|
|
|
+ .set(CourseSchedule::getFreeEndTime, DateUtil.getYesterday())
|
|
|
.set(CourseSchedule::getEndTime, DateUtil.getYesterday()));
|
|
|
|
|
|
//批量检查老师课时在数据库是否重复
|
|
|
- this.batchCheckTeacherCourseTime(teacherId, timeList, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime);
|
|
|
+ this.batchCheckTeacherCourseTime(teacherId, timeList, CourseTimeEntity::getStartTime, CourseTimeEntity::getFreeEndTime);
|
|
|
|
|
|
//校验购买的课程组每节课时间是否和自己的课时冲突
|
|
|
List<CourseScheduleStudentPayment> studentPayments = paymentDao.selectList(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
|
|
@@ -2472,7 +2496,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
.eq(CourseSchedule::getId, courseId)
|
|
|
.set(CourseSchedule::getClassDate, DateUtil.trunc(startTime))
|
|
|
.set(CourseSchedule::getStartTime, startTime)
|
|
|
- .set(CourseSchedule::getEndTime, endTime));
|
|
|
+ .set(CourseSchedule::getEndTime, endTime)
|
|
|
+ .set(CourseSchedule::getFreeEndTime, freeEndTime)
|
|
|
+ );
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(studentPayments)) {
|
|
|
SysUser teacher = sysUserService.getByUserId(teacherId);
|
|
@@ -2505,7 +2531,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
0, null, ClientEnum.STUDENT.getCode(), teacher.getUsername(),"琴房课",courseName,dateString);
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
- log.error("琴房课调整发送消息失败--> {}", e.fillInStackTrace());
|
|
|
+ log.error("琴房课调整发送消息失败", e);
|
|
|
}
|
|
|
}
|
|
|
|