| | |
| | | |
| | | |
| | | import com.gs.dingtalk.service.SendDingtalkService; |
| | | import com.gs.dingtalk.service.VwCjScSjTsBbService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | |
| | | @Component |
| | | @RequiredArgsConstructor |
| | | @Slf4j |
| | | public class ScheduledTasks { |
| | | |
| | | private SendDingtalkService sendDingtalkService; |
| | | // private final SendDingtalkService sendDingtalkService; |
| | | |
| | | private final VwCjScSjTsBbService vwCjScSjTsBbService; |
| | | |
| | | private final AtomicBoolean exportTaskRunning = new AtomicBoolean(false); |
| | | |
| | | // /** |
| | | // * 每两分钟执行一次 |
| | | // * 获取设备最近的一条记录 |
| | | // * |
| | | // * @return void |
| | | // * @author tjx |
| | | // * @description TODO |
| | | // * @date 2024/9/27 21:48 |
| | | // */ |
| | | // @Scheduled(cron = "0 0/2 * * * ?") |
| | | // public void getDeviceRealTimeData() { |
| | | // try { |
| | | // sendDingtalkService.sendDingTalkFiveMinute(); |
| | | // log.info("定时任务 getDeviceRealTimeData 执行成功"); |
| | | // } catch (Exception e) { |
| | | // log.error("定时任务 getDeviceRealTimeData 执行失败: ", e); |
| | | // } |
| | | // } |
| | | // |
| | | // @Scheduled(cron = "0 0/3 * * * ?") |
| | | // public void sendDingTalkFifteenMinute() { |
| | | // try { |
| | | // sendDingtalkService.sendDingTalkFifteenMinute(); |
| | | // log.info("定时任务 sendDingTalkFifteenMinute 执行成功"); |
| | | // } catch (Exception e) { |
| | | // log.error("定时任务 sendDingTalkFifteenMinute 执行失败: ", e); |
| | | // } |
| | | // } |
| | | // |
| | | // @Scheduled(cron = "0 0/4 * * * ?") |
| | | // public void sendDingTalkThirtyMinute() { |
| | | // try { |
| | | // sendDingtalkService.sendDingTalkthirtyMinute(); |
| | | // log.info("定时任务 sendDingTalkThirtyMinute 执行成功"); |
| | | // } catch (Exception e) { |
| | | // log.error("定时任务 sendDingTalkThirtyMinute 执行失败: ", e); |
| | | // } |
| | | // } |
| | | |
| | | /** |
| | | * 每五分钟执行一次 |
| | | * 获取设备最近的一条记录 |
| | | * |
| | | * @return void |
| | | * @author tjx |
| | | * @description TODO |
| | | * @date 2024/9/27 21:48 |
| | | * 每天上午9点执行 |
| | | * 导出生产数据并发送钉钉消息 |
| | | */ |
| | | @Scheduled(cron = "0 0/5 * * * ?") |
| | | public void getDeviceRealTimeData() throws Exception { |
| | | sendDingtalkService.sendDingTalkFiveMinute(); |
| | | } |
| | | @Async("taskExecutor") |
| | | @Scheduled(cron = "0 0 12,16 * * ?") |
| | | public void exportAndSendProductionDataTask() { |
| | | if (!exportTaskRunning.compareAndSet(false, true)) { |
| | | log.warn("生产数据导出任务正在执行中,跳过本次执行"); |
| | | return; |
| | | } |
| | | |
| | | //0/5 * * * * ? * |
| | | @Scheduled(cron = "0/5 * * * * ?") |
| | | public void chatSendMessage() throws Exception { |
| | | sendDingtalkService.chatSendMessage(); |
| | | } |
| | | try { |
| | | log.info("开始执行生产数据导出并发送钉钉任务"); |
| | | boolean result = vwCjScSjTsBbService.exportAndSendToDingtalk(); |
| | | |
| | | @Scheduled(cron = "0 0/30 * * * ?") |
| | | public void sendDingTalkthirtyMinute() throws Exception { |
| | | sendDingtalkService.sendDingTalkthirtyMinute(); |
| | | if (result) { |
| | | log.info("生产数据导出并发送钉钉任务执行成功"); |
| | | } else { |
| | | log.error("生产数据导出并发送钉钉任务执行失败"); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("生产数据导出并发送钉钉任务执行异常", e); |
| | | } finally { |
| | | exportTaskRunning.set(false); |
| | | } |
| | | } |
| | | } |