package org.dromara.elevator.domain.bo;

import org.dromara.elevator.domain.EElevatorInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;


/**
 * 电梯基础信息;业务对象 e_elevator_info
 *
 * @author zy
 * @date 2024-07-26
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = EElevatorInfo.class, reverseConvertGenerate = false)
public class EElevatorInfoBo extends BaseEntity {

    /**
     * 主键id
     */
    private Long id;

    /**
     * 项目id
     */
    private String projectId;

    /**
     * 部门id
     */
    @NotNull(message = "项目不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long deptId;

    /**
     * 电梯编号
     */
    @NotBlank(message = "电梯编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String elevatorNum;

    /**
     * 电梯名称
     */
    @NotBlank(message = "电梯名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String elevatorName;

    /**
     * 电梯地址
     */
    @NotBlank(message = "电梯地址不能为空", groups = { AddGroup.class, EditGroup.class })
    private String elevatorAddress;

    /**
     * 设备代码
     */
    private String deviceCode;

    /**
     * 行政区域编号
     */
    private String areaCode;

    /**
     * 楼宇id
     */
    private String buildingId;

    /**
     * 楼宇名称
     */
    private String buildingName ;

    /**
     * 小区id
     */
    private String houseId;

    /** 小区名称 */
    private String houseName ;

    /**
     * 使用场景;1：住宅  2：办公、3：商场超市 4：宾馆饭店、5：:医院、 6：学校:、7：交通场所:、8：:文娱场馆、9：其他场所:
     */
    private Integer useScenario;

    /**
     * 使用单位id
     */
    private String employId;

    /** 使用单位名称 */
    private String employName ;

    /**
     * 物业单位id
     */
    private String tenementId;

    /** 物业单位名称 */
    private String tenementName ;

    /**
     * 维保单位id
     */
    private String maintenanceId;

    /** 维保单位名称 */
    private String maintenanceName ;

    /**
     * 品牌
     */
    private String brand;

    /**
     * 型号
     */
    private String model;

    /**
     * 额定载重
     */
    private Integer load;

    /**
     * 额定速度
     */
    private Integer speed;

    /**
     * 层站门数
     */
    private String standNum;

    /**
     * 控制方式;1:按钮”、2:信号”、3:集选”、4:群控”，
     */
    private Integer controlMode;

    /**
     * 安装日期
     */
    private LocalDate installDate;

    /**
     * 使用登记证号
     */
    private String registerNumber;

    /**
     * 经度
     */
    private BigDecimal lng;

    /**
     * 纬度
     */
    private BigDecimal lat;

    /**
     * 质监二维码
     */
    private String quality;

    /**
     * 年检日期
     */
    private LocalDate annualDate;

    /**
     * 下次年检
     */
    private LocalDate nextAnnual;

    /**
     * 电梯类型
     */
    private String type;

    /**
     * 使用状态;1:待用”、2:在用”、3:停用”
     */
    private Integer useState;

    /**
     * 注册代码
     */
    private String registerCode;

    /**
     * 救援站点
     */
    private String rescue;

    /**
     * 使用单位内部编码
     */
    private String innerCode;

    /**
     * 产权单位
     */
    private String propertyUnit;

    /**
     * 制造单位
     */
    private String manufactureUnit;

    /**
     * 制造单位统一社会信用代码
     */
    private String socialCreditCode;

    /**
     * 出厂编号
     */
    private String factoryNumber;

    /**
     * 安装单位
     */
    private String installUnit;

    /**
     * 检验机构
     */
    private String inspectionBody;

    /**
     * 特检码
     */
    private String specialCode;

    /**
     * 生产批次
     */
    private String productionBatch;

    /**
     * 出厂日期
     */
    private LocalDate leaveFactoryDate;

    /**
     * 生产厂家id
     */
    private String manufacturerId;

    /**
     * 节能类型;1:节能、2:非节能
     */
    private Integer energyType;

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

    /**
     * 电梯编号列表
     */
    private List<String> elevatorNumList;

    /**
     * 开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 奥远方电梯id
     */
    private Long eleId;

    /**
     * 有无机房（1:有 0:没有）
     */
    private Integer isMachine;
}
