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

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

import java.util.List;

/**
 * @author wr
 * @description
 * @date 2024/4/16 14:55
 */
@Data
public class GridDiagramVO {


    @ApiModelProperty(name = "info", value = "全部监测点信息")
    private List<?> info;

    @ApiModelProperty(name = "gwInfo", value = "国网监测点信息信息")
    private List<?> gwInfo;

    @ApiModelProperty(name = "data", value = "总信息")
    private List<Double> data;

    @ApiModelProperty(name = "gwData", value = "国网总信息")
    private List<Double> gwData;
    @Data
    public static class LineStatistics {
        @ApiModelProperty(name = "orgId", value = "单位id")
        private String orgId;

        @ApiModelProperty(name = "orgName", value = "单位名称")
        private String orgName;

        @ApiModelProperty(name = "count", value = "次数")
        private Long count;

        @ApiModelProperty(name = "data", value = "数据")
        private List<?> data;
    }

    @Data
    public static class LineStatisticsData {
        @ApiModelProperty(name = "columnName", value = "列名")
        private String columnName;

        @ApiModelProperty(name = "num", value = "监测点个数")
        private Integer num;

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

        @ApiModelProperty(name = "onLineNum", value = "在线监测点数")
        private Integer onLineNum;

        @ApiModelProperty(name = "onLineNumList", value = "在线监测点集合")
        private List<String> onLineNumList;

        @ApiModelProperty(name = "onLineRate", value = "数据在线率")
        private Float onLineRate;

        @ApiModelProperty(name = "integrityRate", value = "数据完整率")
        private Float integrityRate;
    }

    @Data
    public static class StatisticsData {
        @ApiModelProperty(name = "columnName", value = "列名")
        private String columnName;

        @ApiModelProperty(name = "numOne", value = "数据")
        private Long numOne;

        @ApiModelProperty(name = "numOneList", value = "数据集合")
        private List<String> numOneList;

        /**
         * 上送国网
         */
        @ApiModelProperty(name = "numTwo", value = "数据")
        private Long numTwo;

        @ApiModelProperty(name = "numTwoList", value = "数据集合")
        private List<String> numTwoList;
    }
    @Data
    public static class DeviceData {

        @ApiModelProperty(name = "orgId", value = "单位id")
        private String orgId;

        @ApiModelProperty(name = "orgName", value = "单位名称")
        private String orgName;

        @ApiModelProperty(name = "devCount", value = "终端数量")
        private Long devCount;

        @ApiModelProperty(name = "devOnCount", value = "终端数量")
        private Long devOnCount;

        @ApiModelProperty(name = "onlineEvaluate", value = "终端在线率评价")
        private Double onlineEvaluate;

    }

    @Data
    public static class LineData {

        @ApiModelProperty(name = "orgId", value = "单位id")
        private String orgId;

        @ApiModelProperty(name = "orgName", value = "单位名称")
        private String orgName;

        @ApiModelProperty(name = "onLineRate", value = "数据在线率")
        private Float onLineRate;

        @ApiModelProperty(name = "integrityRate", value = "数据完整率")
        private Float integrityRate;

        @ApiModelProperty(name = "outOfStandardRate", value = "超标监测点占比")
        private Float outOfStandardRate;

    }

    @Data
    public static class DevData {

        @ApiModelProperty(name = "orgId", value = "单位id")
        private String orgId;

        @ApiModelProperty(name = "orgName", value = "单位名称")
        private String orgName;

        @ApiModelProperty(name = "onLineRate", value = "运行个数")
        private Long runNum;

        @ApiModelProperty(name = "integrityRate", value = "检修个数")
        private Long overhaulNum;

        @ApiModelProperty(name = "outOfStandardRate", value = "退役个数")
        private Long refundNum;

        @ApiModelProperty(name = "onLineRate", value = "数据在线率")
        private Float onLineRate;
    }

    @Data
    public static class AreaData {

        @ApiModelProperty(name = "orgId", value = "单位id")
        private String orgId;

        @ApiModelProperty(name = "orgName", value = "单位名称")
        private String orgName;

        @ApiModelProperty(name = "lineNum", value = "监测点个数")
        private Integer lineNum;

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

        @ApiModelProperty(name = "onlineNum", value = "在线监测点个数")
        private Integer onlineNum;

        @ApiModelProperty(name = "onlineList", value = "在线监测点集合")
        private List<String> onlineList;

        @ApiModelProperty(name = "alarm", value = "告警监测点个数")
        private Integer alarm;

        @ApiModelProperty(name = "onLineNumList", value = "告警监测点信息")
        private List<String> alarmList;

        @ApiModelProperty(name = "subNum", value = "变电站个数")
        private Integer subNum;

        @ApiModelProperty(name = "alarmSubNum", value = "告警变电站数量")
        private Integer alarmSubNum;

        @ApiModelProperty(name = "alarmSubList", value = "告警变电站监测点数量")
        private List<String> alarmSubList;

        @ApiModelProperty(name = "deviceNum", value = "终端个数")
        private Integer deviceNum;

        @ApiModelProperty(name = "onDevice", value = "在线终端数量")
        private Integer onDevice;

    }
    @Data
    public static class RunData {
        // 合格/告警     在线/离线     数据完整性≥90% / <90%    电能质量指标未超标/超标
        @ApiModelProperty(name = "lineNumOne", value = "监测点个数")
        private Integer lineNumOne;

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

        @ApiModelProperty(name = "lineNumTwo", value = "监测点个数")
        private Integer lineNumTwo;

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

    }
}
