package com.xy.xyaicpzs.task;

import com.xy.xyaicpzs.service.DataAnalysisService;
import com.xy.xyaicpzs.service.DltDataAnalysisService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 预测结果处理定时任务（双色球+大乐透）
 */
@Slf4j
@Component
public class PredictResultTask {

    @Autowired
    private DataAnalysisService dataAnalysisService;

    @Autowired
    private DltDataAnalysisService dltDataAnalysisService;

    /**
     * 每10分钟执行一次预测结果匹配（双色球+大乐透）
     * cron表达式：秒 分 时 日 月 周
     * 0 0/10 * * * ? 表示每10分钟执行一次
     */
    @Scheduled(cron = "0 0/10 * * * ?")
    public void processPendingPredictions() {
        try {
            log.info("=== 开始执行预测结果匹配定时任务（双色球+大乐透） ===");
            
            long startTime = System.currentTimeMillis();
            
            int ssqProcessedCount = 0;
            int dltProcessedCount = 0;
            
            // 处理双色球待开奖记录
            try {
                log.info("开始处理双色球待开奖记录");
                ssqProcessedCount = dataAnalysisService.processPendingPredictions();
                log.info("双色球待开奖记录处理完成，共处理{}条", ssqProcessedCount);
            } catch (Exception e) {
                log.error("处理双色球待开奖记录时发生错误：{}", e.getMessage(), e);
            }
            
            // 处理大乐透待开奖记录
            try {
                log.info("开始处理大乐透待开奖记录");
                dltProcessedCount = dltDataAnalysisService.processPendingDltPredictions();
                log.info("大乐透待开奖记录处理完成，共处理{}条", dltProcessedCount);
            } catch (Exception e) {
                log.error("处理大乐透待开奖记录时发生错误：{}", e.getMessage(), e);
            }
            
            long endTime = System.currentTimeMillis();
            long duration = endTime - startTime;
            
            int totalProcessedCount = ssqProcessedCount + dltProcessedCount;
            log.info("=== 预测结果匹配定时任务执行完成 === 双色球：{}条，大乐透：{}条，总计：{}条，耗时：{}ms", 
                     ssqProcessedCount, dltProcessedCount, totalProcessedCount, duration);
            
        } catch (Exception e) {
            log.error("预测结果匹配定时任务执行失败：{}", e.getMessage(), e);
        }
    }

} 