package vip.xiaonuo.coldchain.modular.monitordevice.enums;

/**
 * @author jackzhou
 * @version 1.0
 * @project jfcloud-coldchain
 * @description
 * @date 2024/11/19 18:06:11
 */

import lombok.Getter;
import vip.xiaonuo.coldchain.core.service.dataprocess.dataclean.MonitorDataProcessor;

@Getter
public enum DeviceModelEnum {
    // 定义所有设备的型号和名称
    WIFI_CO2_TEMP_HUMIDITY_TRANSCEIVER(MonitorDataProcessor.RS_CO2WS_WIFI_2_5000P, "WIFI型CO2温湿度变迭器"),
    WIFI_MULTI_PROBE_TEMP_HUMIDITY_RECORDER_1(MonitorDataProcessor.RS_WD_WIFI_6_5WL, "WIFI型超宽低温记录仪"),
    WIFI_MULTI_PROBE_TEMP_HUMIDITY_RECORDER_2(MonitorDataProcessor.RS_WS_WIFI5_C3_Y2, "WIFI多探头温湿度变迭记录仪(2路)"),
    WIFI_MULTI_PROBE_TEMP_HUMIDITY_RECORDER_4(MonitorDataProcessor.RS_WS_WIFI5_C3_Y4, "WIFI多探头温湿度变迭记录仪(4路)"),
    RS_WS_WIFI5_Y2(MonitorDataProcessor.RS_WS_WIFI5_Y2, "WIFI多探头温湿度不带电池(2路)"),
    RS_WS_WIFI5_Y4(MonitorDataProcessor.RS_WS_WIFI5_Y4, "WIFI多探头温湿度不带电池(4路)"),
    RS_CO2WS_WIFI_2_2000P(MonitorDataProcessor.RS_CO2WS_WIFI_2_2000P, "WIFI单二氧化碳指标不带温湿度"),
    DEFAULT(MonitorDataProcessor.RS_WS_DEFAULT, "默认温湿度处理");

    private final String deviceCode;  // 设备型号
    private final String deviceName;  // 设备名称

    // 构造方法
    DeviceModelEnum(String deviceCode, String deviceName) {
        this.deviceCode = deviceCode;
        this.deviceName = deviceName;
    }

    /**
     * 根据设备型号获取设备名称
     *
     * @param deviceCode 设备型号
     * @return 设备名称
     */
    public static String getDeviceNameByCode(String deviceCode) {
        for (DeviceModelEnum model : values()) {
            if (model.getDeviceCode().equals(deviceCode)) {
                return model.getDeviceCode();
            }
        }
        return DEFAULT.getDeviceCode();  // 返回 null 或者可以抛出异常，依据业务需求
    }

    /**
     * 根据设备名称获取设备型号
     *
     * @param deviceCode 设备名称
     * @return 设备型号
     */
    public static DeviceModelEnum getDeviceCodeByCode(String deviceCode) {
        for (DeviceModelEnum model : values()) {
            if (model.getDeviceCode().equalsIgnoreCase(deviceCode)) {
                return model;
            }
        }
        return DEFAULT;  // 返回 null 或者可以抛出异常，依据业务需求
    }
}
