/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.community.grid.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;

import java.time.LocalDateTime;

/**
 * 智能设备实体类
 *
 * @author BladeX
 * @since 2020-10-17
 */
@Data

@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SmartDevice对象", description = "智能设备")
public class SmartDevice extends BaseEntity {

	private static final long serialVersionUID = 1L;

	/**
	 * 设备唯一标识
	 */
	@ApiModelProperty(value = "设备唯一标识")
	private String deviceId;
	/**
	 * 设备名称
	 */
	@ApiModelProperty(value = "设备名称")
	private String deviceName;
	/**
	 * 设备注册平台标识,1:aep,2:华为,3:厂商
	 */
	@ApiModelProperty(value = "设备注册平台标识,1:aep,2:华为,3:厂商")
	private Integer isAep;
	/**
	 * 产品,对应 aep 产品的 apikey
	 */
	@ApiModelProperty(value = "产品,对应 aep 产品的 apikey")
	private String masterKey;
	/**
	 * 操作者
	 */
	@ApiModelProperty(value = "操作者")
	private String operator;
	/**
	 * 产品ID
	 */
	@ApiModelProperty(value = "产品ID")
	private String productId;
	/**
	 * 0 自动订阅（默认），1 取消自动订阅 (LWM2M 协议选填，其他协议不填）
	 */
	@ApiModelProperty(value = "0 自动订阅（默认），1 取消自动订阅 (LWM2M 协议选填，其他协议不填）")
	private Integer autoObserver;
	/**
	 * 设备类型设备类型：1烟感，2燃气监控，3井盖监控，4一键告警，5智慧路灯，6，智慧消防，7垃圾桶，8停车监控
	 */
	@ApiModelProperty(value = "设备类型: 1烟感，2燃气监控，3井盖监控，4一键告警，5智慧路灯，6，智慧消防，7垃圾桶，8停车监控")
	private String deviceType;

	/**
	 * 设备用途（10：居家设备， 20：公共区域）
	 */
	@ApiModelProperty(value = "设备用途")
	private Integer deviceUsage;
	/**
	 * 设备用途（10：居家设备， 20：公共区域）
	 */
	@ApiModelProperty(value = "设备前缀")
	private String prefix;
	/**
	 * 安装位置
	 */
	@ApiModelProperty(value = "安装位置")
	private String deviceInstallAddress;
	/**
	 * 设备状态
	 */
	@ApiModelProperty(value = "设备状态:1-正常 2-告警 3-失联 4-停用 5-初始化")
	private Integer deviceStatus;
	/**
	 * 电池电量
	 */
	@ApiModelProperty(value = "电池电量")
	private String battery;
	/**
	 * 信号强度
	 */
	@ApiModelProperty(value = "信号强度")
	private String signalIntensity;
	/**
	 * 厂家名称
	 */
	@ApiModelProperty(value = "厂家名称")
	private String manufacturers;
	/**
	 * 厂商编号(附录)
	 */
	@ApiModelProperty(value = "厂商编号(附录)")
	private String manufacturersNo;
	/**
	 * 设备型号
	 */
	@ApiModelProperty(value = "设备型号")
	private String deviceSpecld;
	/**
	 * IMEI号
	 */
	@ApiModelProperty(value = "IMEI号")
	private String imei;

