package com.yuchen.saas.park.api.vo.people;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuchen.saas.park.api.dto.property.PropertyHousesDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

@Data
@HeadStyle(horizontalAlignment = HorizontalAlignment.CENTER)
@HeadRowHeight(25)
@ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER)
@ColumnWidth(12)
@ContentRowHeight(15)
@HeadFontStyle(fontHeightInPoints =9)
@ExcelIgnoreUnannotated
public class PmgBatParkPeopleExcelVo {

    @ExcelProperty("社区名称")
    @ApiModelProperty(name = "parkName", value = "社区名称")
    private String parkName;

    @ExcelProperty("楼栋")
    @ApiModelProperty(name = "buildingName", value = "楼栋名称")
    private String buildingName;

    @ExcelProperty("单元")
    @ApiModelProperty(name = "unitName", value = "单元名称")
    private String unitName;

    @ExcelProperty("房间")
    @ApiModelProperty(name = "roomNum", value = "房号")
    private String roomNum;




    @ExcelProperty("资源代码")
    @ApiModelProperty(name = "resourceCode", value = "资源代码")
    private String resourceCode;

    /**
     * 名字
     */
    @ExcelProperty("姓名")
    @ApiModelProperty(value = "姓名")
    private String name;
    /**
     * 身份ID
     */
    @ExcelProperty("身份证号")
    @ApiModelProperty(value = "身份证号")
    private String idCard;
    /**
     * 人员类型
     */
//    @ExcelProperty("人员类型")
//    @ApiModelProperty(value = "人员类型")
//    private Long peopleType;

    @ExcelProperty("联系人")
    @ApiModelProperty(value = "联系人")
    private String emergencyContact;

    /**
     * 联系方式
     */
    @ExcelProperty("联系方式")
    @ApiModelProperty(value = "联系方式")
    private String phone;


    /**
     * 人员类型
     */
    @ExcelProperty("人员类型")
    @ApiModelProperty(value = "人员类型")
    private Long peopleType;


    /**
     * 人脸图片路径
     */
    @ApiModelProperty(value = "人脸图片路径")
    private String imgsrc;
    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    private String sex;

    /**
     * 公司
     */
    @ApiModelProperty(value = "公司ID")
    private Long company;



    /**
     * 人员组织code orgIndexCode
     */
    private String orgIndexCode;

    /**
     * 人员类型
     */
    @ApiModelProperty(value = "人员类型")
    private String type;
    /**
     * 类型选项
     */
    @ApiModelProperty(value = "类型选项")
    private String category;
    /**
     * 车牌号
     */
    @ApiModelProperty(value = "车牌号")
    private String license;
    /**
     * 下发状态
     */
    @ApiModelProperty(value = "下发状态")
    private String snStatus;
    /**
     * 海康人员ID
     */
    @ApiModelProperty(value = "海康人员ID")
    private String personId;
    /**
     * 海康人脸ID
     */
    @ApiModelProperty(value = "海康人脸ID")
    private String faceId;
    /**
     * 人脸应用-人脸的唯一标识
     */
    @ApiModelProperty(value = "人脸应用-人脸的唯一标识")
    private String indexCode;
    /**
     * 年龄字段
     */
    @ApiModelProperty(value = "年龄")
    private Integer age;
    /**
     * 服务来源(1:新ISC、2:旧ISC)
     */
    @ApiModelProperty(value = "服务来源(1:新ISC、2:旧ISC) 3：组织架构 4:伙伴人员 5：外部人员")
    private Integer serviceSource;

    /***********************  3D/bi  **********************/

    @ApiModelProperty(value = "楼栋id")
    private Long buildingId;

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

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

    @ApiModelProperty(value = "证件类型")
    private String idType;

    @ApiModelProperty(value = "住户照片")
    private String photo;

    @ApiModelProperty(value = "证件照片")
    private String idPhoto;

