package com.njcn.device.pms.pojo.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <分布式光伏概览-信息>
 *
 * @author wr
 * @createTime: 2022-12-29
 */
@Data
public class OverviewVO implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(name = "monitorObjects", value = "监测点集合")
    private List<MonitorObject> monitorObjects;

    @ApiModelProperty(name = "setRate", value = "光伏用户")
    private PhotovoltaicUser photovoltaicUser;

    @ApiModelProperty(name = "setRate", value = "光伏容量")
    private PhotovoltaicCapacity photovoltaicCapacity;

    @Data
    public static class MonitorObject {
        private static final long serialVersionUID = 1L;

        @ApiModelProperty(name = "monitorSort", value = "监测点类别")
        private String monitorSort;
        @ApiModelProperty(name = "sumNum", value = "监测点数量")
        private String sumNum;
        @ApiModelProperty(name = "ytbSumNum", value = "同比监测点数量")
        private String ytbSumNum;
        @ApiModelProperty(name = "yhbSumNum", value = "环比监测点数量")
        private String yhbSumNum;
        @ApiModelProperty(name = "sameNum", value = "同比监测点占比")
        private String sameNum;
        @ApiModelProperty(name = "ringNum", value = "环比监测点占比")
        private String ringNum;
        @ApiModelProperty(name = "setRate", value = "设置率")
        private String setRate="20.3";

    }

    @Data
    public static class PhotovoltaicUser {
        private static final long serialVersionUID = 1L;

        @ApiModelProperty(name = "highPressure", value = "中压用户(10KV)")
        private Integer highPressure=0;

        @ApiModelProperty(name = "highPressure", value = "低压用户(380V)")
        private Integer lowPressure=0;

    }

    @Data
    public static class PhotovoltaicCapacity {
        private static final long serialVersionUID = 1L;

        @ApiModelProperty(name = "highCapacity", value = "中压容量(10KV)")
        private Float highCapacity=0.f;

        @ApiModelProperty(name = "lowCapacity", value = "低压容量(380V)")
        private Float lowCapacity=0.f;

    }

    @Data
    public static class PhotoVoltaicVoltage {
        private static final long serialVersionUID = 1L;

        @ApiModelProperty(name = "type", value = "电压类型")
        private String type;

        @ApiModelProperty(name = "num", value = "数量")
        private Integer num;

        @ApiModelProperty(name = "capacity", value = "容量")
        private Float capacity;

    }
    @Data
    public static class AlarmVO {
        private static final long serialVersionUID = 1L;

        @ApiModelProperty(name = "monitorSort", value = "监测点类别")
        private String monitorSort;

        @ApiModelProperty(name = "vAlarm", value = "谐波电压")
        private Float vAlarm;

        @ApiModelProperty(name = "flickerAlarm", value = "闪变")
        private Float flickerAlarm;

        @ApiModelProperty(name = "unbalanceAlarm", value = "三项不平横")
        private Float unbalanceAlarm;

    }

    @Data
    public static class GroupVO {
        private static final long serialVersionUID = 1L;

        @ApiModelProperty(name = "monitorSort", value = "监测点类别")
        private String monitorSort;

        @ApiModelProperty(name = "subset", value = "子集集合")
        private List<?> subset;

    }


    /**
     * 告警评级
     */
    @Data
    public static class AreaAlarmCountVO {
        private static final long serialVersionUID = 1L;
        /**
         * 单位名称
         */
        @ApiModelProperty(name = "orgName", value = "单位名称")
        private String orgName;
        /**
         * 稳态指标评级结果（0 较差 1中等 2较好）
         */
        @ApiModelProperty(name = "harmonicTypeGrade", value = "稳态指标评级结果（0 较差 1中等 2较好）")
        private Integer harmonicTypeGrade;
        /**
         * 暂态指标评级结果（0 较差 1中等 2较好）
         */
        @ApiModelProperty(name = "eventTypeGrade", value = "暂态指标评级结果（0 较差 1中等 2较好）")
        private Integer eventTypeGrade;

    }


    /**
     * 告警监测点数
     */
    @Data
    public static class MonitorAlarmCountVO {
        private static final long serialVersionUID = 1L;
        /**
         * 单位ID
         */
        private String orgNo;

        /**
         * 生成数据的时间,每月统计一次
         */
        private Date dataDate;

        /**
         * 数据类型(0:主网 1:配网)
         */
        private String dataType;

        /**
         * 监测点ID
         */
        private String measurementPointId;

        /**
         * 监测点类别
         */
        private String monitorSort;

        /**
         * 电压偏差告警情况(0:否 1:是)
         */
        private Integer vdevAlarmInfo;

        /**
         * 电压偏差严重度
         */
        private Integer vdevSeverity;

        /**
         * 频率偏差告警情况(0:否 1:是)
         */
        private Integer freqAlarmInfo;

        /**
         * 频率偏差严重度
         */
        private Integer freqSeverity;

        /**
         * 三相电压不平衡度告警情况(0:否 1:是)
         */
        private Integer unbalanceAlarmInfo;

        /**
         * 三相电压不平衡严重度
         */
        private Integer unbalanceSeverity;

        /**
         * 谐波电压告警情况(0:否 1:是)
         */
        private Integer vAlarmInfo;

        /**
         * 谐波电压严重度
         */
        private Integer vSeverity;

        /**
         * 闪变告警情况(0:否 1:是)
         */
        private Integer flickerAlarmInfo;

        /**
         * 闪变严重度
         */
        private Integer flickerSeverity;

        /**
         * 电压暂降告警情况(0:否 1:是)
         */
        private Integer sagAlarmInfo;

        /**
         * 电压暂降严重度
         */
        private Integer sagSeverity;

        /**
         * 短时中断告警情况(0:否 1:是)
         */
        private Integer interruptAlarmInfo;

        /**
         * 短时中断严重度
         */
        private Integer interruptSeverity;

        /**
         * 稳态指标评级结果（0 较差 1中等 2较好）
         */
        private Integer harmonicTypeGrade;

        /**
         * 暂态指标评级结果（0 较差 1中等 2较好）
         */
        private Integer eventTypeGrade;
    }
}
