package com.njcn.harmonic.pojo.vo;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 类的介绍：
 *
 * @author xuyang
 * @version 1.0.0
 * @createTime 2022/5/5 11:00
 */
@Data
public class OverAreaLimitVO {

    /**
     * 名称
     */
    private String name;

    /**
     * 在线监测点个数
     */
    private Integer onlineMonitorNumber = 0;

    /**
     * 超标监测点个数
     */
    private Integer overLimitMonitorNumber = 0;

    /**
     * 超标监测点数占比
     */
    private Double overBiLi = -1.0;

    //频率偏差超标情况
    /**
     * 个数
     */
    private Integer frequencyMonitorNumber = 0;

    /**
     * 超标监测点集合，区域报告使用
     */
    private List<String> freqMonitorList = new ArrayList<>();;
    /**
     * 占比
     */
    private Double frequencyBiLi = -1.0;
    /**
     * 日均超标占比
     */
    private Double frequencyDayAvgBiLi = -1.0;


    /**
     * 平均超标天数
     */
    private Double frequencyOverDayBiLi = -1.0;


    //电压偏差超标情况
    /**
     * 个数
     */
    private Integer voltageMonitorNumber = 0;
    /**
     * 超标监测点集合，区域报告使用
     */
    private List<String> voltageMonitorList = new ArrayList<>();;
    /**
     * 占比
     */
    private Double voltageBiLi = -1.0;
    /**
     * 日均超标占比
     */
    private Double voltageDayAvgBiLi = -1.0;
    /**
     * 平均超标天数
     */
    private Double voltageOverDayBiLi = -1.0;

    //谐波电压超标情况
    /**
     * 个数
     */
    private Integer harmonicVoltageMonitorNumber = 0;
    /**
     * 超标监测点集合，区域报告使用
     */
    private List<String> harmonicVoltageMonitorList = new ArrayList<>();

    /**
     * 占比
     */
    private Double harmonicVoltageBiLi = -1.0;
    /**
     * 日均超标占比
     */
    private Double harmonicVoltageDayAvgBiLi = -1.0;
    /**
     * 平均超标天数
     */
    private Double harmonicVoltageOverDayBiLi = -1.0;

    //谐波电流超标情况
    /**
     * 个数
     */
    private Integer harmonicCurrentMonitorNumber = 0;
    /**
     * 超标监测点集合，区域报告使用
     */
    private List<String> harmonicCurrentMonitorList = new ArrayList<>();;
    /**
     * 占比
     */
    private Double harmonicCurrentBiLi = -1.0;
    /**
     * 日均超标占比
     */
    private Double harmonicCurrentDayAvgBiLi = -1.0;
    /**
     * 平均超标天数
     */
    private Double harmonicCurrentOverDayBiLi = -1.0;

    //三相电压不平衡度超标情况
    /**
     * 个数
     */
    private Integer threePhaseVoltageMonitorNumber = 0;
    /**
     * 超标监测点集合，区域报告使用
     */
    private List<String> threePhaseVoltageMonitorList = new ArrayList<>();;
    /**
     * 占比
     */
    private Double threePhaseVoltageBiLi = -1.0;
    /**
     * 日均超标占比
     */
    private Double threePhaseVoltageDayAvgBiLi = -1.0;
    /**
     * 平均超标天数
     */
    private Double threePhaseVoltageOverDayBiLi = -1.0;

    //闪变超标情况
    /**
     * 个数
     */
    private Integer flickerMonitorNumber = 0;
    /**
     * 超标监测点集合，区域报告使用
     */
    private List<String> flickerMonitorList = new ArrayList<>();;
    /**
     * 占比
     */
    private Double flickerBiLi = -1.0;
    /**
     * 日均超标占比
     */
    private Double flickerDayAvgBiLi = -1.0;
    /**
     * 平均超标天数
     */
    private Double flickerOverDayBiLi = -1.0;

    //负序电流限值超标情况
    /**
     * 个数
     */
    private Integer negativeMonitorNumber = 0;
    /**
     * 占比
     */
    private Double negativeBiLi = -1.0;
    /**
     * 日均超标占比
     */
    private Double negativeDayAvgBiLi = -1.0;
    /**
     * 平均超标天数
     */
    private Double negativeOverDayBiLi = -1.0;

    //间谐波电压超标情况

    /**
     * 超标监测点集合，区域报告使用
     */
    private List<String> inHarmonicVMonitorList = new ArrayList<>();;
    /**
     * 个数
     */
    private Integer interHarmonicMonitorNumber = 0;
    /**
     * 占比
     */
    private Double interHarmonicBiLi = -1.0;
    /**
     * 日均超标占比
     */
    private Double interHarmonicDayAvgBiLi = -1.0;
    /**
     * 平均超标天数
     */
    private Double interHarmonicOverDayBiLi = -1.0;



    private List<InnerHarmV> innerHarmVList;


    private List<InnerHarmV> innerHarmIList;


    @Data
   public static class InnerHarmV{

        private String name;
        //谐波电压超标情况
        /**
         * 个数
         */
        private Integer limitCount = 0;
        /**
         * 超标监测点集合，区域报告使用
         */
        private List<String> limitIdList;

        /**
         * 占比
         */
        private Double limitRate = -1.0;
        /**
         * 日均超标占比
         */
        private Double dayAvg = -1.0;
        /**
         * 平均超标天数
         */
        private Double dayLimit = -1.0;
    }
}
