package com.usky.meeting.domain;

import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;

/**
 * <p>
 * 设备表
 * </p>
 *
 * @author zyj
 * @since 2024-03-08
 */
@Data
@Entity
@EqualsAndHashCode(callSuper = false)
public class MeetingDevice implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @TableId
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long deviceUuid;

    /**
     * 设备名称
     */
    private String deviceName;

    /**
     * 文件存储id(tool_local_storage)
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long storageId;

    /**
     * 设备图片
     */
    private String imgPath;

    /**
     * 设备铭牌
     */
    private String nameplate;

    /**
     * 所属会议室
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long roomId;

    /**
     * 登记时间
     */
    private LocalDateTime registerDate;

    /**
     * 维护人
     */
    private String maintainer;

    /**
     * 联系方式
     */
    private String contacts;

    /**
     * 备注
     */
    private String remark;

    /**
     * 安装位置
     */
    private String installAddress;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 创建日期
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 组织机构ID
     */
    private Integer deptId;

    /**
     * 租户ID
     */
    private Integer tenantId;

    /**
     * 门禁设备主键id
     */
    private Integer egDeviceId;

    /**
     * 会议室信息
     */
    @Transient
    @TableField(exist = false)
    private MeetingRoom meetingRoom;

    /**
     * 门禁设备信息
     */
    @Transient
    @TableField(exist = false)
    private EgDevice egDevice;

    /**
     * 设备编号
     */
    private String deviceCode;

    /**
     * 设备IP
     */
    private String ipAddr;

    /**
     * 模板id
     */
    private Integer templateId;

    /**
     * 模板信息
     */
    @TableField(exist = false)
    private MeetingTemplate meetingTemplate;

    /**
     * 设备状态 0离线 1在线
     */
    private Integer deviceStatus;

    /**
     * 设备方向 1横屏 2竖屏
     */
    private Integer deviceDirection;

    /**
     * 绑定人员ID（逗号分隔，来自 meeting_device_person_bind）
     */
    @TableField(exist = false)
    private String bindPerson;
}
