package com.gs.dingtalk.task; 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 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); // } // } /** * 每天上午9点执行 * 导出生产数据并发送钉钉消息 */ @Async("taskExecutor") @Scheduled(cron = "0 0 12,16 * * ?") public void exportAndSendProductionDataTask() { if (!exportTaskRunning.compareAndSet(false, true)) { log.warn("生产数据导出任务正在执行中,跳过本次执行"); return; } try { log.info("开始执行生产数据导出并发送钉钉任务"); boolean result = vwCjScSjTsBbService.exportAndSendToDingtalk(); if (result) { log.info("生产数据导出并发送钉钉任务执行成功"); } else { log.error("生产数据导出并发送钉钉任务执行失败"); } } catch (Exception e) { log.error("生产数据导出并发送钉钉任务执行异常", e); } finally { exportTaskRunning.set(false); } } }