package com.bonus.material.remind;

import com.bonus.common.biz.config.DateTimeHelper;
import com.bonus.material.basic.domain.BmProject;
import com.bonus.material.push.service.RentalCostsService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class InformMonthly {




    @Autowired
    RentalCostsService service;


    /**
     * 定时任务注解，用于配置任务的执行周期。
     * 该任务被安排在每月的第一天凌晨3点执行。
     * cron表达式解释：
     * - "0 0 3 1 * ?" 表示在每月的第一天的3点0分0秒执行。
     * - 分钟（0）：表示分钟，这里指定为0分钟。
     * - 小时（0）：表示小时，这里指定为3点。
     * - 日期（1）：表示日期，这里指定为每月的第一天。
     * - 月份（*）：表示月份，这里使用通配符*表示所有月份。
     * - 星期（?）：表示星期，由于每月第一天的星期不固定，因此使用?表示。
     * - 年份（空）：不指定年份，表示每年都执行。
     */
    //@Scheduled(cron = "0 0 1 * * ?")
    public void taskCycle() {
        System.out.println("使用SpringMVC框架配置定时任务");
        try {
            System.out.println("执行每月初1号的一次的定时任务...执行时间:" + DateTimeHelper.currentDateTime());
        } catch (Exception e) {
            System.err.println("定时任务获取时间报错:" + e.getMessage());
        }

        String time = DateTimeHelper.getNowDate();
        String firstDay = DateTimeHelper.getFirstDay();
        if (time.equals(firstDay)) {
            // 执行业务逻辑
            service.calcMonthInfo();

        }
        try {
            System.out.println("本月的定时任务已结束：" + DateTimeHelper.currentDateTime());
        } catch (Exception e) {
            System.err.println("定时任务获取时间报错:" + e.getMessage());
        }
    }

    /**
     * 定时任务注解，用于配置任务的执行周期。
     * 该任务被安排在每天晚上十二点执行。
     * cron表达式解释：
     * - "0 0 0 * * ?" 表示在每天的0点0分0秒执行。
     * - 分钟（0）：表示分钟，这里指定为0分钟。
     * - 小时（0）：表示小时，这里指定为0点。
     * - 日期（*）：表示日期，这里使用通配符*表示所有日期。
     * - 月份（*）：表示月份，这里使用通配符*表示所有月份。
     * - 星期（?）：表示星期，由于日期字段已使用*，因此使用?表示不指定星期。
     * - 年份（空）：不指定年份，表示每年都执行。
     */
    @Scheduled(cron = "0 0 0 * * ?")
    public void iwsProjectCycle() {
        System.out.println("使用SpringMVC框架配置定时任务");
        try {
            System.out.println("执行每天晚上十二点的定时任务...执行时间:" + DateTimeHelper.currentDateTime());
        } catch (Exception e) {
            System.err.println("定时任务获取时间报错:" + e.getMessage());
        }

        service.iwsProjectCycle();

        try {
            System.out.println("当天的定时任务已结束：" + DateTimeHelper.currentDateTime());
        } catch (Exception e) {
            System.err.println("定时任务获取时间报错:" + e.getMessage());
        }
    }

}
