package com.njcn.gather.tools.comtrade.comparewave.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 电能质量分析系统配置类
 * 
 * <p>通过Spring Boot配置文件（application.yml）读取电能质量分析相关的配置参数，
 * 包括标称值、阈值、读取配置、计算配置和输出配置等。</p>
 * 
 * <p>配置前缀：power-quality</p>
 * 
 * @author hongawen
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "power-quality")
public class PowerQualityConfig {

    /** 数据读取配置：包含数据读取相关的参数 */
    private Reading reading;
    
    /** 计算配置：包含电能质量计算相关的参数 */
    private Calculation calculation;

    /**
     * 数据读取配置类
     * 定义数据读取相关的配置参数
     */
    @Data
    public static class Reading {
        /** 数据编码格式 */
        private String encoding;
    }
    
    /**
     * 计算配置类
     * 定义电能质量计算相关的配置参数
     */
    @Data
    public static class Calculation {
        /** 采样配置 */
        private Sampling sampling;
        
        /** 谐波分析次数，通常为50次 */
        private Integer harmonicTimes;
        
        /** 是否合成IB相电流（IB = -(IA + IC)） */
        private Boolean ibAdd;
        
        /** 是否合成线电压谐波 */
        private Boolean uharmAdd;
        
        /**
         * 采样配置类
         * 定义采样相关的参数
         */
        @Data
        public static class Sampling {
            /** 默认采样率，每周波采样点数 */
            private Integer defaultRate;
        }
    }

}