package com.tongran.system.domain;

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

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

/**
 * 资源注册对象 rm_resource_registration
 *
 * @author tongran
 * @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;

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

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

    /** 在线状态 0-离线，1-在线 */
    @Excel(name = "在线状态", readConverterExp = "0=离线,1=在线")
    private String onlineStatus;
    /** 监控项 */
    private String monitorItems;

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

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


    /**
     * 业务名称
     */
    @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-IPv6地址")
    private String ip1Ipv6Address;  // IP1-IPv6地址

    @Excel(name = "IP1-网关")
    private String ip1Gateway;      // IP1-网关
    /** ip1是否存在子网卡 */
    private boolean ip1IsVirth;

    // 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-IPv6地址")
    private String ip2Ipv6Address;  // IP2-IPv6地址

    @Excel(name = "IP2-网关")
    private String ip2Gateway;
    /** ip2是否存在子网卡 */
    private boolean ip2IsVirth;

    // 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-IPv6地址")
    private String ip3Ipv6Address;  // IP3-IPv6地址

    @Excel(name = "IP3-网关")
    private String ip3Gateway;
    /** ip3是否存在子网卡 */
    private boolean ip3IsVirth;

    // 管理网相关字段
    @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 = "管理网-IPv6地址")
    private String mgmtIpv6Address; // 管理网-IPv6地址

    @Excel(name = "管理网-网关")
    private String mgmtGateway; // 管理网-网关地址
    /** 管理网-是否存在子网卡 */
    private boolean mgmIsVirth;

    /** 多条件查询 */
    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 = "上机时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date onboardTime;
    /** 服务器列表 */
    private String deployDevice;
    /** 业务空标识 */
    private boolean businessEmpty;
    /** 逻辑节点空标识 */
    private boolean logicalNodeEmpty;
    /** 昨日95值 */
    @Excel(name = "昨日95值(MBit)")
    private BigDecimal bandwidthResult;
    /** 上报带宽值(MBit) */
    @Excel(name = "上报带宽值(MBit)")
    private BigDecimal reportedBandwidth;
    /** 日95带宽值利用率 */
    @Excel(name = "日95带宽值利用率")
    private String bandwidthRate;
    /** 昨日95值排序  1正序 2倒叙 3不排序 4 cpu内存倒叙*/
    private Integer bandwidthResultSort;
    /** cpu利用率 */
    private BigDecimal cpuUtil;
    /** cpu核数 */
    private BigDecimal cpuCores;
    /** 内存使用率 */
    private BigDecimal memUtil;
    /** 总内存 */
    private Integer memTotalSize;
    /** 是否告警 */
    private boolean alarmFlag;
    /** 取消告警时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date delAlarmTime;
    /** FRP连接地址生成状态(0-未生成,1-生成中，2已生成) */
    private String frpcConnectionStatus;
    /** FRPC远程端口 */
    private String frpcRemotePort;
    /** FRPC服务器地址 */
    private String frpcServerAddr;
    /** 下架标识(0未下架、1下架) */
    private Integer delFlag;
    /** agent最新版本号 */
    private String maxAgentVersion;
    /** id集合 */
    private Long[] ids;
}