package com.jeeplus.assess.invoice.domain.OMS.InvoiceDown;

import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Pattern;

/**
 * 不动产租赁服务信息实体类
 * 用于发票中不动产租赁相关的特定信息
 */
public class OMSDownRealPropertyRentInfo {
    /**
     * 不动产地址(省)
     * 必填
     */
    @NotBlank(message = "不动产地址(省)realPropertyAddress不能为空")
    private String realPropertyAddress;

    /**
     * 不动产地址(市)
     * 非必填
     */
    private String realPropertyAddressCity;

    /**
     * 详细地址
     * 非必填，120个字节
     */
    private String detailAddress;

    /**
     * 租赁开始日期
     * 必填，10个字节，格式为yyyy-MM-dd或yyyy-MM-dd HH:mm
     */
    @NotBlank(message = "租赁开始日期rentStartDate不能为空")
    @Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2})?$", message = "租赁开始日期格式必须为yyyy-MM-dd或yyyy-MM-dd HH:mm")
    private String rentStartDate;

    /**
     * 租赁结束日期
     * 必填，10个字节，格式为yyyy-MM-dd或yyyy-MM-dd HH:mm
     */
    @NotBlank(message = "租赁结束日期rentEndDate不能为空")
    @Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2})?$", message = "租赁结束日期格式必须为yyyy-MM-dd或yyyy-MM-dd HH:mm")
    private String rentEndDate;

    /**
     * 跨地（市）标志
     * 必填，1个字节，可选值：0-否，1-是
     */
    @NotBlank(message = "跨地（市）标志crossCityFlag不能为空")
    @Pattern(regexp = "^[01]$", message = "跨地（市）标志crossCityFlag只能是0或1")
    private String crossCityFlag;

    /**
     * 产权证书/不动产权证号
     * 非必填，40个字节
     */
    private String realPropertyCertificate;

    /**
     * 面积单位
     * 必填，2个字节，可选值：1-平方千米,2-平方米,3-公顷,4-亩,5-hm²,6-km²,7-m²,8-米(铁路线与管道等使用)
     */
    @NotBlank(message = "面积单位unit不能为空")
    @Pattern(regexp = "^[1-8]$", message = "面积单位unit只能是1-8的数字")
    private String unit;

    public String getRealPropertyAddress() {
        return realPropertyAddress;
    }

    public void setRealPropertyAddress(String realPropertyAddress) {
        this.realPropertyAddress = realPropertyAddress;
    }

    public String getRealPropertyAddressCity() {
        return realPropertyAddressCity;
    }

    public void setRealPropertyAddressCity(String realPropertyAddressCity) {
        this.realPropertyAddressCity = realPropertyAddressCity;
    }

    public String getDetailAddress() {
        return detailAddress;
    }

    public void setDetailAddress(String detailAddress) {
        this.detailAddress = detailAddress;
    }

    public String getRentStartDate() {
        return rentStartDate;
    }

    public void setRentStartDate(String rentStartDate) {
        this.rentStartDate = rentStartDate;
    }

    public String getRentEndDate() {
        return rentEndDate;
    }

    public void setRentEndDate(String rentEndDate) {
        this.rentEndDate = rentEndDate;
    }

    public String getCrossCityFlag() {
        return crossCityFlag;
    }

    public void setCrossCityFlag(String crossCityFlag) {
        this.crossCityFlag = crossCityFlag;
    }

    public String getRealPropertyCertificate() {
        return realPropertyCertificate;
    }

    public void setRealPropertyCertificate(String realPropertyCertificate) {
        this.realPropertyCertificate = realPropertyCertificate;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }
}
