@Scheduled(cron = "0 0 23 * * ?")//每天23点执行\npublic void myTask() {\n //在这里执行你的数据库操作代码\n System.out.println("定时任务执行");\n //1.查询所有教练\n List coachList = coachService.queryAllCoaches();\n\n List updateTimeList = new ArrayList<>();//存放新增的修改时间段\n\n for (Coach coach : coachList) {\n List defaultTimes = defaultTimeService.queryDefaultTimeByCoachID(coach.getCoachId());\n\n if (!defaultTimes.isEmpty()) {\n log.info("此教练有默认时间段");\n //1.从定时时刻计算七天日期\n List sevenDays = RcqtUtils.getNextSevenDaysUn();\n SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");\n for (String s : sevenDays) {\n Date date = null;\n try {\n date = dateFormat.parse(s);\n\n //2.通过教练id和日期查询修改时间段表是否有数据(把7天都查一遍)\n List updateTimes = updateTimeService.queryUpdateTimeByDate(coach.getCoachId(), date);\n if (updateTimes.isEmpty()) {\n log.info("当前日期:" + date + "没有生成对应数据");\n //3.没有当前日期的修改时间段数据,生成新数据\n for (DefaultTime defaultTime : defaultTimes) {\n //4.新增修改时间段\n UpdateTime updateTime = new UpdateTime();\n updateTime.setCoachId(coach.getCoachId());\n updateTime.setProjectType(defaultTime.getProjectType());\n updateTime.setCourseDate(date);\n updateTime.setStartReservationTime(defaultTime.getStartReservationTime());\n updateTime.setEndReservationTime(defaultTime.getEndReservationTime());\n updateTime.setMaxReservation(defaultTime.getMaxReservation());\n updateTime.setCourseStatus(false);//人数未满\n updateTime.setCurrentReservation(0);//当前预约人数0\n updateTime.setIsBreakTime(false);//默认当前时间段不休息\n //5.查询当前日期是周几,默认时间段里的休息日是否包含当前日期\n String week = RcqtUtils.getDayOfWeek(s);//得到当前日期对应周几\n if (defaultTime.getRestDay().contains(week)) {\n updateTime.setIsBreakDate(true);\n } else {\n updateTime.setIsBreakDate(false);\n }\n updateTimeList.add(updateTime);\n }\n }\n } catch (ParseException e) {\n e.printStackTrace();\n }\n }\n }\n }\n //6.批量新增\n if (!updateTimeList.isEmpty()) {\n boolean b = updateTimeService.saveBatch(updateTimeList);\n }\n}