//3.修改时间段
//通过修改时间段id和当前时间(08:00)查询(待训练)课程信息
Time start = RcqtUtils.getTime(updateTime.getStartReservationTime());//前端时间
Time end = RcqtUtils.getTime(updateTime.getEndReservationTime());
// 检查时间段是否合法
Result timeCheckResult = checkTimeValidity(updateTime, start, end, updateTimeMy, RcqtUtils.getDay(), LocalTime.now());
if (timeCheckResult != null) {
return timeCheckResult;
}
// 查询待训练的课程
List courseInfos = courseInfoService.queryCourseByUpdateTimeIdByStatus0(updateTime.getUpdateTimeId());
log.info('courseInfos' + courseInfos);
// 存放待训练的课程
List courseDtoListByNow = new ArrayList<>();
for (CourseDto courseDto0 : courseInfos) {
if (courseDto0.getCourseDate().equals(RcqtUtils.getDay())) {
if (LocalTime.now().isBefore(courseDto0.getStartReservationTime().toLocalTime())) {
courseDtoListByNow.add(courseDto0);
}
} else if (courseDto0.getCourseDate().after(RcqtUtils.getDay())) {
courseDtoListByNow.add(courseDto0);
}
}
// 查询学员信息
List carUserList = new ArrayList<>();
if (!CollectionUtils.isEmpty(courseDtoListByNow)) {
for (CourseDto courseDto : courseDtoListByNow) {
CarUser carUser = carUserService.queryOneCarUserById(courseDto.getUserId());
carUserList.add(carUser);
}
for (CourseDto courseDto : courseDtoListByNow) {
courseDto.setCarUserList(carUserList);
}
log.info('通知');
map.put('courseInfos', courseDtoListByNow);
return new Result<>(ResultCode.NOTICE_COACH, map);
} else {
log.info('当前无预约学员');
//当前无预约学员
updateTimeMy.setStartReservationTime(start);
updateTimeMy.setEndReservationTime(end);
}
updateTimeMyList.add(updateTimeMy);
// 检查时间段有效性
private Result checkTimeValidity(UpdateTime updateTime, Time start, Time end, UpdateTime updateTimeMy, Date today, LocalTime now) {
// 时间顺序判断
if (start.toLocalTime().isAfter(end.toLocalTime())) {
log.error('时间顺序反!');
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
// 过期时间判断
if (updateTime.getCourseDate().equals(today)) {
if (start.toLocalTime().isBefore(now)) {
log.error('不能修改时间为过期时间!');
return new Result<>(ResultCode.TIME_IS_OUT);
}
}
// 数据库中时间段为空的判断
if (updateTimeMy.getStartReservationTime() != null && updateTimeMy.getEndReservationTime() != null) {
log.info('数据库时间段不为空!');
List updateTimeList = updateTimeService.queryUpdateTimeByDate(updateTimeMy.getCoachId(), updateTimeMy.getCourseDate());
for (UpdateTime d : updateTimeList) {
if (!Objects.equals(updateTime.getUpdateTimeId(), d.getUpdateTimeId())) {
// 排除时间段为空的
if (d.getEndReservationTime() != null && d.getStartReservationTime() != null) {
// 时间重复判断
if (start.equals(d.getStartReservationTime()) && end.equals(d.getEndReservationTime())) {
log.error('时间重复!');
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
// 时间冲突判断
if ((!start.equals(d.getEndReservationTime())) && (!end.equals(d.getStartReservationTime()))) {
if ((!start.after(d.getEndReservationTime())) && (!end.before(d.getStartReservationTime()))) {
log.error('时间冲突!');
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
}
}
}
}
} else {
List updateTimeList = updateTimeService.queryUpdateTimeByDate(updateTimeMy.getCoachId(), updateTimeMy.getCourseDate());
for (UpdateTime d : updateTimeList) {
if (!Objects.equals(updateTime.getUpdateTimeId(), d.getUpdateTimeId())) {
// 排除时间段为空的
if (d.getEndReservationTime() != null && d.getStartReservationTime() != null) {
// 时间重复判断
if (start.equals(d.getStartReservationTime()) && end.equals(d.getEndReservationTime())) {
log.error('时间重复!');
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
// 时间冲突判断
if ((!start.equals(d.getEndReservationTime())) && (!end.equals(d.getStartReservationTime()))) {
if ((!start.after(d.getEndReservationTime())) && (!end.before(d.getStartReservationTime()))) {
log.error('时间冲突!');
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
}
}
}
}
}
return null;
}