package com.sptg.device.api.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sptg.common.core.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * title: Device
 * package: com.sptg.device.api.entity
 * description: 设备实体类
 */
@Setter
@Getter
@TableName(value = "device")
public class Device implements java.io.Serializable{

    /**
     * 主键
     */
    @TableId(value = "l_id",type = IdType.AUTO)
    private Long id;

    /**
     * 删除标记：{ -1：已删除，0：正常 }
     */
    @TableField(value = "i_status")
    private Integer status;

    /**
     * 创建时间
     */
    @TableField(value = "t_create_date")
    @DateTimeFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createDate;

    /**
     * 设备名称（小区名称+单元名称+安装位置+小区设备排序值）
     */
    @TableField(value = "s_name")
    private String name;

    /**
     * 设备别名
     */
    @TableField(value = "s_alias")
    private String alias;

    /**
     * 小区名称
     */
    @TableField(value = "s_xq_name")
    private String xqName;

    /**
     * 单元名称
     */
    @TableField(value = "s_dy_name")
    private String dyName;

    /**
     * 小区设备排序值
     */
    @TableField(value = "i_xq_sort")
    private Integer xqSort;

    /**
     * 设备序列号
     */
    @TableField(value = "s_serial_number")
    private String serialNumber;

    /**
     * 设备类型：{1：门禁机，2：管理机}
     */
    @TableField(value = "i_type_number")
    private Integer typeNumber;

    /**
     * 所在小区Id
     */
    @TableField(value = "l_xq_id")
    private Long xqId;

    /**
     * 所在单元楼Id
     */
    @TableField(value = "l_unit_id")
    private Long unitId;

    /**
     * 设备安装位置
     */
    @TableField(value = "s_install_path")
    private String installPath;

    /**
     * 安装位置Id
     */
    @TableField(value = "l_install_path_id")
    private Long installPathId;

    /**
     * 设备备注
     */
    @TableField(value = "s_remark")
    private String remark;

    /**
     * 设备使用队列配置Id
     */
    @TableField(value = "l_mq_id")
    private Long mqId;

    /**
     * 省（id）
     */
    @TableField(value = "s_region_province")
    private String regionProvince;

    /**
     * 市（id）
     */
    @TableField(value = "s_region_city")
    private String regionCity;

    /**
     * 区（id）
     */
    @TableField(value = "s_region_area")
    private String regionArea;

    /**
     * 创建人账号Id
     */
    @TableField(value = "l_create_account_id")
    private Long createAccountId;

    /**
     * 是否启用时间策略 { 1：启用，2：不启用 }
     */
    @TableField(value = "i_time_strategy_is_enable")
    private Integer timeStrategyIsEnable;

    /**
     * 紧急开门密码
     */
    @TableField(value = "s_open_door_pwd")
    private String openDoorPwd;

    /**
     * 用户所属机构的存储位置
     */
    @TableField(value = "s_org_position")
    private String orgPosition;

    /**     * 用户所属物业的存储位置
     */
    @TableField(value = "s_estate_position")
    private String estatePosition;

    /**
     * 所属根机构Id
     */
    @TableField(value = "l_root_org_id")
    private Long rootOrgId;

    /**
     * 跟组织机构名称
     */
    @TableField(value = "s_root_org_name")
    private String rootOrgName;

    /**
     * 设备朝向{ 1：进,2：出 }
     */
    @TableField(value = "i_is_out")
    private Integer isOut;

    /**
     * 最后一次心跳时间
     */
    @TableField(value = "i_last_heartbeat")
    private Long lastHeartbeat;

    /**
     * 设备厂商
     */
    @TableField(value = "s_device_factory")
    private String deviceFactory;

    /**
     * 设备类型
     */

    /**
     * 设备版本号（数值）
     */
    @TableField(value = "i_version_number")
    private String versionNumber;

    /**
     * 管理密码
     */
    @TableField(value = "s_admin_pwd")
    private String adminPwd;

    /**
     * 网络类型
     */
    @TableField(value = "s_network_type")
    private String networkType;

    /**
     * 网络信号
     */
    @TableField(value = "s_network_signal")
    private String networkSignal;

    /**
     * 流量卡id
     */
    @TableField(value = "l_flow_card_id")
    private Long flowCardId;

    @TableField(value = "old_id")
    private String oldId;


    /* 设备配置 ------------------------------------------------------------------------------------------------------ */


    /**
     * 设备型号
     */
    @TableField(value = "s_type_code")
    private String deviceModelNumber;

    /**
     * 设备尺寸
     */
    @TableField(value = "s_size")
    private String size;

    /**
     * 通话音量 { 0--100 }
     */
    @TableField(value = "i_call_volume")
    private Integer callVolume;

    /**
     * 广告音量 { 0--100 }
     */
    @TableField(value = "i_ad_volume")
    private Integer adVolume;

    /**
     * 屏幕亮度 { 0--100 }
     */
    @TableField(value = "i_screen_brightness")
    private Integer screenBrightness;

    /**
     * 设备开门时长
     */
    @TableField(value = "i_delay")
    private Integer delay;

    /**
     * 是否显示住户名称 : { 1：显示，2：不显示 }
     */
    @TableField(value = "i_is_show_username")
    private Integer isShowUsername;

    /**
     * 是否支持门禁卡功能：
     *  1：支持
     *  2：不支持
     */
    @TableField(value = "i_have_card")
    private Integer haveCard;
    @TableField(value = "i_have_keyboard")
    private Integer haveKeyboard;
    @TableField(value = "i_have_ad")
    private Integer haveAd;

    /**
     * 是否支持人脸识别：
     *  1：支持
     *  2：不支持
     */
    @TableField(value = "i_have_face")
    private Integer haveFace;

    /**
     * 是否支持视频通话：
     *  1：支持
     *  2：不支持
     */
    @TableField(value = "i_have_call")
    private Integer haveCall;

    /**
     * 是否支持一键重启：
     *  1：支持
     *  2：不支持
     */
    @TableField(value = "i_reboot")
    private Integer reboot;

    /**
     * 人脸识别度 { 0--100 }
     */
    @TableField(value = "i_face_resolution")
    private Integer faceResolution;

    /**
     * 补光灯亮度 { 0--100 }
     */
    @TableField(value = "i_fill_light")
    private Integer fillLight;

    /**
     * 石头开启活体检测,默认开启
     * 1 就是开启,0 就是关闭
     */
    @TableField(value = "i_live_detect")
    private Integer liveDetect;

    /**
     * 识别框位置：{ 1：左上角，2：左下角，3：中间位置，4：右下角 }
     */
    @TableField(value = "i_discern_box_position")
    private Integer discernBoxPosition;

    /**
     * 广告轮播模式
     */
    @TableField(value = "i_play_model")
    private Integer playModel;
    /* -------------------------------------------------------------------------------------------------------------- */

    /**
     * 广告轮播模式
     */
    @TableField(value = "i_had_register")
    private Integer hadRegister;
    /* -------------------------------------------------------------------------------------------------------------- */

    /**
     * 队列信息
     */
    @TableField(exist = false)
    private MqConf mqConf;

    /**
     * 设备在线状态：{ 0：离线，1：在线 }
     */
    @TableField(exist = false)
    private Integer onlineStatus;

    /**
     * 开门用户Id
     */
    @TableField(exist = false)
    private String userId;

    /**
     * 流量卡
     */
    @TableField(exist = false)
    private FlowCard flowCard;

    /**
     * 旧的紧急开门密码
     */
    @TableField(exist = false)
    private String oldOpenDoorPwd;

}
