package com.ruoyi.system.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.google.gson.Gson; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.system.domain.ClockHolidays; import com.ruoyi.system.domain.MenuFood; import com.ruoyi.system.domain.MenuFoodRecord; import com.ruoyi.system.mapper.ClockHolidaysMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; /** * 定时任务 */ @Component public class Task { @Autowired private ClockHolidaysMapper clockHolidaysMapper; @Autowired private MenuFoodRecordServiceImpl menuFoodRecordService; @Autowired private MenuFoodServiceImpl menuFoodService; private static final Gson GSON = new Gson(); /*** *每日食谱记录定时任务 * 每天23点执行 * @throws Exception */ @Async @Scheduled(cron = "0 0 23 * * ? ") public void popover() throws Exception { // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 格式化日期为星期几,使用中文环境 String currentDayOfWeek = currentDate.format(DateTimeFormatter.ofPattern("E", Locale.CHINA)); MenuFood menuFood = new MenuFood(); menuFood.setMenuFoodTime(currentDayOfWeek); menuFood.setIsUse("Y"); List menuFoods = menuFoodService.selectMenuFoodList(menuFood); if (menuFoods != null && menuFoods.size() > 0) { MenuFoodRecord menuFoodRecord = GSON.fromJson(GSON.toJson(menuFoods.get(0)), MenuFoodRecord.class); menuFoodRecord.setRecordTime(DateUtils.getNowDate()); menuFoodRecordService.insertMenuFoodRecord(menuFoodRecord); } } /*** *获取法定节假日和补班信息 * 定时:每个月20号2点 * @throws Exception */ @Async //@Scheduled(cron = "0 0/2 * * * ? ") //@Scheduled(cron = "0 20 0 * * ? ") //@Scheduled(cron = "0/10 * * * * ? ") @Scheduled(cron = "0 0 2 20 * ? ") public void holidays() { String year = DateUtils.getYear(); //查询是否存在当前年数据 ClockHolidays clockHoliday = new ClockHolidays(); clockHoliday.setYear(year); List clockHolidaysList = clockHolidaysMapper.selectClockHolidaysList(clockHoliday); if(clockHolidaysList!=null && clockHolidaysList.size()>0){ year = String.valueOf(Integer.parseInt(year) + 1); } String url = "https://timor.tech/api/holiday/year/"+year; String rspStr = HttpUtils.sendGet(url); JSONObject obj = JSON.parseObject(rspStr); Map> holiday = (Map>) obj.get("holiday"); if(ObjectUtils.isEmpty(holiday)){ return; } Set strings = holiday.keySet(); for (String str : strings) { Map stringObjectMap = holiday.get(str); boolean bool = (Boolean) stringObjectMap.get("holiday"); ClockHolidays clockHolidays = new ClockHolidays(); clockHolidays.setYear(year); clockHolidays.setHolidayDate((String) stringObjectMap.get("date")); clockHolidays.setType("NO"); if(!bool){ clockHolidays.setType("YES"); } clockHolidays.setCreateTime(DateUtils.getNowDate()); clockHolidays.setUpdateTime(DateUtils.getNowDate()); clockHolidaysMapper.insertClockHolidays(clockHolidays); } System.out.println("1"); } }