package com.fizz.business.schedule;

import com.fizz.business.service.DeviceSnapshotService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 设备数据快照定时任务
 * 每5分钟执行一次设备数据快照
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class DeviceSnapshotSchedule {

    private final DeviceSnapshotService deviceSnapshotService;

    /**
     * 每5分钟执行一次设备数据快照
     * 使用cron表达式：0 0/5 * * * ?
     * 表示每5分钟执行一次，在每分钟的0秒触发
     */
    @Scheduled(cron = "0 0/5 * * * ?")
    public void captureDeviceSnapshots() {
        try {
            log.info("========== 开始执行设备数据快照任务 ==========");
            long startTime = System.currentTimeMillis();

            // 创建设备数据快照
            deviceSnapshotService.createDeviceSnapshots();

            long endTime = System.currentTimeMillis();
            log.info("========== 设备数据快照任务执行完成，耗时：{}ms ==========", (endTime - startTime));
        } catch (Exception e) {
            log.error("========== 执行设备数据快照任务失败: {} ==========", e.getMessage(), e);
        }
    }
}
