package com.njcn.gather.report.pojo.enums;

import lombok.Getter;

/**
 * 影响量枚举
 * @author hongawen
 * @version 1.0
 * @data 2025/3/27 21:07
 */
@Getter
public enum AffectEnum {


    // 第三个参数 sort 为报告小节排序档位：额定=1、单影响量=2、多影响量=3（同档内再按 Script_Index 升序）
    BASE("Base", "额定条件XX准确度测试", 1),
    VOL("VOL", "电压幅值对XX测量的影响", 2),
    FREQ("Freq", "频率变化对XX测量的影响", 2),
    HARM("Harm", "谐波对XX测量的影响", 2),
    // Single / Many 是检测树的分组标题，不会作为叶子 Script_SubType 落到设备数据上
    SINGLE("Single", "单影响量下XX准确度测试", 2),
    MANY("Many", "多影响量下XX准确度测试", 3),
    // 以下为真实的多影响量组合 Script_SubType（报告与检测树共用同一份文案）
    MANY_VOL_HARM_INHARM("Many-Vol-Harm-InHarm", "电压和谐波和间谐波对XX的影响", 3),
    MANY_IMBV_HARM_INHARM("Many-IMBV-Harm-InHarm", "三项电压不平衡和谐波和间谐波对XX的影响", 3),
    MANY_FREQ_HARM_INHARM("Many-Freq-Harm-InHarm", "频率和谐波和间谐波对XX的影响", 3);

    private String key;

    private String desc;

    /**
     * 报告小节排序档位：额定=1、单影响量=2、多影响量=3；同档内再按 Script_Index 升序
     */
    private int sort;

    AffectEnum(String key, String desc, int sort) {
        this.key = key;
        this.desc = desc;
        this.sort = sort;
    }

    /**
     * 根据key找到适配的枚举
     *
     * @param key 枚举的key
     * @return 匹配的枚举实例，如果没有找到则返回null
     */
    public static AffectEnum getByKey(String key) {
        for (AffectEnum affectEnum : AffectEnum.values()) {
            if (affectEnum.getKey().equalsIgnoreCase(key)) {
                return affectEnum;
            }
        }
        return null;
    }
}
