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

import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Pattern;

/**
 * 旅客运输信息实体类
 * 用于发票中旅客运输相关的特定信息
 */
public class OMSDownTravellerTransport {
    /**
     * 出行人
     * 必填，20个字节
     */
    @NotBlank(message = "出行人traveller不能为空")
    private String traveller;

    /**
     * 出行日期
     * 必填，10个字节，格式为yyyy-MM-dd
     */
    @NotBlank(message = "出行日期travelDate不能为空")
    @Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}$", message = "出行日期格式必须为yyyy-MM-dd")
    private String travelDate;

    /**
     * 出行人证件类型
     * 必填，10个字节，可选值包括101-组织机构代码证、201-居民身份证等
     */
    @NotBlank(message = "出行人证件类型travellerCardType不能为空")
    private String travellerCardType;

    /**
     * 出行人证件号码
     * 必填，20个字节
     */
    @NotBlank(message = "出行人证件号码travellerCardNo不能为空")
    private String travellerCardNo;

    /**
     * 出行地
     * 必填，80个字节
     */
    @NotBlank(message = "出行地travelPlace不能为空")
    private String travelPlace;

    /**
     * 到达地
     * 必填，80个字节
     */
    @NotBlank(message = "到达地arrivePlace不能为空")
    private String arrivePlace;

    /**
     * 交通工具类型
     * 必填，2个字节，可选值：1-飞机,2-火车,3-长途汽车,4-公共交通,5-出租车,6-汽车,7-船舶,9-其他
     */
    @NotBlank(message = "交通工具类型vehicleType不能为空")
    @Pattern(regexp = "^[1345679]$|^2$", message = "交通工具类型vehicleType只能是指定的数字")
    private String vehicleType;

    /**
     * 交通工具等级
     * 非必填，20个字节
     */
    private String vehicleLevel;

    public String getTraveller() {
        return traveller;
    }

    public void setTraveller(String traveller) {
        this.traveller = traveller;
    }

    public String getTravelDate() {
        return travelDate;
    }

    public void setTravelDate(String travelDate) {
        this.travelDate = travelDate;
    }

    public String getTravellerCardType() {
        return travellerCardType;
    }

    public void setTravellerCardType(String travellerCardType) {
        this.travellerCardType = travellerCardType;
    }

    public String getTravellerCardNo() {
        return travellerCardNo;
    }

    public void setTravellerCardNo(String travellerCardNo) {
        this.travellerCardNo = travellerCardNo;
    }

    public String getTravelPlace() {
        return travelPlace;
    }

    public void setTravelPlace(String travelPlace) {
        this.travelPlace = travelPlace;
    }

    public String getArrivePlace() {
        return arrivePlace;
    }

    public void setArrivePlace(String arrivePlace) {
        this.arrivePlace = arrivePlace;
    }

    public String getVehicleType() {
        return vehicleType;
    }

    public void setVehicleType(String vehicleType) {
        this.vehicleType = vehicleType;
    }

    public String getVehicleLevel() {
        return vehicleLevel;
    }

    public void setVehicleLevel(String vehicleLevel) {
        this.vehicleLevel = vehicleLevel;
    }
}
