Task.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.ruoyi.system.service.impl;
  2. import com.alibaba.fastjson2.JSON;
  3. import com.alibaba.fastjson2.JSONObject;
  4. import com.google.gson.Gson;
  5. import com.ruoyi.common.utils.DateUtils;
  6. import com.ruoyi.common.utils.http.HttpUtils;
  7. import com.ruoyi.system.domain.ClockHolidays;
  8. import com.ruoyi.system.domain.MenuFood;
  9. import com.ruoyi.system.domain.MenuFoodRecord;
  10. import com.ruoyi.system.mapper.ClockHolidaysMapper;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.scheduling.annotation.Async;
  13. import org.springframework.scheduling.annotation.Scheduled;
  14. import org.springframework.stereotype.Component;
  15. import org.springframework.util.ObjectUtils;
  16. import java.time.LocalDate;
  17. import java.time.format.DateTimeFormatter;
  18. import java.util.List;
  19. import java.util.Locale;
  20. import java.util.Map;
  21. import java.util.Set;
  22. /**
  23. * 定时任务
  24. */
  25. @Component
  26. public class Task {
  27. @Autowired
  28. private ClockHolidaysMapper clockHolidaysMapper;
  29. @Autowired
  30. private MenuFoodRecordServiceImpl menuFoodRecordService;
  31. @Autowired
  32. private MenuFoodServiceImpl menuFoodService;
  33. private static final Gson GSON = new Gson();
  34. /***
  35. *每日食谱记录定时任务
  36. * 每天23点执行
  37. * @throws Exception
  38. */
  39. @Async
  40. @Scheduled(cron = "0 0 23 * * ? ")
  41. public void popover() throws Exception {
  42. // 获取当前日期
  43. LocalDate currentDate = LocalDate.now();
  44. // 格式化日期为星期几,使用中文环境
  45. String currentDayOfWeek = currentDate.format(DateTimeFormatter.ofPattern("E", Locale.CHINA));
  46. MenuFood menuFood = new MenuFood();
  47. menuFood.setMenuFoodTime(currentDayOfWeek);
  48. menuFood.setIsUse("Y");
  49. List<MenuFood> menuFoods = menuFoodService.selectMenuFoodList(menuFood);
  50. if (menuFoods != null && menuFoods.size() > 0) {
  51. MenuFoodRecord menuFoodRecord = GSON.fromJson(GSON.toJson(menuFoods.get(0)), MenuFoodRecord.class);
  52. menuFoodRecord.setRecordTime(DateUtils.getNowDate());
  53. menuFoodRecordService.insertMenuFoodRecord(menuFoodRecord);
  54. }
  55. }
  56. /***
  57. *获取法定节假日和补班信息
  58. * 定时:每个月20号2点
  59. * @throws Exception
  60. */
  61. @Async
  62. //@Scheduled(cron = "0 0/2 * * * ? ")
  63. //@Scheduled(cron = "0 20 0 * * ? ")
  64. //@Scheduled(cron = "0/10 * * * * ? ")
  65. @Scheduled(cron = "0 0 2 20 * ? ")
  66. public void holidays() {
  67. String year = DateUtils.getYear();
  68. //查询是否存在当前年数据
  69. ClockHolidays clockHoliday = new ClockHolidays();
  70. clockHoliday.setYear(year);
  71. List<ClockHolidays> clockHolidaysList = clockHolidaysMapper.selectClockHolidaysList(clockHoliday);
  72. if(clockHolidaysList!=null && clockHolidaysList.size()>0){
  73. year = String.valueOf(Integer.parseInt(year) + 1);
  74. }
  75. String url = "https://timor.tech/api/holiday/year/"+year;
  76. String rspStr = HttpUtils.sendGet(url);
  77. JSONObject obj = JSON.parseObject(rspStr);
  78. Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) obj.get("holiday");
  79. if(ObjectUtils.isEmpty(holiday)){
  80. return;
  81. }
  82. Set<String> strings = holiday.keySet();
  83. for (String str : strings) {
  84. Map<String, Object> stringObjectMap = holiday.get(str);
  85. boolean bool = (Boolean) stringObjectMap.get("holiday");
  86. ClockHolidays clockHolidays = new ClockHolidays();
  87. clockHolidays.setYear(year);
  88. clockHolidays.setHolidayDate((String) stringObjectMap.get("date"));
  89. clockHolidays.setType("NO");
  90. if(!bool){
  91. clockHolidays.setType("YES");
  92. }
  93. clockHolidays.setCreateTime(DateUtils.getNowDate());
  94. clockHolidays.setUpdateTime(DateUtils.getNowDate());
  95. clockHolidaysMapper.insertClockHolidays(clockHolidays);
  96. }
  97. System.out.println("1");
  98. }
  99. }