package com.ruoyi.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 资源注册对象 rm_resource_registration
 *
 * @author gyt
 * @date 2025-08-12
 */
@Data
public class RmResourceRegistration extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    private Long id;

    /** clientID */
    @Excel(name = "clientID")
    private String clientId;

    /** 硬件SN */
    @Excel(name = "设备SN")
    private String hardwareSn;

    /** 资源类型
     * 1 服务器，2 交换机*/
    private String resourceType;

    /** 资源名称 */
    private String resourceName;

    /** IP地址 */
    private String ipAddress;

    /** 端口1.162(SNMP),2.其他 */
    private String resourcePort;

    /**其他端口名称 */
    private String otherPortName;

    /** agent版本 */
    @Excel(name = "agent版本")
    private String agentVersion;

    /** 协议 1.TCP,2.UDP */
    private String protocol;

    /** SNMP探测 0=否,1=是 */
    private String snmpDetect;

    /** 版本(1.SNMPv2,2.SNMPv3) */
    private String resourceVersion;

    /** 读写权限(1.RW,2.ReadOnly) */
    private String rwPermission;

    /** 团体名称 */
    private String teamName;

    /** SNMP采集地址 */
    private String snmpCollectAddr;

    /** SNMP采集端口 */
    private String snmpCollectPort;

    /** 安全级别(1.authPriv、2.authNoPriv，3.noAuthNoPriv) */
    private String securityLevel;

    /** 加密方式 1.md5,2.SHA */
    private String encryption;

    /** 用户名 */
    private String resourceUserName;

    /** 密码 */
    private String resourcePwd;

    /** 注册状态 0-未注册，1-已注册 */
    private String registrationStatus;

    /** 在线状态 0-离线，1-在线 */
    @Excel(name = "在线状态")
    private String onlineStatus;

    private String switchOnlineStatus;

    /** 描述 */
    private String description;

    /** 设备业务客户id */
    private Long customerId;

    /** 设备业务客户名称 */
    private String customerName;

    /** 业务号 */
    private String serviceNumber;

    /** 创建人id */
    private Long creatorId;

    /** 创建人名称 */
    private String creatorName;

    /** 修改人id */
    private Long updaterId;

    /** 修改人名称 */
    private String updaterName;

    /** 监控项 */
    private String monitorItems;

    /** 自动发现项 */
    private String discoveryRules;

    /** 查询名称 */
    private String queryName;

    /**
     * 运营商
     */
    private String operator;

    /**
     * 省
     */
    private String province;

    /**
     * 公网IP
     */
    private String publicIp;

    /**
     * 业务名称
     */
    @Excel(name = "业务名称")
    private String businessName;
    /** 业务代码 */
    private String businessCode;

    /**
     * 逻辑节点标识
     */
    @Excel(name = "逻辑节点标识")
    private String logicalNodeId;

    /**
     * 多公网IP状态
     */
    private String multiPublicIpStatus;

    /**
     * 心跳次数
     */
    @Excel(name = "心跳次数")
    private Integer heartbeatCount;

    /**
     * 心跳周期（单位：秒）
     */
    @Excel(name = "心跳时间间隔")
    private Integer heartbeatInterval;

    /** 需要绑定的网卡信息 */
    private List<Map> bindNetworkMsg;

    // IP1 相关字段
    @Excel(name = "IP1-运营商")
    private String ip1Isp;          // IP1-运营商

    @Excel(name = "IP1-省")
    private String ip1Province;     // IP1-省

    @Excel(name = "IP1-市")
    private String ip1City;         // IP1-市

    @Excel(name = "IP1-业务公网")
    private String ip1PublicIp;     // IP1-业务公网

    @Excel(name = "IP1-接口名称")
    private String ip1InterfaceName; // IP1-接口名称

    @Excel(name = "IP1-mac地址")
    private String ip1MacAddress;   // IP1-mac地址

    @Excel(name = "IP1-接口类型")
    private String ip1InterfaceType; // IP1-接口类型

    @Excel(name = "IP1-IPv4地址")
    private String ip1Ipv4Address;  // IP1-IPv4地址

    @Excel(name = "IP1-网关")
    private String ip1Gateway;      // IP1-网关

    // IP2 相关字段
    @Excel(name = "IP2-运营商")
    private String ip2Isp;

    @Excel(name = "IP2-省")
    private String ip2Province;

    @Excel(name = "IP2-市")
    private String ip2City;

    @Excel(name = "IP2-业务公网")
    private String ip2PublicIp;

    @Excel(name = "IP2-接口名称")
    private String ip2InterfaceName;

    @Excel(name = "IP2-mac地址")
    private String ip2MacAddress;

    @Excel(name = "IP2-接口类型")
    private String ip2InterfaceType;

    @Excel(name = "IP2-IPv4地址")
    private String ip2Ipv4Address;

    @Excel(name = "IP2-网关")
    private String ip2Gateway;

    // IP3 相关字段
    @Excel(name = "IP3-运营商")
    private String ip3Isp;

    @Excel(name = "IP3-省")
    private String ip3Province;

    @Excel(name = "IP3-市")
    private String ip3City;

    @Excel(name = "IP3-业务公网")
    private String ip3PublicIp;

    @Excel(name = "IP3-接口名称")
    private String ip3InterfaceName;

    @Excel(name = "IP3-mac地址")
    private String ip3MacAddress;

    @Excel(name = "IP3-接口类型")
    private String ip3InterfaceType;

    @Excel(name = "IP3-IPv4地址")
    private String ip3Ipv4Address;

    @Excel(name = "IP3-网关")
    private String ip3Gateway;

    // 管理网相关字段
    @Excel(name = "管理网-运营商")
    private String mgmtIsp;         // 管理网-运营商

    @Excel(name = "管理网-省")
    private String mgmtProvince;    // 管理网-省

    @Excel(name = "管理网-市")
    private String mgmtCity;        // 管理网-市

    @Excel(name = "管理网-公网IP")
    private String mgmtPublicIp;    // 管理网-公网IP

    @Excel(name = "管理网-接口名称")
    private String mgmtInterfaceName; // 管理网-接口名称

    @Excel(name = "管理网-mac地址")
    private String mgmtMacAddress;  // 管理网-mac地址

    @Excel(name = "管理网-接口类型")
    private String mgmtInterfaceType; // 管理网-接口类型

    @Excel(name = "管理网-IPv4地址")
    private String mgmtIpv4Address; // 管理网-IPv4地址
    @Excel(name = "管理网-网关")
    private String mgmtGateway; // 管理网-IPv4地址

    /** 多条件查询 */
    private String queryParam;

    /** 金山machineCode */
    @Excel(name = "金山machineCode")
    private String machineCode;

    /** 注册时间 */
    @Excel(name = "注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 上机时间 */
    @Excel(name = "上机时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date onboardTime;
    /** 服务器列表 */
    private String deployDevice;
}