package org.ts.ddcs.enums;

/**
 * 水资源规约-元素编码定义
 */
public enum SzyElementCodeEnum {
    /**
     * 确认
     */
    CODE_CMD("00", "CMD"),

    /**
     * 雨量参数
     */
    CODE_RAIN("01", "RAIN"),

    /**
     * 水位参数
     */
    CODE_WATER_LEVEL("02", "water_level"),

    /**
     * 流量（水量）参数
     */
    CODE_FLOW_RATE("03", "FLOWRATE"),

    /**
     * 流速参数
     */
    CODE_FLOW_SPEED("04", "FLOWSPEED"),

    /**
     * 闸位参数
     */
    CODE_GATE("05", "GATE"),

    /**
     * 功率参数
     */
    CODE_POWER("06", "POWER"),

    /**
     * 气压参数
     */
    CODE_AIR_PRESSURE("07", "AIR_PRESSURE"),

    /**
     * 风速参数
     */
    CODE_WIND_SPEED("08", "WIND_SPEED"),

    /**
     * 水温参数
     */
    CODE_WATER_TEMPERATURE("09", "WATER_TEMPERATURE"),

    /**
     * 水质参数
     */
    CODE_WATER_QUALITY("0A", "WQ"),

    /**
     * 土壤含水率参数
     */
    CODE_GROUND_MOISTRUE("0B", "GROUND_MOISTRUE"),

    /**
     * 蒸发量参数
     */
    CODE_EVAPORATION("0C", "EVAPORATION"),

    /**
     * 报警或状态参数
     */
    CODE_WARN("0D", "WARN"),

    /**
     * 统计雨量
     */
    CODE_COUNT_RAIN("0E", "COUNT_RAIN"),

    /**
     * 水压参数
     */
    CODE_WATER_PRESSURE("0F", "WATER_PRESSURE"),
    /**
     * 观测时间
     */
    CODE_EXT_TT("F0", "EXT_TT"),
    /**
     * 测站编码
     */
    CODE_EXT_ST("F1", "EXT_ST"),
    /**
     * 扩展观测时间
     */
    CODE_EXT_TT427("FFF0", "EXT_TT427"),
    /**
     * 测站状态
     */
    CODE_EXT_RTU_STATUS("F2", "EXT_RTU_STATUS"),
    /**
     * 报警状态
     */
    CODE_EXT_RTU_WARN("F3", "EXT_RTU_WARN"),
    /**
     * 信号强度
     */
    CODE_EXT_STATUS_SIGNAL("FF50", "EXT_STATUS_SIGNAL"),
    /**
     * 电源电压
     */
    CODE_EXT_STATUS_BV("FF51", "EXT_STATUS_BV"),
    /**
     * RTU温度
     */
    CODE_EXT_STATUS_RTU_TEMPERATURE("FF52", "EXT_STATUS_RTU_TEMPERATURE"),
    /**
     * 唯一识别码
     */
    CODE_EXT_STATUS_UUID("FF53", "EXT_STATUS_UUID"),
    /**
     * 物联卡CCID
     */
    CODE_EXT_STATUS_CCID("FF54", "EXT_STATUS_CCID"),
    /**
     * 设备状态,1字节HEX	0 - SD卡正常   1 - SD卡损坏
     */
    CODE_EXT_STATUS_RUN("FF55", "EXT_STATUS_RUN"),
    /**
     * 异常值 , 0 设备正常 , 1  设备异常 代码：
     */
    CODE_EXT_STATUS_ERROR("FF56", "EXT_STATUS_ERROR"),
    /**
     * 上报状态（每一路的上报状态）
     */
    CODE_EXT_STATUS_UP("FF57", "EXT_STATUS_UP"),
    /**
     * 上报时间
     */
    CODE_EXT_UP_TIME("FF58", "EXT_UP_TIME"),
    /**
     * 电池状态
     */
    CODE_EXT_STATUS_BT("FF59", "EXT_STATUS_BT"),
    /**
     * 充电状态
     */
    CODE_EXT_STATUS_BT_IN("FF60", "EXT_STATUS_BT_IN"),
    /**
     * 放电状态
     */
    CODE_EXT_STATUS_BT_OUT("FF61", "EXT_STATUS_BT_OUT"),
    /**
     * 电池电量
     */
    CODE_EXT_STATUS_BT_PERCENT("FF62", "EXT_STATUS_BT_PERCENT"),
    /**
     * 电池温度
     */
    CODE_EXT_STATUS_BT_TEMPERATURE("FF63", "EXT_STATUS_BT_TEMPERATURE"),
    /**
     * 阵列电压
     */
    CODE_EXT_STATUS_SUN_EV("FF64", "EXT_STATUS_SUN_EV"),
    /**
     * 阵列电流
     */
    CODE_EXT_STATUS_SUN_EA("FF65", "EXT_STATUS_SUN_EA"),

    /**
     * 累计流量(水量)参数
     */
    CODE_SUM_FLOW_RATE_FF4("FFF1", "EXT_SUM_FLOW_RATE"),
    /**
     * 小时流量
     */
    CODE_HOUR_FLOW_RATE_FF5("FFF2", "EXT_HOUR_FLOW_RATE");


    private String code;

    private String name;

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

    /**
     * Function:根据code来获取对应的name
     * Author: Admin
     * Date:2021/6/26
     *
     * @param code
     * @return java.lang.String
     * @throws Exception
     */
    public static String getName(String code) {
        for (SzyElementCodeEnum type : SzyElementCodeEnum.values()) {
            if (type.code.equals(code)) {
                return type.name;
            }
        }
        return null;
    }


    public static String getCode(String name) {
        for (SzyElementCodeEnum point : SzyElementCodeEnum.values()) {
            if (point.name.equals(name)) {
                return point.code;
            }
        }
        return null;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