	/**
	 * 机构路径
	 */
	@ApiModelProperty(value = "机构路径")
	private String orgPosition;
	/**
	 * iccid
	 */
	@ApiModelProperty(value = "iccid")
	private String iccid;
	/**
	 * Mcu软件版本
	 */
	@ApiModelProperty(value = "Mcu软件版本")
	private String mcuEdition;
	/**
	 * NB模组型号
	 */
	@ApiModelProperty(value = "NB模组型号")
	private String nbModuleModel;
	/**
	 * NB模组版本信息
	 */
	@ApiModelProperty(value = "NB模组版本信息")
	private String nbModuleEdition;
	/**
	 * 最后更新时间
	 */
	@ApiModelProperty(value = "最后更新时间")
	private LocalDateTime lastUpdateTime;
	/**
	 * 心跳保护时间
	 */
	@ApiModelProperty(value = "心跳保护时间")
	private LocalDateTime heartbeatTime;
	/**
	 * 无线信号覆盖等级
	 */
	@ApiModelProperty(value = "无线信号覆盖等级")
	private String wirelessLevel;
	/**
	 * 当前磁场值
	 */
	@ApiModelProperty(value = "当前磁场值")
	private String magneticField;
	/**
	 * 终端发射功率
	 */
	@ApiModelProperty(value = "终端发射功率")
	private String transmittingPower;
	/**
	 * 终端接收功率
	 */
	@ApiModelProperty(value = "终端接收功率")
	private String receivingPower;
	/**
	 * 信噪比
	 */
	@ApiModelProperty(value = "信噪比")
	private String signalNoiseRatio;
	/**
	 * IMSI
	 */
	@ApiModelProperty(value = "IMSI")
	private String imsi;
	/**
	 * 检测介质
	 */
	@ApiModelProperty(value = "检测介质")
	private String testMedium;
	/**
	 * 浓度值
	 */
	@ApiModelProperty(value = "浓度值")
	private String concentration;
	/**
	 * 门状态
	 */
	@ApiModelProperty(value = "门状态")
	private String doorStatus;
	/**
	 * 设备通信协议
	 * 1NB,2LWM2M,3HTTP,4TCP,5MQTT,6 厂
	 * 商协议。如果协议与真实设备不匹配可能
	 * 导致无法正常接收数据
	 */
	@ApiModelProperty(value = "设备通信协议")
	private Integer protocolType;
	/**
	 * 设备分组 tag， 设备创建时指定 tag 后可以
	 * 分 tag 获取对应的汇总信息，不传默认为
	 * 0-全部
	 */
	@ApiModelProperty(value = "设备分组 tag,不传默认为0-全部")
	private Integer tag;
	/**
	 * 经纬度（仅记录）
	 */
	@ApiModelProperty(value = "经纬度（仅记录）")
	private String latitudeLongitude;
	/**
	 * 区域 id（仅记录）
	 */
	@ApiModelProperty(value = "区域 id（仅记录）")
	private String area;
	/**
	 * 组织 id（仅记录）
	 */
	@ApiModelProperty(value = "组织 id（仅记录）")
	private String organization;
	/**
	 * 图片 id（仅记录）
	 */
	@ApiModelProperty(value = "图片 id（仅记录）")
	private String deviceImage;
	/**
	 * 人员名称
	 */
	@ApiModelProperty(value = "人员名称")
	private String person;
	/**
	 * 人员电话
	 */
	@ApiModelProperty(value = "人员电话")
	private String personTel;
	/**
	 * 证件号
	 */
	@ApiModelProperty(value = "证件号")
	private String idcard;
	/**
	 * 电表表号（指令下发使用,电表必填）
	 */
	@ApiModelProperty(value = "电表表号（指令下发使用,电表必填）")
	@TableField("ammeterId")
	private String ammeterId;
	/**
	 * 区域位置（仅记录）
	 */
	@ApiModelProperty(value = "区域位置（仅记录）")
	private String distLocate;
	/**
	 * 人像库类型 （1:视频云 2:VEP） (视频监控
	 * 人脸门禁、车牌识别组件必填其他组件不
	 * 填)
	 */
	@ApiModelProperty(value = "人像库类型 （1:视频云 2:VEP） (视频监控人脸门禁、车牌识别组件必填其他组件不填)")
	private Integer manufactureType;
	/**
	 * 门禁设备标注进出属性 1 进，2出（人脸
	 * 门禁组件必填，其他不填）
	 */
	@ApiModelProperty(value = "门禁设备标注进出属性 1 进，2出（人脸门禁组件必填，其他不填）")
	private Integer monitorType;
	/**
	 * (LWM2M 协议选填，其他协议不填）
	 */
	@ApiModelProperty(value = "(LWM2M 协议选填，其他协议不填）")
	private String pskValue;

	@ApiModelProperty(value = "上线状态 1 已上线 2 未上线")
	private Integer defenseStatus;

	@ApiModelProperty(value = "旧平台id")
	private Long oldId;

	@ApiModelProperty(value = "uuid")
	private String uuid;

	@ApiModelProperty(value = "did")
	private String did;
	@ApiModelProperty(value = "appId")
	private String appId;
	@ApiModelProperty(value = "电池电压")
	private String batteryVoltage;

	/**
	 * 小区ID
	 */
	@ApiModelProperty(value = "小区id")
	private Long residentialId;
	/**
	 * 楼栋ID
	 */
	@ApiModelProperty(value = "楼栋id")
	private Long buildingId;
	/**
	 * 租户id
	 */
	@ApiModelProperty(value = "租户id")
	private String tenantId;
	/**
	 * 监测值
	 */
	@ApiModelProperty(value = "监测值")
	private String monitorValue;

	@ApiModelProperty(value = "temperature")
	private String temperature;

	/**
	 * CRM订单号
	 */
	@ApiModelProperty(value = "orderNo")
	private String orderNo;

	/**
	 * CRM设备告警通知手机号码
	 */
	@ApiModelProperty(value = "alarmTel")
	private String alarmTel;

	/**
	 * 企业id
	 */
	@ApiModelProperty(value = "企业ids")
	private String enterpriseIds;

	@ApiModelProperty(value = "心跳数据")
	private String specialData;


	@ApiModelProperty(value = "单元id")
	private Long unitId;


	@ApiModelProperty(value = "楼层id")
	private Long floorId;

	@ApiModelProperty(value = "房间id")
	private Long roomId;

}
