# -*- coding: utf-8 -*-
from panda_util import PandaUtil
import time
from report_push import ReportPush


class Config(object):
    """
        任务id对应的key
        day_push:1
        week_push_one:2
        week_push_two: 3
    """
    JOBS = [
        {
            'id': 'day_push',
            'func': 'apscheduler_elab:Funcs.day_push',
            'args': '',
            'trigger': 'cron',
            'day_of_week': '*',
            'hour': 8,
            'minute': 50
        },
        {
            'id': 'week_push_one',
            'func': 'apscheduler_elab:Funcs.week_push_one',
            'args': '',
            'trigger': 'cron',
            'day_of_week': '1',
            'hour': 8,
            'minute': 50
        },
        {
            'id': 'week_push_two',
            'func': 'apscheduler_elab:Funcs.week_push_two',
            'args': '',
            'trigger': 'cron',
            'day_of_week': '1',
            'hour': 10,
            'minute': 50
        }
    ]

    # 线程池配置
    SCHEDULER_EXECUTORS = {
        'default': {'type': 'threadpool', 'max_workers': 20}
    }

    SCHEDULER_JOB_DEFAULTS = {
        'coalesce': False,
        'max_instances': 3
    }

    # 调度器开关
    SCHEDULER_API_ENABLED = True
    pass


class Funcs(object):
    @staticmethod
    def day_push():
        rp = ReportPush('bi_report')
        rp.report_push(1)

    @staticmethod
    def week_push_one():
        rp = ReportPush('bi_report')
        rp.report_push(2)

    @staticmethod
    def week_push_two():
        rp = ReportPush('bi_report')
        rp.report_push(2)

    @staticmethod
    def minute_push_elab():
        pdu = PandaUtil('linshi')
        sql = 'select house_id, COUNT(house_id) as number from t_house_image group by house_id limit 5'
        file_name = 'pandas_chart_columns2{}.xlsx'.format(time.time())
        df_data = pdu.query_data(sql)
        print(df_data.size)
        pdu.panda_chart([df_data], 1, 'title x', 'title y', file_name)


if __name__ == '__main__':
    pass