查询教练约课安排:日期查询
<p>//2.通过日期查询约课安排
@GetMapping("/queryCourseByCoachIDByDate")
public Result<Object> queryCourseByCoachIDByDate(Coach coach, String date, HttpServletRequest request) throws ParseException {</p>
<pre><code>//权限验证
String token = (String) request.getAttribute("claims_coach");
if (token == null || "".equals(token)) {
throw new RuntimeException("权限不足!");
}
if (coach.getCoachId() == null) {
log.info("coachId为null");
return new Result<>(ResultCode.FAIL);
}
//转换前端传递日期格式
Date convertedDate = RcqtUtils.getconvertedDate(date);
Map<String, Object> map = new HashMap<>();
//查询日期对应的数据
List<UpdateTime> updateTimeList = updateTimeService.queryUpdateTimeByDate(coach.getCoachId(), convertedDate);
log.info(updateTimeList.toString());
if (CollectionUtils.isEmpty(updateTimeList)) {
log.info("查询当前日期数据为空!");
//查询教练自己设置的默认时间段
List<DefaultTime> defaultTimes = defaultTimeService.queryDefaultTimeByCoachID(coach.getCoachId());
List<UpdateTime> updateTimes = new ArrayList<>();//存放新增的修改时间段
if (!defaultTimes.isEmpty()) {
for (DefaultTime defaultTime : defaultTimes) {
//4.新增修改时间段
if (defaultTime.getStartReservationTime() != null && defaultTime.getEndReservationTime() != null) {
UpdateTime updateTime = new UpdateTime();
updateTime.setCoachId(coach.getCoachId());
updateTime.setProjectType(defaultTime.getProjectType());
updateTime.setCourseDate(convertedDate);
updateTime.setStartReservationTime(defaultTime.getStartReservationTime());
updateTime.setEndReservationTime(defaultTime.getEndReservationTime());
updateTime.setMaxReservation(defaultTime.getMaxReservation());
updateTime.setCourseStatus(false);//人数未满
updateTime.setCurrentReservation(0);//当前预约人数0
//5.查询当前日期是周几,默认时间段里的休息日是否包含当前日期
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String currentDate = dateFormat.format(convertedDate);
String week = RcqtUtils.getDayOfWeek(currentDate);//得到当前日期对应周几
if (!StringUtils.isEmpty(week)) {
updateTime.setIsBreakDate(defaultTime.getRestDay().contains(week));
}
updateTimes.add(updateTime);
}
}
boolean b = updateTimeService.saveBatch(updateTimes);
if (!b) {
log.info("新增失败");
return new Result<>(ResultCode.FAIL);
}
}
}
List<UpdateTimeDto> updateTimeDtoList = new ArrayList<>();
List<Long> updateTimeIds = new ArrayList<>(); // 保存updateTime的id,用于批量更新
for (UpdateTime updateTime : updateTimeList) {
UpdateTimeDto updateTimeDto = new UpdateTimeDto();
BeanUtils.copyProperties(updateTime, updateTimeDto);
updateTimeIds.add(updateTime.getUpdateTimeId());
updateTimeDtoList.add(updateTimeDto);
map.put("isBreakDate", updateTime.getIsBreakDate());//给前端总的休息状态
}
// 批量查询约课学员
List<CourseInfo> courseInfos = courseInfoService.queryCourseByUpdateTimeIds(updateTimeIds);
Map<Long, List<CarUser>> courseInfoMap = new HashMap<>();
for (CourseInfo courseInfo : courseInfos) {
CarUser carUser = carUserService.queryOneCarUserById(courseInfo.getUserId());
if (!courseInfoMap.containsKey(courseInfo.getUpdateTimeId())) {
courseInfoMap.put(courseInfo.getUpdateTimeId(), new ArrayList<>());
}
courseInfoMap.get(courseInfo.getUpdateTimeId()).add(carUser);
}
for (UpdateTimeDto updateTimeDto : updateTimeDtoList) {
if (courseInfoMap.containsKey(updateTimeDto.getUpdateTimeId())) {
List<CarUser> carUserList = courseInfoMap.get(updateTimeDto.getUpdateTimeId());
updateTimeDto.setCurrentReservation(carUserList.size());//当前预约人数
updateTimeDto.setCarUserList(carUserList);
//当前预约人数等于设置最大预约人数
if (carUserList.size() == updateTimeDto.getMaxReservation()) {
updateTimeDto.setCourseStatus(true);//设置课程状态为已满
}
}
//判断时间是否过期
if (updateTimeDto.getCourseDate().equals(RcqtUtils.getDay()) && updateTimeDto.getStartReservationTime() != null) {
updateTimeDto.setIsTimeOut(LocalTime.now().isAfter(updateTimeDto.getStartReservationTime().toLocalTime()));
}
}
// 批量更新数据库状态
boolean b = updateTimeService.updateBatchById(updateTimeList);
if (!b) {
log.info("修改失败!");
return new Result<>(ResultCode.FAIL);
}
for (UpdateTimeDto updateTimeDto : updateTimeDtoList) {
if (updateTimeDto.getIsTimeOut() != null && updateTimeDto.getIsTimeOut()) {
map.put("isTimeOutAll", true);
break;
}
}
map.put("updateTimeList", updateTimeDtoList);
log.info("通过日期查询约课安排成功!");
return new Result<>(ResultCode.SUCCESS, map);
</code></pre>
<p>}</p>
原文地址: https://www.cveoy.top/t/topic/p4r8 著作权归作者所有。请勿转载和采集!