package org.dromara.elevator.domain.vo;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.elevator.domain.EElevatorInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 电梯基础信息;视图对象 e_elevator_info
 *
 * @author zy
 * @date 2024-07-26
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = EElevatorInfo.class)
public class EElevatorInfoVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

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

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

    /**
     * 部门id
     */
    private Long deptId;

    /**
     * 电梯编号
     */
    @ExcelProperty(value = "电梯编号")
    private String elevatorNum;

    /**
     * 电梯名称
     */
    @ExcelProperty(value = "电梯名称")
    private String elevatorName;

    /**
     * 电梯地址
     */
    @ExcelProperty(value = "电梯地址")
    private String elevatorAddress;

    /**
     * 设备代码
     */
    @ExcelProperty(value = "设备代码")
    private String deviceCode;

    /**
     * 行政区域编号
     */
    @ExcelProperty(value = "行政区域编号")
    private String areaCode;

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

    /**
     * 楼宇名称
     */
    @ExcelProperty(value = "楼宇名称")
    private String buildingName ;

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


    /** 小区名称 */
    @ExcelProperty(value = "小区名称")
    private String houseName ;

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

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

    /** 使用单位名称 */
    @ExcelProperty(value = "使用单位名称")
    private String employName ;

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

    /** 物业单位名称 */
    @ExcelProperty(value = "物业单位名称")
    private String tenementName ;

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

    /** 维保单位名称 */
    @ExcelProperty(value = "维保单位名称")
    private String maintenanceName ;

    /**
     * 品牌
     */
    @ExcelProperty(value = "品牌")
    private String brand;

    /**
     * 型号
     */
    @ExcelProperty(value = "型号")
    private String model;

    /**
     * 额定载重
     */
    @ExcelProperty(value = "额定载重")
    private Integer load;

    /**
     * 额定速度
     */
    @ExcelProperty(value = "额定速度")
    private Integer speed;

    /**
     * 层站门数
     */
    @ExcelProperty(value = "层站门数")
    private String standNum;

    /**
     * 控制方式;1:按钮”、2:信号”、3:集选”、4:群控”，
     */
    @ExcelProperty(value = "控制方式")
    private Integer controlMode;

    /**
     * 安装日期
     */
    @ExcelProperty(value = "安装日期")
    private LocalDate installDate;

    /**
     * 使用登记证号
     */
    @ExcelProperty(value = "使用登记证号")
    private String registerNumber;

    /**
     * 经度
     */
    @ExcelProperty(value = "经度")
    private BigDecimal lng;

    /**
     * 纬度
     */
    @ExcelProperty(value = "纬度")
    private BigDecimal lat;

    /**
     * 质监二维码
     */
    @ExcelProperty(value = "质监二维码")
    private String quality;

    /**
     * 年检日期
     */
    @ExcelProperty(value = "年检日期")
    private LocalDate annualDate;

    /**
     * 下次年检
     */
    @ExcelProperty(value = "下次年检")
    private LocalDate nextAnnual;

    /**
     * 电梯类型
     */
    @ExcelProperty(value = "电梯类型")
    private String type;

    /**
     * 使用状态;1:待用”、2:在用”、3:停用”
     */
    @ExcelProperty(value = "使用状态")
    private Integer useState;

    /**
     * 注册代码
     */
    @ExcelProperty(value = "注册代码")
    private String registerCode;

    /**
     * 救援站点
     */
    @ExcelProperty(value = "救援站点")
    private String rescue;

    /**
     * 使用单位内部编码
     */
    @ExcelProperty(value = "使用单位内部编码")
    private String innerCode;

    /**
     * 产权单位
     */
    @ExcelProperty(value = "产权单位")
    private String propertyUnit;

    /**
     * 制造单位
     */
    @ExcelProperty(value = "制造单位")
    private String manufactureUnit;

    /**
     * 制造单位统一社会信用代码
     */
    @ExcelProperty(value = "制造单位统一社会信用代码")
    private String socialCreditCode;

    /**
     * 出厂编号
     */
    @ExcelProperty(value = "出厂编号")
    private String factoryNumber;

    /**
     * 安装单位
     */
    @ExcelProperty(value = "安装单位")
    private String installUnit;

    /**
     * 检验机构
     */
    @ExcelProperty(value = "检验机构")
    private String inspectionBody;

    /**
     * 特检码
     */
    @ExcelProperty(value = "特检码")
    private String specialCode;

    /**
     * 生产批次
     */
    @ExcelProperty(value = "生产批次")
    private String productionBatch;

    /**
     * 出厂日期
     */
    @ExcelProperty(value = "出厂日期")
    private LocalDate leaveFactoryDate;

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

    /**
     * 节能类型 1:节能、2:非节能
     */
    @ExcelProperty(value = "节能类型")
    private Integer energyType;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

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

    /**
     * 有无机房 1:有 0:没有
     */
    @ExcelProperty(value = "有无机房")
    private Integer isMachine;

    /**
     * 上一次维保时间
     */
    private Date lastMaintenanceTime;

    /**
     * 年检日期
     */
    private Date inspectAnnuallyTime;

    /**
     * 维保信息
     */
    private EMaintenanceInfoVo maintenanceInfo;

    /**
     * 物业信息
     */
    private ETenementInfoVo tenementInfo;

}
