|
@@ -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;
|
|
@@ -322,7 +323,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();
|
|
|
}
|
|
@@ -442,6 +443,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
timeEntity.setEndTime(edate);
|
|
|
//再加上单节课休息时间
|
|
|
edate = DateUtil.addMinutes(edate, freeCourseMinutes);
|
|
|
+ timeEntity.setFreeEndTime(edate);
|
|
|
result.add(timeEntity);
|
|
|
}
|
|
|
}
|
|
@@ -611,10 +613,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 +629,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 +655,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;
|
|
|
}
|
|
|
}
|
|
@@ -745,6 +748,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);
|
|
@@ -817,6 +821,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);
|
|
|
});
|
|
|
}
|
|
@@ -842,7 +847,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);
|
|
@@ -1461,16 +1467,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);
|
|
|
|
|
@@ -2434,6 +2448,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)) {
|
|
@@ -2444,10 +2463,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()
|
|
@@ -2464,7 +2484,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);
|
|
@@ -2497,7 +2519,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);
|
|
|
}
|
|
|
}
|
|
|
|