package com.njcn.supervision.pojo.dto;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * Description:
 * Date: 2024/5/10  18:16【需求编号】
 *
 * @author clam
 * @version V1.0.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SupervisionDevMainReportExcel {


    /**
     * 工程预期投产日期
     */
    @Excel(name = "*工程预期投产日期(yyyy-MM-dd)", width = 30, height = 6)
    @NotBlank(message = "不能为空")
    private String expectedProductionDate;

    /**
     * 所属地市
     */
    @Excel(name = "*所属地市", width = 30)
    @NotBlank(message = "所属地市不能为空")
    private String city;


    //------------------------基本信息---------------------------------------------

    /**
     * 并网变电站
     */
    @Excel(name = "*所属变电站名称", width = 30)
    @NotBlank(message = "所属变电站名称不能为空")
    private String substation;

    /**
     * 所属供电公司
     */
    @Excel(name = "*所属供电公司", width = 30)
    @NotBlank(message = "所属供电公司不能为空")
    private String powerCompany;

    /**
     * 终端型号
     */
    @Excel(name = "*终端型号", width = 30)
    @NotBlank(message = "终端型号不能为空")
    private String terminalType;


    /**
     * 监测终端名称
     */
    @Excel(name = "*终端名称", width = 30)
    @NotBlank(message = "终端名称不能为空")
    private String monitoringTerminalName;


    /**
     * 通讯类型
     */
    @Excel(name = "*通讯类型", width = 30)
    @NotBlank(message = "通讯类型不能为空")
    private String frontType;

    /**
     * 监测终端编码
     */
    @Excel(name = "*监测终端编码", width = 30)
    @NotBlank(message = "监测终端编码不能为空")
    private String monitoringTerminalCode;

    /**
     * 终端IP
     */
    @Excel(name = "*终端IP", width = 30)
    @NotBlank(message = "*终端IP不能为空")
    private String terminalIp;


    /**
     * 端口
     */
    @Excel(name = "*端口", width = 30)
    @NotBlank(message = "*端口不能为空")
    private String terminalPort;

    /**
     * 投运时间
     */
    @Excel(name = "*投运时间(yyyy-MM-dd HH:mm:ss)", width = 40)
    @NotBlank(message = "投运时间不能为空")
    private String commissioningTime;

    /**
     * 数据更新时间
     */
    @Excel(name = "数据更新时间(yyyy-MM-dd HH:mm:ss)", width = 40)
    private String dataUpdateTime;

    /**
     * 所属前置机
     */
    @Excel(name = "*所属前置机", width = 30)
    @NotBlank(message = "所属前置机不能为空")
    private String frontEndMachine;

    /**
     * 监测终端安装位置
     */
    @Excel(name = "*监测终端安装位置", width = 30, replace = {"电网侧_0", "用户侧_1"})
    @NotBlank(message = "监测终端安装位置不能为空")
    private String monitoringDeviceInstallationPosition = "0";

    /**
     * 识别码
     */
    @Excel(name = "识别码", width = 30)
    private String identificationCode;

    /**
     * 终端秘钥
     */
    @Excel(name = "终端秘钥", width = 30)
    private String terminalSecretKey;

    /**
     * 终端模型
     */
    @Excel(name = "终端模型", width = 30, replace = {"虚拟终端_0", "实际终端_1", "离线_2"})
    private String terminalModel = "1";

    /**
     * 数据类型
     */
    @Excel(name = "数据类型", width = 30, replace = {"暂态系统_0", "稳态系统_1", "两个系统_2"})
    private String dataType = "2";

    /**
     * 终端接线方式类型
     */
    @Excel(name = "*终端接线方式类型", width = 30)
    @NotBlank(message = "终端接线方式类型不能为空")
    private String terminalWiringMethodType;

    /**
     * 厂家
     */
    @Excel(name = "*厂家", width = 30)
    @NotBlank(message = "厂家不能为空")
    private String manufacturer;


    /**
     * 本次终端检测时间
     */
    @Excel(name = "*本次终端检测时间(yyyy-MM-dd HH:mm:ss)", width = 40)
    @NotBlank(message = "本次终端检测时间不能为空")
    private String currentTerminalDetectionTime;


    /**
     * 电压互感器类型
     */
    @Excel(name = "*电压互感器类型", width = 30)
    @NotBlank(message = "*电压互感器类型不能为空")
    private String voltageTransformerType;


    /**
     * 中性点接线方式
     */
    @Excel(name = "*中性点接线方式", width = 30)
    @NotBlank(message = "中性点接线方式不能为空")
    private String neutralPointWiringMethod;


    /**
     * 厂家终端编号
     */
    @Excel(name = "*厂家终端编号", width = 30)
    @NotBlank(message = "厂家终端编号不能为空")
    private String manufacturerDeviceNumber;


    /**
     * SIM卡号
     */
    @Excel(name = "SIM卡号", width = 30)
    private String simCardNumber;

    /**
     * 对时功能
     */
    @Excel(name = "对时功能", width = 30, replace = {"关闭_0", "开启_1"})
    private String timeSyncFunction = "0";

    /**
     * 电度功能
     */
    @Excel(name = "电度功能", width = 30, replace = {"关闭_0", "开启_1"})
    private String electroplatingFunction = "0";


    /**
     * 召唤标志
     */
    @Excel(name = "召唤标志", width = 30, replace = {"周期触发_0", "变位触发_1"})
    private String summonFlag = "0";

    /**
     * 告警功能
     */
    @Excel(name = "告警功能", width = 30, replace = {"否_0", "是_1"})
    private String alarmFunction = "0";

    /**
     * 合同号
     */
    @Excel(name = "合同号", width = 30)
    private String contractNumber;

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class ExcelMsg extends SupervisionDevMainReportExcel implements Serializable {

        @Excel(name = "错误信息描述", width = 30)
        private String msg;

    }
}
