package cn.wise.sc.energy.power.plant.business.domain.eum;

import cn.wise.sc.energy.power.plant.common.core.exception.ResponseEnum;
import lombok.Getter;

/**
 * @description: 运行时环境配置项目名字
 * @author: qh
 * @create: 2020-07-14 13:56
 **/
@Getter
public enum ItemNameEnum {

    /**
     * 是否允许保存历史数据
     * [1:是]  [0:否]
     */
    PermitSave(1, "PermitSave"),
    /**
     * 是否允许报警:
     * [1:是]  [0:否]
     */
    PermitAlert(2, "PermitAlert"),
    /**
     * 是否保存报警前后数据:
     * [1:是]  [0:否]
     */
    PermitAlertSave(3, "PermitAlertSave"),
    /**
     * 报警前录波时间(秒)
     */
    PREVALERTTIIME(10, "PREVALERTTIIME"),
    /**
     * 报警后录波时间(秒)
     */
    AFTERALERTTIIME(11, "AFTERALERTTIIME"),
    /**
     * 稳定数据样本存储时间间隔(s)
     */
    STABLESAVETIME(12, "STABLESAVETIME"),
    /**
     * 用于稳定数据的平均时间(s)(报警数据统计时间)
     */
    STABLEAVETIME(13, "STABLEAVETIME"),
    /**
     * 开机过程延迟时间(s)
     */
    STARTUPDELAYTIME(14, "STARTUPDELAYTIME"),
    /**
     * 转速稳定判定时间(s)
     */
    RPMCHECKTIME(15, "RPMCHECKTIME"),
    /**
     * 过渡过程(含开停机)在转速稳定时数据存储时间间隔(s)
     */
    TRANSSAVETIME(16, "TRANSSAVETIME"),
    /**
     * 用于判定机组工况运行稳定的持续时间(s)
     */
    STABLECHECKTIME(17, "STABLECHECKTIME");

    private Integer code;

    private String name;

    ItemNameEnum(int code, String name) {
        this.code = code;
        this.name = name;
    }

    /**
     * 根据名字获取运行时配置项名字
     *
     * @param name 条件
     * @return ItemNameEnum
     */
    public static ItemNameEnum getItemNameEnumByName(String name) {
        ResponseEnum.LICENCE_NOT_FOUND.assertNotEmpty(name);
        ItemNameEnum[] values = ItemNameEnum.values();
        ItemNameEnum rts = null;
        for (ItemNameEnum itemNameEnum : values) {
            if (itemNameEnum.getName().equals(name)) {
                rts = itemNameEnum;
            }
        }
        return rts;
    }

    /**
     * 返回枚举名字
     *
     * @return getName()
     */
    @Override
    public String toString() {
        return getName();
    }
}
