package com.jkcredit.invoice.model.entity.customer;

import cn.afterturn.easypoi.excel.annotation.Excel;
import org.apache.ibatis.annotations.Insert;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;

/**
 * 客户备案信息
 * @author mumuxigua
 */
public class CustomerRec {
    /**
     * 客户名称
     */
    @Excel(name = "appKey")
    @NotNull(groups = {Insert.class},message = "用户名称不能为空")
    public String customerName;

    private Long id;
    /**
     * 紧急联系人
     */
    @NotNull(message = "紧急联系人不能为空")
    @Length(max = 50 ,message = "紧急联系人格式有误")
    private String companyLeader;

    /**
     * 紧急联系人电话
     */
    @NotNull(message = "紧急联系人电话不能为空")
    @Length(max = 13,message = "紧急联系人电话格式有误")
    private String companyLeaderPhone;

    /**
     * 公司名称
     */
    @Excel(name = "公司名称")
    @NotNull(groups = {Insert.class}, message = "公司名称不能为空")
    @Length(groups = {Insert.class},max = 150 ,message = "公司名称格式有误")
    private String companyName;

    /**
     * 公司税号
     */
    @NotNull(groups = {Insert.class},message = "公司税号不能为空")
    @Length(groups = {Insert.class},max = 50 ,message = "公司税号格式有误")
    private String companyReferencenum;

    /**
     * 公司开户行
     */
    @NotNull(message = "公司开户行不能为空")
    @Length(max = 50 ,message = "公司开户行格式有误")
    private String companyOpenbank;

    /**
     * 公司开户行账号
     */
    @NotNull(message = "公司开户行账号不能为空")
    @Length(max = 50 ,message = "公司开户行账号格式有误")
    private String companyOpenbankAcc;

    /**
     * 公司地址
     */
    @NotNull(message = "公司地址不能为空")
    @Length(max = 100 ,message = "公司地址格式有误")
    private String companyAdress;

    /**
     * 公司邮箱
     */
    private String invoiceMail;
    /**
     * 公司电话
     */
    @NotNull(message = "公司电话不能为空")
    @Length(max = 100 ,message = "公司电话格式有误")
    private String companyPhone;

    /**
     * 1-行业用户 2-自营平台 3-合作商户
     */
    @NotNull(message = "公司类型不能为空")
    private Integer companyType;
    /**
     * 1-快递
     * 2-速运
     * 3-货运代理
     * 4-普通货运
     * 5-专线运输
     * 6-其他
     * 运营范围
     */
    @NotNull(message = "业务类型不能为空")
    private Integer operatingRangeType;

    /**
     * 企业编号注册后返回
     */
    private String companyNum;


    private String createtime;
    @Excel(name = "主体名称")
    private String companyBelongName;
    /**
     * 2-失败 1-成功 3-等待协议上传 4-停用 0-备案中
     */
    private Integer recStatus;

    /**
     * 0-接口 1-平台
     */
    private Integer interType = 1;

    /**
     * 业务类型 0 -自有车 1-外协车 2-无车
     */
    @Excel(name = "业务类型")
    @NotNull(message = "业务类型不能为空")
    private String bussinessType;

    /*协议相关字段*/

    /**
     * 服务开始时间
     */
    @NotNull(message = "服务开始时间不能为空")
    private String serviceStartTime;

    /**
     * 服务结束时间
     */
    @NotNull(message = "服务结束时间不能为空")
    private String serviceEndTime;


    /**
     * 服务结束时间开始
     */
    private String serviceEndTimeStart;


    /**
     * 服务结束时间结束
     */
    private String serviceEndTimeEnd;


    /**
     * 协议类型
     */
    private Integer serviceType;
    /**
     * 协议文件名
     */
    private String contractFileName;
    /**
     * 协议base64编码
     */
    private String base64Str;

    private String lowerBase64Str;

    private String lowerFileName;

    /**
     * 1-协议已上传 2-协议未上传
     */
    private Integer contractSuc = 2;

    /**
     * 协议编号 协议上传成功后返回
     */
    private String contrantNum;

    /**
     * 企业注册失败原因
     */
    private String fileMessage;
    //承诺书文件名
    private String promiseFileName;
    //承诺书base64码
    private String promiseBase64Str;
    //承诺书状态 1-未上传 2-上传失败 3-上传成功
    private String promiseFileStatus;

