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

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

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * pms-device
 *
 * @author cdf
 * @date 2022/10/25
 */
@Data
public class MonitorParam {

    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "监测点编号")
    private String id;

    /**
     * 监测点名称
     */
    @ApiModelProperty(value = "监测点名称")
    @NotBlank(message = "监测点名称不能为空")
    private String name;


    /**
     * 组织机构ID(外键)
     */
    @ApiModelProperty(value = "组织机构ID(外键)")
    @NotBlank(message = "组织机构ID不能为空")
    private String orgId;

    /**
     * 组织机构名称(外键)
     */
    @ApiModelProperty(value = "组织机构名称(外键)")
    @NotBlank(message = "组织机构名称不能为空")
    private String orgName;


    /**
     * 运维单位ID(外键)
     */
    @ApiModelProperty(value = "运维单位ID")
    @NotBlank(message = "运维单位ID不能为空")
    private String operationId;

    /**
     * 运维单位名称
     */
    @ApiModelProperty(value = "运维单位名称")
    @NotBlank(message = "运维单位名称不能为空")
    private String operationName;


    /**
     * 电站ID(外键)
     */
    @ApiModelProperty(value = "电站ID(外键)")
    @NotBlank(message = "电站ID不能为空")
    private String powerrId;

    /**
     * 电站名称
     */
    @ApiModelProperty(value = "电站名称")
    @NotBlank(message = "电站名称不能为空")
    private String powerrName;

    /**
     * 线路编号
     */
    @ApiModelProperty(value = "线路编号(外键)")
    @NotBlank(message = "线路编号不能为空")
    private String lineId;

    /**
     * 线路名称
     */
    @ApiModelProperty(value = "线路名称")
    @NotBlank(message = "线路名称不能为空")
    private String lineName;

    /**
     * 电压等级(字典)
     */
    @ApiModelProperty(value = "电压等级(字典)")
    @NotBlank(message = "电压等级不能为空")
    private String voltageLevel;

    /**
     * 监测点状态(字典)
     */
    @ApiModelProperty(value = "监测点状态(字典)")
    @NotBlank(message = "监测点状态不能为空")
    private String monitorState;

    /**
     * 监测点类型(字典)
     */
    @ApiModelProperty(value = "监测点类型(字典)")
    @NotBlank(message = "监测点类型不能为空")
    private String monitorType;

    /**
     * 最小短路容量
     */
    @ApiModelProperty(value = "最小短路容量")
    @NotNull(message = "最小短路容量不可为空")
    private Float minShortCircuitCapacity;

    /**
     * 供电设备容量
     */
    @ApiModelProperty(value = "供电设备容量")
    @NotNull(message = "供电设备容量不可为空")
    private Float powerSupplyEqCapacity;

    /**
     * 用户协议容量
     */
    @ApiModelProperty(value = "用户协议容量")
    @NotNull(message = "用户协议容量不可为空")
    private Float userAgreementCapacity;

    /**
     * 电压偏差限值（上）
     */
    @ApiModelProperty(value = "电压偏差限值（上）")
    private Float voltageDeviationUpperLimit;

    /**
     * 电压偏差限值（下）
     */
    @ApiModelProperty(value = "电压偏差限值（下）")
    private Float voltageDeviationLowerLimit;

    /**
     * 电压互感器类型(字典)
     */
    @ApiModelProperty(value = "电压互感器类型(字典)")
    @NotBlank(message = "电压互感器类型不可为空")
    private String potentialTransFormerType;

    /**
     * 中性点接地方式(字典)
     */
    @ApiModelProperty(value = "中性点接地方式(字典)")
    @NotBlank(message = "中性点接地方式不可为空")
    private String neutralGroundingMode;

    /**
     * 是否用户专线(字典)
     */
    @ApiModelProperty(value = "是否用户专线(字典)")
    @NotNull(message = "是否用户专线不可为空")
    private Integer isSpecialSupplyElectricity;

    /**
     * 监测点标签
     */
    @ApiModelProperty(value = "监测对象类型(字典)")
    @NotBlank(message = "监测对象类型(字典)不可为空")
    private String monitorTag;


    /**
     * 三级级监测对象类型
     */
    private String objType;

    /**
     * 101 电网侧，102 用户侧
     */
    private String powerFlag;

    /**
     * 监测对象编号
     */
    @ApiModelProperty(value = "监测对象编号")
    private String monitorObjectId;

    /**
     * 监测对象名称
     */
    @ApiModelProperty(value = "监测对象名称")
    private String monitorObjectName;

    /**
     * 统计间隔
     */
    @ApiModelProperty(value = "统计间隔")
    @NotNull(message = "统计间隔不可为空")
    private Integer statisticalInterval;

    /**
     * 关联的监测终端编号(外键)
     */
    @ApiModelProperty(value = "关联的监测终端编号(外键)")
    @NotBlank(message = "关联的监测终端编号不可为空")
    private String terminalId;

    /**
     * 监测终端接线方式(字典)
     */
    @ApiModelProperty(value = "监测终端接线方式(字典)")
    @NotBlank(message = "监测终端接线方式不可为空")
    private String terminalWiringMethod;

    /**
     * 是否是上送国网监测点,0-否 1-是
     */
    @ApiModelProperty(value = "是否是上送国网监测点,0-否 1-是")
    @NotNull(message = "是否是上送国网监测点不可为空")
    private Integer isUpToGrid;


    @ApiModelProperty(value = "pt变比_1")
    private Float pt1;

    @ApiModelProperty(value = "pt变比_2")
    private Float pt2;

    @ApiModelProperty(value = "ct变比_1")
    private Float ct1;

    @ApiModelProperty(value = "ct变比_2")
    private Float ct2;

    @ApiModelProperty(value = "是否专项分析监测点")
    private Integer isSpecialMonitor;

    @ApiModelProperty(value = "是否发电用户：0-否；1-是；")
    private Integer ifPowerUser;

    @ApiModelProperty(value = "场站属性")
    private String fieldStation;

    @ApiModelProperty(value = "行业分类")
    private String tradeCode;

    /**
     * 牵引站id
     */
    private String tractionId;

    @Data
    public static class Info implements Serializable {
        @ApiModelProperty(name = "monitorTag",value = "监测点对象标签")
        private String monitorTag;

        @ApiModelProperty(name = "objType",value = "监测点对象类型标签")
        @NotBlank(message = "监测点对象类型不可为空")
        private String objType;

        @ApiModelProperty(name = "objType",value = "是否开启重新上送")
        private Boolean fiy=false;

        @ApiModelProperty(name = "ids",value = "id集合")
        private List<String> ids;
    }



}
