@Scheduled(cron = "0 0 23 * * ?")//每天23点执行\n public void myTask() {\n //在这里执行你的数据库操作代码\n log.info("定时任务执行");\n //1.查询所有教练\n List coachList = coachService.queryAllCoaches();\n //2.查询所有教练的默认时间段\n List defaultTimes = defaultTimeService.queryDefaultTimeByCoachIDs(coachList.stream().map(Coach::getCoachId).collect(Collectors.toList()));\n //3.将教练和默认时间段存入Map中\n Map<Long, List> defaultTimesMap = defaultTimes.stream().collect(Collectors.groupingBy(DefaultTime::getCoachId));\n //4.计算未来7天日期\n List sevenDays = RcqtUtils.getNextSevenDaysUn();\n SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");\n Set datesToCheck = new HashSet<>();\n for (String s : sevenDays) {\n try (DateFormat df = new SimpleDateFormat("yyyy-MM-dd")) {\n Date date = df.parse(s);\n datesToCheck.add(date);\n }\n catch (ParseException e) {\n log.error("日期解析错误", e);\n }\n }\n //5.查询已存在的修改时间段\n List existingUpdateTimes = updateTimeService.queryUpdateTimeByDates(coachList.stream().map(Coach::getCoachId).collect(Collectors.toList()), datesToCheck);\n //6.将已存在的修改时间段日期存入Set中\n Set generatedDates = new HashSet<>();\n for (UpdateTime updateTime : existingUpdateTimes) {\n generatedDates.add(updateTime.getCourseDate());\n }\n //7.生成新的修改时间段\n List newUpdateTimes = new ArrayList<>();\n for (Coach coach : coachList) {\n List defaultTimes = defaultTimesMap.get(coach.getCoachId());\n for (String s : sevenDays) {\n try (DateFormat df = new SimpleDateFormat("yyyy-MM-dd")) {\n Date date = df.parse(s);\n if (!generatedDates.contains(date)) {\n //8.生成新的修改时间段\n for (DefaultTime defaultTime : defaultTimes) {\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 //9.查询当前日期是周几,默认时间段里的休息日是否包含当前日期\n String week = RcqtUtils.getDayOfWeek(s);//得到当前日期对应周几\n if (defaultTime.getRestDay().contains(week)) {\n updateTime.setIsBreakDate(true);\n } else {\n updateTime.setIsBreakDate(false);\n }\n newUpdateTimes.add(updateTime);\n }\n }\n }\n catch (ParseException e) {\n log.error("日期解析错误", e);\n }\n }\n }\n //10.批量新增修改时间段\n boolean success = updateTimeService.saveBatch(newUpdateTimes);\n }

每天23点自动生成教练的修改时间段

原文地址: https://www.cveoy.top/t/topic/pwB2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录