package cn.com.ty.lift.system.constants;

import cn.com.ty.lift.common.constants.ApiConstants;

import java.util.HashMap;
import java.util.Map;

/**
 * @author huangyuan
 * @date 2019-12-17
 * @description 公共常量
 */
public class CommonConstants {

    /**
     * 计划日期的时间格式
     */
    public static final String PLAN_DATE_FORMAT = "yyyy-MM-dd";

    /**
     * 返回码字段常量
     */
    public static final String RETURN_CODE_FIELD = "code";

    /**
     * 返回信息字段常量
     */
    public static final String RETURN_MSG_FIELD = "message";

    /**
     * 待办类型 -> 待办数量
     */
    public static final Map<Integer, Long> TODO_TYPE_TO_NUM = new HashMap<>();

    /**
     * 电梯类型 -> 电梯数量
     */
    public static final Map<Integer, Long> LIFT_DATA_STATUS_TO_NUM = new HashMap<>();

    /**
     * vip状态 -> 公司数量
     */
    public static final Map<Integer, Long> VIP_STATUS_TO_COMPANY_NUM = new HashMap<>();

    /**
     * 用户申请状态码数组
     */
    public static final int[] USER_APPLICATION_STATUS = {
            ApiConstants.ApplicationConstants.APPLY_WAIT,
            ApiConstants.ApplicationConstants.APPLY_PASS,
            ApiConstants.ApplicationConstants.APPLY_FAIL
    };

    /**
     * 企业申请状态数组
     */
    public static final int[] COMPANY_ATTESTATION_STATUS = {
            ApiConstants.CompanyConstants.MAINTENANCE_WAIT_CERTIFICATE,
            ApiConstants.CompanyConstants.MAINTENANCE_PASS,
            ApiConstants.CompanyConstants.MAINTENANCE_FAIL
    };

    //初始化数据
    static {
        //初始化待办类型对应数量
        for (int todoType : TodoConstants.TODO_TYPE_ARRAY) {
            TODO_TYPE_TO_NUM.put(todoType, 0L);
        }
        //初始化电梯状态对应电梯数量
        for (int liftDataStatus : LiftDataConstants.LIFT_DATA_STATUS_ARRAY) {
            LIFT_DATA_STATUS_TO_NUM.put(liftDataStatus, 0L);
        }
        //初始化vip状态对应公司数量
        for (int vipStatus : PlatformDataStatisticsConstants.MAINTENANCE_VIP_STATUS_ARRAY) {
            VIP_STATUS_TO_COMPANY_NUM.put(vipStatus, 0L);
        }
    }

    /**
     * 待办常量
     */
    public interface TodoConstants {
        //待办状态

        /**
         * 行政待办
         */
        int ADMINISTRATIVE_TODO = 1;

        /**
         * 急修待办
         */
        int EMERGENCY_TODO = 2;

        /**
         * 保养待办
         */
        int MAINTENANCE_TODO = 3;

        /**
         * 大修待办
         */
        int CAPITAL_REPAIR_TODO = 4;

        /**
         * 年检待办
         */
        int ANNUAL_INSPECTION_TODO = 5;

        /**
         * 待办状态数组
         */
        int[] TODO_TYPE_ARRAY = {
                ADMINISTRATIVE_TODO,
                EMERGENCY_TODO,
                MAINTENANCE_TODO,
                CAPITAL_REPAIR_TODO,
                ANNUAL_INSPECTION_TODO
        };
    }

    /**
     * 电梯数据常量
     */
    public interface LiftDataConstants {
        //电梯状态

        /**
         * 所有电梯
         */
        int STATUS_ALL_LIFT = 0;

        /**
         * 今日待保养电梯
         */
        int STATUS_WAIT_MAINTENANCE = 10;

        /**
         * 今日保养中电梯
         */
        int STATUS_GO_MAINTENANCE = 11;

        /**
         * 今日已保养电梯
         */
        int STATUS_HAVE_MAINTENANCE = 12;

        /**
         * 今日待急修电梯
         */
        int STATUS_WAIT_EMERGENCY = 20;

        /**
         * 今日已急修
         */
        int STATUS_HAVE_EMERGENCY = 21;

        /**
         * 未定位电梯
         */
        int STATUS_NO_LOCATE = -1;

        /**
         * 电梯状态数组
         */
        int[] LIFT_DATA_STATUS_ARRAY = {
                STATUS_ALL_LIFT,
                STATUS_WAIT_MAINTENANCE,
                STATUS_GO_MAINTENANCE,
                STATUS_HAVE_MAINTENANCE,
                STATUS_WAIT_EMERGENCY,
                STATUS_HAVE_EMERGENCY,
                STATUS_NO_LOCATE
        };
    }

    /**
     * 数据统计常量
     */
    public interface PlatformDataStatisticsConstants {
        //是否vip用户
        /**
         * 所有用户
         */
        int IS_VIP_ALL = 10;

        /**
         * vip用户
         */
        int IS_VIP_YES = 1;

        /**
         * 不是vip用户
         */
        int IS_VIP_NO = 0;

        /**
         * vip用户状态数组
         */
        int[] MAINTENANCE_VIP_STATUS_ARRAY = {
                IS_VIP_ALL,
                IS_VIP_YES,
                IS_VIP_NO
        };
    }

    /**
     * 平台日历常量
     */
    public interface PlatformCalendarConstants {
        //时间格式
        /**
         * 请求时间格式
         */
        String REQUEST_DATE_FORMAT = "yyyy-MM-dd";

        /**
         * 日期转化时间格式
         */
        String TRANS_DATE_FORMAT = "yyyy-MM-dd";

        /**
         * 月初时间
         */
        String MONTH_BEGIN_DATE = "monthBegin";

        /**
         * 月末时间
         */
        String MONTH_END_DATE = "monthEnd";

        /**
         * 电梯状态数组
         * 状态说明如下:
         * 1.待维保电梯
         * 2.维保中电梯
         * 3.维保完成电梯
         * 4.召修待完成电梯
         * 5.急修中电梯
         * 6.急修完成电梯
         * 7.计划年检电梯
         * 8.年检中电梯
         * 9.年检完成电梯
         */
        int[] LIFT_STATUS_ARRAY = {
                -1, 1, 2, 3,
                4, 5, 6,
                7, 8, 9
        };

    }

}