    /**
     * 协议码
     */
    private String promiseNum;
    /**
     * 协议上传状态
     * 1、协议上传失败
     * 2、协议上传成功，审批中
     * 3、备案成功
     */
    private Integer contractStatus;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCompanyLeader() {
        return companyLeader;
    }

    public void setCompanyLeader(String companyLeader) {
        this.companyLeader = companyLeader == null ? null : companyLeader.trim();
    }

    public String getCompanyLeaderPhone() {
        return companyLeaderPhone;
    }

    public void setCompanyLeaderPhone(String companyLeaderPhone) {
        this.companyLeaderPhone = companyLeaderPhone == null ? null : companyLeaderPhone.trim();
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName == null ? null : companyName.trim();
    }

    public String getCompanyReferencenum() {
        return companyReferencenum;
    }

    public void setCompanyReferencenum(String companyReferencenum) {
        this.companyReferencenum = companyReferencenum == null ? null : companyReferencenum.trim();
    }

    public String getCompanyOpenbank() {
        return companyOpenbank;
    }

    public void setCompanyOpenbank(String companyOpenbank) {
        this.companyOpenbank = companyOpenbank == null ? null : companyOpenbank.trim();
    }

    public String getCompanyOpenbankAcc() {
        return companyOpenbankAcc;
    }

    public void setCompanyOpenbankAcc(String companyOpenbankAcc) {
        this.companyOpenbankAcc = companyOpenbankAcc == null ? null : companyOpenbankAcc.trim();
    }

    public String getCompanyAdress() {
        return companyAdress;
    }

    public void setCompanyAdress(String companyAdress) {
        this.companyAdress = companyAdress == null ? null : companyAdress.trim();
    }

    public String getCompanyPhone() {
        return companyPhone;
    }

    public void setCompanyPhone(String companyPhone) {
        this.companyPhone = companyPhone == null ? null : companyPhone.trim();
    }

    public String getCreatetime() {
        return createtime;
    }

    public void setCreatetime(String createtime) {
        this.createtime = createtime;
    }

    public String getCompanyBelongName() {
        return companyBelongName;
    }

    public void setCompanyBelongName(String companyBelongName) {
        this.companyBelongName = companyBelongName == null ? null : companyBelongName.trim();
    }

    public Integer getRecStatus() {
        return recStatus;
    }