    @ApiModelProperty(value = "证件照片反面")
    private String idPhotoBack;

    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "证件有效期")
    private Date idExpireDate;

    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "有效期")
    private Date expireDate;

    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "证件起始日期")
    private Date idStartDate;

    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "起始日期")
    private Date startDate;



    @ApiModelProperty(value = "紧急联系电话")
    private String emergencyPhone;

    @ApiModelProperty(value = "备注信息")
    private String remark;

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


    @ApiModelProperty(value = "单元名称")
    private String buildingUnitName;

    @ApiModelProperty(value = "楼层名称")
    private String floorName;

    @ApiModelProperty(value = "房间名称")
    private String roomName;

    /**
     * 人员状态
     */
    @ApiModelProperty(value = "人员状态 1：未生效 2：生效中 3：已失效")
    private Integer personStatus;
    /*
     * 绑定账号
     */
    @ApiModelProperty(value = "绑定账号 1:已绑定 2：未绑定 3：已失效")
    private Integer bindUser;

    @TableField(exist = false)
    @ApiModelProperty(value = "房源列表")
    private List<PropertyHousesDto> housesList;

    @TableField(exist = false)
    @ApiModelProperty(value = "是否为企业")
    private Integer ownerType;

    @TableField(exist = false)
    @ApiModelProperty(value = "人员大类")
    private String bigType;


    @ApiModelProperty(value = "是否为企业")
    private Integer isCompany;

    @ApiModelProperty(value = "联系人")
    private String contactPerson;

    @ApiModelProperty(value = "法定代表人")
    private String legalPerson;

    @ApiModelProperty(value = "机构类型")
    private Long orgType;

    @ApiModelProperty(value = "所属行业")
    private Long companyTrade;


    @ApiModelProperty(value = "人员二级类型ID")
    private Long peopleSubType;

    @ApiModelProperty(value = "关联人员ID")
    private Long relatedPerson;

    @ApiModelProperty(value = "绑定状态 1：已绑定 2：未绑定 3：已失效")
    private Integer bindStatus;

    @ApiModelProperty(value = "绑定账号")
    private String bindAccount;

    @ApiModelProperty(value = "租赁状态 1：生效中 2：未生效 3：已失效")
    private Integer rentStatus;

    @ApiModelProperty(value = "人员标签")
    private String personTag;

    @ApiModelProperty(value = "最后一次同步人员到电梯人员的时间")
    private Date lastSyncElevatorTime;

    @ApiModelProperty(value = "最后一次同步人员到门禁人员的时间")
    private Date lastSyncDoorTime;

    @ApiModelProperty(value = "是否是楼栋管家 1是 0否")
    private Integer isBuildingManager;

    @ApiModelProperty(value = "是否是楼栋工程师 1是 0否")
    private Integer isBuildingEngineer;


    public String getParkName() {
        return parkName;
    }

    public void setParkName(String parkName) {
        this.parkName = parkName;
    }

    public String getBuildingName() {
        return buildingName;
    }

    public void setBuildingName(String buildingName) {
        this.buildingName = buildingName;
    }

    public String getUnitName() {
        return unitName;
    }

    public void setUnitName(String unitName) {
        this.unitName = unitName;
    }

    public String getRoomNum() {
        return roomNum;
    }

    public void setRoomNum(String roomNum) {
        this.roomNum = roomNum;
    }

    public String getResourceCode() {
        return resourceCode;
    }

    public void setResourceCode(String resourceCode) {
        this.resourceCode = resourceCode;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getImgsrc() {
        return imgsrc;
    }

    public void setImgsrc(String imgsrc) {
        this.imgsrc = imgsrc;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Long getCompany() {
        return company;
    }

    public void setCompany(Long company) {
        this.company = company;
    }

    public String getOrgIndexCode() {
        return orgIndexCode;
    }

    public void setOrgIndexCode(String orgIndexCode) {
        this.orgIndexCode = orgIndexCode;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getLicense() {
        return license;
    }

    public void setLicense(String license) {
        this.license = license;
    }

    public String getSnStatus() {
        return snStatus;
    }

    public void setSnStatus(String snStatus) {
        this.snStatus = snStatus;
    }

    public String getPersonId() {
        return personId;
    }

    public void setPersonId(String personId) {
        this.personId = personId;
    }

    public String getFaceId() {
        return faceId;
    }

    public void setFaceId(String faceId) {
        this.faceId = faceId;
    }

    public String getIndexCode() {
        return indexCode;
    }

    public void setIndexCode(String indexCode) {
        this.indexCode = indexCode;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getServiceSource() {
        return serviceSource;
    }

    public void setServiceSource(Integer serviceSource) {
        this.serviceSource = serviceSource;
    }

    public Long getBuildingId() {
        return buildingId;
    }

    public void setBuildingId(Long buildingId) {
        this.buildingId = buildingId;
    }

    public Long getFloorId() {
        return floorId;
    }

    public void setFloorId(Long floorId) {
        this.floorId = floorId;
    }

    public Long getRoomId() {
        return roomId;
    }

    public void setRoomId(Long roomId) {
        this.roomId = roomId;
    }

    public String getIdType() {
        return idType;
    }

    public void setIdType(String idType) {
        this.idType = idType;
    }

    public String getPhoto() {
        return photo;
    }

    public void setPhoto(String photo) {
        this.photo = photo;
    }

    public String getIdPhoto() {
        return idPhoto;
    }

    public void setIdPhoto(String idPhoto) {
        this.idPhoto = idPhoto;
    }

    public String getIdPhotoBack() {
        return idPhotoBack;
    }

    public void setIdPhotoBack(String idPhotoBack) {
        this.idPhotoBack = idPhotoBack;
    }

    public Date getIdExpireDate() {
        return idExpireDate;
    }

    public void setIdExpireDate(Date idExpireDate) {
        this.idExpireDate = idExpireDate;
    }

    public Date getExpireDate() {
        return expireDate;
    }

    public void setExpireDate(Date expireDate) {
        this.expireDate = expireDate;
    }

    public Date getIdStartDate() {
        return idStartDate;
    }

    public void setIdStartDate(Date idStartDate) {
        this.idStartDate = idStartDate;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public String getEmergencyPhone() {
        return emergencyPhone;
    }

    public void setEmergencyPhone(String emergencyPhone) {
        this.emergencyPhone = emergencyPhone;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Long getBuildingUnitId() {
        return buildingUnitId;
    }

    public void setBuildingUnitId(Long buildingUnitId) {
        this.buildingUnitId = buildingUnitId;
    }

    public String getBuildingUnitName() {
        return buildingUnitName;
    }

    public void setBuildingUnitName(String buildingUnitName) {
        this.buildingUnitName = buildingUnitName;
    }

    public String getFloorName() {
        return floorName;
    }

    public void setFloorName(String floorName) {
        this.floorName = floorName;
    }

    public String getRoomName() {
        return roomName;
    }

    public void setRoomName(String roomName) {
        this.roomName = roomName;
    }

    public Integer getPersonStatus() {
        return personStatus;
    }

    public void setPersonStatus(Integer personStatus) {
        this.personStatus = personStatus;
    }

    public Integer getBindUser() {
        return bindUser;
    }

    public void setBindUser(Integer bindUser) {
        this.bindUser = bindUser;
    }

    public List<PropertyHousesDto> getHousesList() {
        return housesList;
    }

    public void setHousesList(List<PropertyHousesDto> housesList) {
        this.housesList = housesList;
    }

    public Integer getOwnerType() {
        return ownerType;
    }

    public void setOwnerType(Integer ownerType) {
        this.ownerType = ownerType;
    }

    public String getBigType() {
        return bigType;
    }

    public void setBigType(String bigType) {
        this.bigType = bigType;
    }

    public Integer getIsCompany() {
        return isCompany;
    }

    public void setIsCompany(Integer isCompany) {
        this.isCompany = isCompany;
    }

    public String getContactPerson() {
        return contactPerson;
    }

    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson;
    }

    public String getLegalPerson() {
        return legalPerson;
    }

    public void setLegalPerson(String legalPerson) {
        this.legalPerson = legalPerson;
    }

    public Long getOrgType() {
        return orgType;
    }

    public void setOrgType(Long orgType) {
        this.orgType = orgType;
    }

    public Long getCompanyTrade() {
        return companyTrade;
    }

    public void setCompanyTrade(Long companyTrade) {
        this.companyTrade = companyTrade;
    }

    public Long getPeopleSubType() {
        return peopleSubType;
    }

    public void setPeopleSubType(Long peopleSubType) {
        this.peopleSubType = peopleSubType;
    }

    public Long getRelatedPerson() {
        return relatedPerson;
    }

    public void setRelatedPerson(Long relatedPerson) {
        this.relatedPerson = relatedPerson;
    }

    public Integer getBindStatus() {
        return bindStatus;
    }

    public void setBindStatus(Integer bindStatus) {
        this.bindStatus = bindStatus;
    }

    public String getBindAccount() {
        return bindAccount;
    }

    public void setBindAccount(String bindAccount) {
        this.bindAccount = bindAccount;
    }

    public Integer getRentStatus() {
        return rentStatus;
    }

    public void setRentStatus(Integer rentStatus) {
        this.rentStatus = rentStatus;
    }

    public String getPersonTag() {
        return personTag;
    }

    public void setPersonTag(String personTag) {
        this.personTag = personTag;
    }

    public Date getLastSyncElevatorTime() {
        return lastSyncElevatorTime;
    }

    public void setLastSyncElevatorTime(Date lastSyncElevatorTime) {
        this.lastSyncElevatorTime = lastSyncElevatorTime;
    }

    public Date getLastSyncDoorTime() {
        return lastSyncDoorTime;
    }

    public void setLastSyncDoorTime(Date lastSyncDoorTime) {
        this.lastSyncDoorTime = lastSyncDoorTime;
    }

    public Integer getIsBuildingManager() {
        return isBuildingManager;
    }

    public void setIsBuildingManager(Integer isBuildingManager) {
        this.isBuildingManager = isBuildingManager;
    }

    public Integer getIsBuildingEngineer() {
        return isBuildingEngineer;
    }

    public void setIsBuildingEngineer(Integer isBuildingEngineer) {
        this.isBuildingEngineer = isBuildingEngineer;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getEmergencyContact() {
        return emergencyContact;
    }

    public void setEmergencyContact(String emergencyContact) {
        this.emergencyContact = emergencyContact;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Long getPeopleType() {
        return peopleType;
    }

    public void setPeopleType(Long peopleType) {
        this.peopleType = peopleType;
    }
}
