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.*;

/**
 * <p>
 * 会议室表
 * </p>
 *
 * @author zyj
 * @since 2024-03-08
 */
@Entity
@Data
@TableName("meeting_room")
@EqualsAndHashCode(callSuper = false)
public class MeetingRoom implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @TableId
    @JoinColumn(name = "room_id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long roomId;

    /**
     * 会议室名称
     */
    private String roomName;

    /**
     * 所在楼层
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long floorId;

    /**
     * 会议室简介
     */
    private String description;

    /**
     * 会议室图片
     */
    private String imgPath;

    /**
     * 容纳人数
     */
    private Integer capacity;

    /**
     * 会议室所在位置
     */
    private String position;

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

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

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

    /**
     * 会议室使用状态(0-未使用 1-使用中)
     */
    private Integer roomStatus;

    /**
     * 会议室预约状态(0-未预约 1-已预约)
     */
    private Integer reserveStatus;

    /**
     * 会议室状态(0.启用 1.停用)
     */
    private Integer status;

    /**
     * 会议室环境
     */
    private String environmental;

    /**
     * 最近一次使用时间(正在使用的会议室,在预约时间外延后一小时开发预约)
     */
    private LocalDateTime lastUseTime;

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

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

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

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

    /**
     * 是否需要审批(0-否 1-是)
     */
    private Integer isApprove;

    /**
     * 楼层信息
     */
    @Transient
    @TableField(exist = false)
    private MeetingFloor meetingFloor;

    /**
     * 设备信息
     */
    @Transient
    @TableField(exist = false)
    private List<MeetingDevice> meetingDevice;

    /**
     * 会议信息
     */
    @Transient
    @TableField(exist = false)
    private List<MeetingInfo> meetingInfo;

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

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


}
