package com.casic.missiles.model.customer;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.casic.missiles.annotation.DictCodeField;
import com.casic.missiles.constants.MeterDictCode;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

@Data
@TableName("customer_info")
public class CustomerInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    @ApiModelProperty(value = "编号", dataType = "String")
    private String customerNo;

    @ApiModelProperty(value = "公司名称", dataType = "String")
    private String customerName;

    @ApiModelProperty(value = "公司简称", dataType = "String")
    private String briefName;

    @ApiModelProperty(value = "业务内容", dataType = "String")
    private String businessContent;

    @ApiModelProperty(value = "税号", dataType = "String")
    private String taxNumber;

    @ApiModelProperty(value = "银行账户名", dataType = "String")
    private String bankAccount;

    @ApiModelProperty(value = "银行名称", dataType = "String")
    private String bankName;

    @ApiModelProperty(value = "银行账号", dataType = "String")
    private String bankAccountNumber;

    @ApiModelProperty(value = "邮编", dataType = "String")
    private String postalCode;

    @ApiModelProperty(value = "负责人", dataType = "String")
    private String director;

    @ApiModelProperty(value = "电话", dataType = "String")
    private String phone;

    @ApiModelProperty(value = "传真", dataType = "String")
    private String fax;

    @ApiModelProperty(value = "手机", dataType = "String")
    private String mobile;

    @ApiModelProperty(value = "邮箱", dataType = "String")
    private String email;

    @ApiModelProperty(value = "网址", dataType = "String")
    private String website;

    @ApiModelProperty(value = "履约评级-字典", dataType = "String")
    private String grade;

    @ApiModelProperty(value = "公司规模", dataType = "String")
    @DictCodeField(message = "公司规模描述不合法", cacheName = MeterDictCode.COMPANY_SCALE)
    private String companySize;

    @TableField(exist = false)
    @ApiModelProperty(value = "公司规模", dataType = "String")
    private String companySizeName;

    @ApiModelProperty(value = "业务规模-字典", dataType = "String")
    @DictCodeField(message = "业务规模描述不合法", cacheName = MeterDictCode.BUSINESS_SCALE)
    private String businessSize;

    @TableField(exist = false)
    @ApiModelProperty(value = "公司规模名称", dataType = "String")
    private String businessSizeName;

    @ApiModelProperty(value = "整体评价", dataType = "String")
    @DictCodeField(message = "公司整体评价不合法", cacheName = MeterDictCode.EVALUATION)
    private String evaluation;

    @TableField(exist = false)
    @ApiModelProperty(value = "整体评价", dataType = "String")
    private String evaluationName;

    @ApiModelProperty(value = "公司地址-国家", dataType = "String")
    private String addressCountry;

    @ApiModelProperty(value = "公司地址-省", dataType = "String")
    private String addressProvince;

    @ApiModelProperty(value = "公司地址-市", dataType = "String")
    private String addressCity;

    @ApiModelProperty(value = "公司地址-区", dataType = "String")
    private String addressArea;

    @ApiModelProperty(value = "公司地址-详细地址", dataType = "String")
    private String fullAddress;

    @ApiModelProperty(value = "公司地址-国家名字", dataType = "String")
    private String addressCountryName;

    @ApiModelProperty(value = "公司地址-省名字", dataType = "String")
    private String addressProvinceName;

    @ApiModelProperty(value = "公司地址-市名字", dataType = "String")
    private String addressCityName;

    @ApiModelProperty(value = "公司地址-区名字", dataType = "String")
    private String addressAreaName;

    @ApiModelProperty(value = "开票地址-国家", dataType = "String")
    private String invoiceCountry;

    @ApiModelProperty(value = "开票地址-省", dataType = "String")
    private String invoiceProvince;

    @ApiModelProperty(value = "开票地址-市", dataType = "String")
    private String invoiceCity;

    @ApiModelProperty(value = "开票地址-区", dataType = "String")
    private String invoiceArea;

    @ApiModelProperty(value = "开票地址-详细地址", dataType = "String")
    private String invoiceFullAddress;

    @ApiModelProperty(value = "开票地址-国家名字", dataType = "String")
    private String invoiceCountryName;

    @ApiModelProperty(value = "开票地址-省名字", dataType = "String")
    private String invoiceProvinceName;

    @ApiModelProperty(value = "开票地址-市名字", dataType = "String")
    private String invoiceCityName;

    @ApiModelProperty(value = "开票地址-区名字", dataType = "String")
    private String invoiceAreaName;

    @ApiModelProperty(value = "业务范围", dataType = "String")
    private String businessScope;

    @ApiModelProperty(value = "minio存储文件名", dataType = "String")
    private String minioFileName;

    @ApiModelProperty(value = "备注", dataType = "String")
    private String remark;

    @ApiModelProperty(value = "创建人", dataType = "Long")
    private Long createUser;

    @ApiModelProperty(value = "最后编辑人", dataType = "Long")
    private Long updateUser;

    @ApiModelProperty(value = "删除标记", dataType = "Integer")
    private Integer isDel;

    @ApiModelProperty(value = "创建时间", dataType = "String")
    private String createTime;

    @ApiModelProperty(value = "最后更新时间", dataType = "String")
    private String updateTime;

    @TableField(exist = false)
    private List<CustomerUserInfo> customerUserList;
}
