package cn.com.ty.lift.business.library.dao.entity;

import cn.com.ty.lift.business.common.BaseEntity;
import cn.com.ty.lift.common.constants.FieldName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 实体类 - 表：lift 电梯
 * @author bieao
 * @since 2019-11-25 17:37:16
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class Lift extends BaseEntity {

    /**
     * 电梯id
     */
    @TableId(value = "id",type = IdType.ID_WORKER)
    @NotNull(message = "电梯id不能为空")
    private Long id;

    /**
     * 注册代码
     */
    @FieldName(name = "注册代码")
    @NotBlank(message = "注册代码不能为空")
    private String registrationCode;

    /**
     * 电梯类别(1:曳引梯;2:液压梯;3:杂物梯;4:自动扶梯;5:自动人行道)
     */
    @FieldName(name = "电梯类别")
    private Integer category;

    /**
     * 电梯类型(1:直梯;2:扶梯)
     */
    @FieldName(name = "电梯类型")
    private Integer liftType;

    /**
     * 电梯编号
     */
    @FieldName(name = "电梯编号")
    private String liftCode;

    /**
     * 出厂日期
     */
    @FieldName(name = "出厂日期")
    private LocalDate manufactureDate;

    /**
     * 出厂编号
     */
    @FieldName(name = "出厂编号")
    private String factoryCode;

    /**
     * 设备用途(11:货梯;12:客梯;13:医梯;14:观光梯;15:杂物梯;16:别墅梯;21:扶梯;22:人行道)
     */
    @FieldName(name = "设备用途")
    private Integer deviceUsage;

    /**
     * 电梯品牌
     */
    @FieldName(name = "电梯品牌")
    private String liftBrand;

    /**
     * 安装单位
     */
    @FieldName(name = "安装单位")
    private String installCompany;

    /**
     * 电梯型号
     */
    @FieldName(name = "电梯型号")
    private String liftModel;

    /**
     * 曳引轮直径
     */
    @FieldName(name = "曳引轮直径")
    private BigDecimal pulleyDiameter;

    /**
     * 曳引绳根数
     */
    @FieldName(name = "曳引绳根数")
    private Integer ropeNum;

    /**
     * 门锁型号
     */
    @FieldName(name = "门锁型号")
    private String lockModel;

    /**
     * 电梯载重
     */
    @FieldName(name = "电梯载重")
    private Integer ratedLoad;

    /**
     * 提升高度m
     */
    @FieldName(name = "提升高度")
    private BigDecimal promoteHeight;

    /**
     * 梯级宽度
     */
    @FieldName(name = "梯级宽度")
    private BigDecimal stepWidth;

    /**
     * 人行道长度m
     */
    @FieldName(name = "人行道长度")
    private BigDecimal sidewalkLength;

    /**
     * 倾斜角度°
     */
    @FieldName(name = "倾斜角度")
    private BigDecimal tiltAngle;

    /**
     * 电动机功率kw
     */
    @FieldName(name = "电动机功率")
    private BigDecimal motorPower;

    /**
     * 额定速度m/s
     */
    @FieldName(name = "额定速度")
    private BigDecimal ratedSpeed;

    /**
     * 层站门
     */
    @FieldName(name = "层站门")
    private String layerStationDoor;

    /**
     * 安全钳类型(1:瞬时式安全钳;2:渐进式安全钳)
     */
    @FieldName(name = "安全钳类型")
    private Integer clampType;

    /**
     * 改造单位
     */
    @FieldName(name = "改造单位")
    private String reformCompany;

    /**
     * 设备使用地点
     */
    @FieldName(name = "设备使用地点")
    private String devicePosition;

    /**
     * 经纬度
     */
    @FieldName(name = "经纬度")
    private String coordinate;

    /**
     * 备注
     */
    @FieldName(name = "备注")
    private String remarks;

    /**
     * 钢带
     */
    @FieldName(name = "钢带")
    private Integer steelBelt;

    /**
     * 油缸型式
     */
    @FieldName(name = "油缸型式")
    private String cylinderType;

    /**
     * 油缸数量
     */
    @FieldName(name = "油缸数量")
    private Integer cylinderNum;

    /**
     * 顶升型式
     */
    @FieldName(name = "顶升型式")
    private Integer topType;

    /**
     * 控制方式
     */
    @FieldName(name = "控制方式")
    private String controlType;

    /**
     * 液压系统满负荷值
     */
    @FieldName(name = "液压系统满负荷值")
    private Integer mpa;

    /**
     * 厂商
     */
    @FieldName(name = "厂商")
    private String factory;

    /**
     * 自定义编号
     */
    @FieldName(name = "自定义编号")
    private String customNumber;

    /**
     * 单位设备编号
     */
    @FieldName(name = "单位设备编号")
    private String useCompanyCode;

    /**
     * 设备位置码
     */
    @FieldName(name = "设备位置码")
    private String devicePositionCode;

    /**
     * 进口设备代理商
     */
    @FieldName(name = "进口设备代理商")
    private String agency;

    /**
     * 设备改造日期
     */
    @FieldName(name = "设备改造日期")
    private LocalDate reformDate;

    /**
     * 设备安装日期
     */
    @FieldName(name = "设备安装日期")
    private LocalDate installDate;

    /**
     * 显示楼层
     */
    @FieldName(name = "显示楼层")
    private Integer innerFloor;

    /**
     * 年检日期
     */
    @FieldName(name = "年检日期")
    private LocalDate annualInspectionDate;

    /**
     * 是否检查限速器（0 否；1 是；默认0）
     */
    @FieldName(name = "是否检查限速器")
    private Integer isCheckGoverner;

    /**
     * 是否荷载年检设置（0 否；1 是；默认0）
     */
    @FieldName(name = "是否荷载年检设置")
    private Integer loadInspectionSetting;

    /**
     * 行政区划代码
     */
    @FieldName(name = "行政区划代码")
    private String areaCode;

    /**
     * 设备ID
     */
    @FieldName(name = "设备ID")
    private String deviceId;

    /**
     * 设备类型
     */
    @FieldName(name = "设备类型")
    private String deviceType;

    /**
     * 电梯状态 1：弃用 2：正常
     */
    @FieldName(name = "电梯状态")
    private Integer liftStatus;
}