    public void setRecStatus(Integer recStatus) {
        this.recStatus = recStatus;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public Integer getInterType() {
        return interType;
    }

    public void setInterType(Integer interType) {
        this.interType = interType;
    }

    public String getBussinessType() {
        return bussinessType;
    }

    public void setBussinessType(String bussinessType) {
        this.bussinessType = bussinessType;
    }

    public Integer getCompanyType() {
        return companyType;
    }

    public void setCompanyType(Integer companyType) {
        this.companyType = companyType;
    }

    public Integer getOperatingRangeType() {
        return operatingRangeType;
    }

    public void setOperatingRangeType(Integer operatingRangeType) {
        this.operatingRangeType = operatingRangeType;
    }

    public String getCompanyNum() {
        return companyNum;
    }

    public void setCompanyNum(String companyNum) {
        this.companyNum = companyNum;
    }

    public String getServiceStartTime() {
        return serviceStartTime;
    }

    public void setServiceStartTime(String serviceStartTime) {
        this.serviceStartTime = serviceStartTime;
    }

    public String getServiceEndTime() {
        return serviceEndTime;
    }

    public void setServiceEndTime(String serviceEndTime) {
        this.serviceEndTime = serviceEndTime;
    }

    public Integer getServiceType() {
        return serviceType;
    }

    public void setServiceType(Integer serviceType) {
        this.serviceType = serviceType;
    }

    public String getContractFileName() {
        return contractFileName;
    }

    public void setContractFileName(String contractFileName) {
        this.contractFileName = contractFileName;
    }

    public String getBase64Str() {
        return base64Str;
    }

    public void setBase64Str(String base64Str) {
        this.base64Str = base64Str;
    }

    public Integer getContractSuc() {
        return contractSuc;
    }

    public void setContractSuc(Integer contractSuc) {
        this.contractSuc = contractSuc;
    }

    public String getContrantNum() {
        return contrantNum;
    }

    public void setContrantNum(String contrantNum) {
        this.contrantNum = contrantNum;
    }

    public String getLowerBase64Str() {
        return lowerBase64Str;
    }

    public void setLowerBase64Str(String lowerBase64Str) {
        this.lowerBase64Str = lowerBase64Str;
    }

    public String getLowerFileName() {
        return lowerFileName;
    }

    public void setLowerFileName(String lowerFileName) {
        this.lowerFileName = lowerFileName;
    }

    public String getServiceEndTimeStart() {
        return serviceEndTimeStart;
    }

    public void setServiceEndTimeStart(String serviceEndTimeStart) {
        this.serviceEndTimeStart = serviceEndTimeStart;
    }

    public String getServiceEndTimeEnd() {
        return serviceEndTimeEnd;
    }

    public void setServiceEndTimeEnd(String serviceEndTimeEnd) {
        this.serviceEndTimeEnd = serviceEndTimeEnd;
    }


    public String getFileMessage() {
        return fileMessage;
    }

    public void setFileMessage(String fileMessage) {
        this.fileMessage = fileMessage;
    }

    public Integer getContractStatus() {
        return contractStatus;
    }

    public void setContractStatus(Integer contractStatus) {
        this.contractStatus = contractStatus;
    }

    public String getInvoiceMail() {
        return invoiceMail;
    }

    public void setInvoiceMail(String invoiceMail) {
        this.invoiceMail = invoiceMail;
    }

    public String getPromiseFileName() {
        return promiseFileName;
    }

    public void setPromiseFileName(String promiseFileName) {
        this.promiseFileName = promiseFileName;
    }

    public String getPromiseBase64Str() {
        return promiseBase64Str;
    }

    public void setPromiseBase64Str(String promiseBase64Str) {
        this.promiseBase64Str = promiseBase64Str;
    }

    public String getPromiseFileStatus() {
        return promiseFileStatus;
    }

    public void setPromiseFileStatus(String promiseFileStatus) {
        this.promiseFileStatus = promiseFileStatus;
    }

    public String getPromiseNum() {
        return promiseNum;
    }

    public void setPromiseNum(String promiseNum) {
        this.promiseNum = promiseNum;
    }

    @Override
    public String toString() {
        return "CustomerRec{" +
                "id=" + id +
                ", customerName='" + customerName + '\'' +
                ", companyLeader='" + companyLeader + '\'' +
                ", companyLeaderPhone='" + companyLeaderPhone + '\'' +
                ", companyName='" + companyName + '\'' +
                ", companyReferencenum='" + companyReferencenum + '\'' +
                ", companyOpenbank='" + companyOpenbank + '\'' +
                ", companyOpenbankAcc='" + companyOpenbankAcc + '\'' +
                ", companyAdress='" + companyAdress + '\'' +
                ", companyPhone='" + companyPhone + '\'' +
                ", companyType=" + companyType +
                ", operatingRangeType=" + operatingRangeType +
                ", companyNum='" + companyNum + '\'' +
                ", createtime='" + createtime + '\'' +
                ", companyBelongName='" + companyBelongName + '\'' +
                ", recStatus=" + recStatus +
                ", interType=" + interType +
                ", bussinessType='" + bussinessType + '\'' +
                ", serviceStartTime='" + serviceStartTime + '\'' +
                ", serviceEndTime='" + serviceEndTime + '\'' +
                ", serviceEndTimeStart='" + serviceEndTimeStart + '\'' +
                ", serviceEndTimeEnd='" + serviceEndTimeEnd + '\'' +
                ", serviceType=" + serviceType +
                ", contractFileName='" + contractFileName + '\'' +
                ", base64Str='" + base64Str + '\'' +
                ", lowerBase64Str='" + lowerBase64Str + '\'' +
                ", lowerFileName='" + lowerFileName + '\'' +
                ", contractSuc=" + contractSuc +
                ", contrantNum='" + contrantNum + '\'' +
                ", fileMessage='" + fileMessage + '\'' +
                ", contractStatus=" + contractStatus +
                '}';
    }
}