package com.gyee.generation.task;


import com.gyee.common.util.DateUtils;
import com.gyee.generation.service.*;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @ClassName : SaticScheduleTask
 * @Description : 调度
 */


@Component
public class SaticScheduleTask {

    //    private static Logger logger = LoggerFactory.getLogger(SaticScheduleTask.class);
    //
    //    @Resource
    //    private GenerationService generationService;
    //    @Resource
    //    private StatusService statusService;
    //    @Resource
    //    private AverageAndGeneratingService averageAndGeneratingService;
    //    @Resource
    //    private RealtimeSpeedPowerService realtimeSpeedPowerService;
    //    @Resource
    //    private TheorypowerService theorypowerService;
    //    @Resource
    //    private FiveLossesService fiveLossesService;
    //    @Resource
    //    private SafetyService safetyService;
    //    //3.添加定时任务
    //    /**
    //     * 电计量实时计算计算（电量，上网，购网，场用）
    //     * 每15分钟执行一次
    //     */
    //
    //    @XxlJob("electricityMetering-realtime")
    //    public void electricityMetering()  {
    //
    //
    //        XxlJobHelper.log("电计量实时调度程序执行开始!........");
    //        try {
    //            generationService.saveGenerationDatas();
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    //        XxlJobHelper.log("电计量实时调度任务处理完成!........");
    //    }
    //
    //    /**
    //     * 存储meterpointvalue
    //     * 每10分钟执行一次
    //     */
    //    @XxlJob("electricityMetering-history1")
    //    public void history1()  {
    //
    //        XxlJobHelper.log("电计量历史1调度程序执行开始!........");
    //        String date = DateUtils.toDate1(DateUtils.getCurrentDate());
    //        try {
    //            generationService.saveMeterpointValueRealtime(date,date);
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    //        XxlJobHelper.log("电计量历史1调度任务处理完成!........");
    //    }
    //
    //    /**
    //     * 存储meterpointvalue(处理每天最后一个值，保证是第二天0点值)
    //     * 每天0：30执行
    //     */
    //    @XxlJob("electricityMetering-history2")
    //    public void history2()  {
    //
    //        XxlJobHelper.log("电计量历史2调度程序执行开始!........");
    //        String yesterdayStr = DateUtils.getYesterdayStr("yyyy-MM-dd");
    //        try {
    //            generationService.saveMeterpointValueRealtime(yesterdayStr,yesterdayStr);
    //
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    //
    //        XxlJobHelper.log("电计量历史2调度任务处理完成!........");
    //    }
    //
    //    /**
    //     * 实时状态计算
    //     * 只执行一次（死循环）
    //     * 2s
    //     */
    //    @XxlJob("status-realtime")
    //    public void status() throws Exception {
    ////        while(true){
    //            XxlJobHelper.log("实时状态调度程序执行开始!........");
    //            statusService.calculateStatus();
    //            statusService.calculateStatusNumber();
    //            XxlJobHelper.log("实时状态调度程序执行完成!........");
    ////        }
    //
    //    }
    //
    //    /**
    //     * 平均风速，平均功率，scada发电量计算
    //     * 每10分钟一次
    //     */
    //    @XxlJob("averageandGenerating-realtime")
    //    public void averageandGenerating() throws Exception {
    //            XxlJobHelper.log("平均风速，功率，scada发电量调度程序执行开始!........");
    //            averageAndGeneratingService.saveAvespeedAndAvepowerAndScada();
    //            XxlJobHelper.log("平均风速，功率，scada发电量调度程序执行完成!........");
    //    }
    //
    //    /**
    //     * 实时风速功率
    //     * 只执行一次（死循环）
    //     * 2s
    //     */
    //    @XxlJob("speedAndPower-realtime")
    //    public void speedAndPower() throws Exception {
    ////        while (true){
    //            XxlJobHelper.log("实时风速，实时功率调度程序执行开始!........");
    //            realtimeSpeedPowerService.calculateRealtimeSpeedPower();
    //            XxlJobHelper.log("实时风速，实时功率调度程序执行完成!........");
    ////        }
    //    }
    //
    //    /**
    //     * 拟合功率曲线,存储到数据库中
    //     * 一个月执行一次
    //     * @throws Exception
    //     */
    //    @XxlJob("fittingpower-realtime")
    //    public void fittingpower() throws Exception {
    //        XxlJobHelper.log("拟合功率曲线调度程序执行开始!........");
    //        theorypowerService.fittingPower();
    //        XxlJobHelper.log("拟合功率曲线调度程序执行完成!........");
    //    }
    //
    //
    //    /**
    //     * 计算理论功率，保证功率
    //     * 死循环
    //     * 10min
    //     * @throws Exception
    //     */
    //    @XxlJob("theropower-realtime")
    //    public void theropower() throws Exception {
    ////        while (true){
    //            XxlJobHelper.log("理论保证功率调度程序执行开始!........");
    //            theorypowerService.theropower();
    //            XxlJobHelper.log("理论保证功率调度程序执行完成!........");
    ////        }
    //
    //    }
    //
    //    /**
    //     * 计算损失电量
    //     * 1小时一次（*：20）
    //     * 30min
    //     * @throws Exception
    //     */
    //    @XxlJob("losses-realtime")
    //    public void losses() throws Exception {
    //            XxlJobHelper.log("损失电量调度程序执行开始!........");
    //            fiveLossesService.lossesReal();
    //            XxlJobHelper.log("损失电量调度程序执行完成!........");
    //    }
    //
    //    /**
    //     * 安全天数
    //     * 每日0点
    //     * @throws Exception
    //     */
    //    @XxlJob("safe-realtime")
    //    public void safety() throws Exception {
    //        XxlJobHelper.log("安全天数调度程序执行开始!........");
    //        safetyService.safetyReatimel();
    //        XxlJobHelper.log("安全天数调度程序执行完成!........");
    //    }
    //
    //    /**
    //     * 保存shutdownevent
    //     * 2分钟执行一次
    //     */
    //    @XxlJob("shutdownevent-realtime")
    //    public void shutdownevent(){
    //        XxlJobHelper.log("故障事件调度程序执行开始!........");
    //        fiveLossesService.saveShutdownevent();
    //        XxlJobHelper.log("故障事件调度程序执行完成!........");
    //    }


}
