package com.casic.missiles.model.meter;

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.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 计量管理-溯源供方-溯源供方表(计量计量单位的设备的单位)
 * </p>
 *
 * @author wangpeng
 * @since 2022-11-28
 */
@ColumnWidth(30)
@HeadRowHeight(15)
@ContentRowHeight(20)
@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
@ExcelIgnoreUnannotated
@ApiModel
@Data
@TableName("meter_trace_supplier")
public class MeterTraceSupplier implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId("id")
    @ApiModelProperty(value = "主键id（列表、更新接口参数）", dataType = "Long")
    private Long id;

    /**
     * 溯源供方编号
     */
    @ExcelProperty("溯源供方编号")
    @ApiModelProperty(value = "溯源供方编号（列表、更新接口参数）", dataType = "String")
    @TableField("supplier_no")
    private String supplierNo;

    /**
     * 公司名称
     */
    @ExcelProperty("溯源供方名称")
    @ApiModelProperty(value = "公司名称", dataType = "String", required = true)
    @NotBlank(message = "公司名称不能为空")
    @TableField("supplier_name")
    private String supplierName;

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

    /**
     * 业务内容
     */
    @ExcelProperty("业务内容")
    @ApiModelProperty(value = "业务内容", dataType = "String", required = true)
    @NotBlank(message = "业务内容不能为空")
    @TableField("business_content")
    private String businessContent;

    /**
     * 税号
     */
    @ApiModelProperty(value = "税号", dataType = "String")
    @TableField("tax_number")
    private String taxNumber;

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

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

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

    /**
     * 邮编
     */
    @ApiModelProperty(value = "邮编", dataType = "String")
    @TableField("postal_code")
    private String postalCode;

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

    /**
     * 电话
     */
    @ExcelProperty("联系方式")
    @ApiModelProperty(value = "电话", dataType = "String")
    @TableField("phone")
    private String phone;

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

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

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱", dataType = "String")
    @TableField("mailbox")
    private String mailbox;

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

    /**
     * 公司地址-国家
     */
    @ApiModelProperty(value = "公司地址-国家(code)", dataType = "String")
    @TableField("company_country")
    private String companyCountry;

    @ExcelProperty("公司地址-国家")
    @ApiModelProperty(value = "公司地址-国家(名称)", dataType = "String")
    @TableField("company_country_name")
    private String companyCountryName;

    /**
     * 公司地址-省
     */
    @ApiModelProperty(value = "公司地址-省(code)", dataType = "String")
    @TableField("company_province")
    private String companyProvince;

    @ExcelProperty("公司地址-省")
    @ApiModelProperty(value = "公司地址-省(名称)", dataType = "String")
    @TableField("company_province_name")
    private String companyProvinceName;

    /**
     * 公司地址-市
     */
    @ApiModelProperty(value = "公司地址-市(code)", dataType = "String")
    @TableField("company_city")
    private String companyCity;

    @ExcelProperty("公司地址-市")
    @ApiModelProperty(value = "公司地址-市(名称)", dataType = "String")
    @TableField("company_city_name")
    private String companyCityName;

    /**
     * 公司地址-区
     */
    @ApiModelProperty(value = "公司地址-区(code)", dataType = "String")
    @TableField("company_area")
    private String companyArea;

    @ExcelProperty("公司地址-区")
    @ApiModelProperty(value = "公司地址-区(名称)", dataType = "String")
    @TableField("company_area_name")
    private String companyAreaName;

    /**
     * 公司地址-详细地址
     */
    @ExcelProperty("公司地址-详细地址")
    @ApiModelProperty(value = "公司地址-详细地址", dataType = "String")
    @TableField("company_address")
    private String companyAddress;

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

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

    /**
     * 开票地址-省
     */
    @ApiModelProperty(value = "开票地址-省(code)", dataType = "String")
    @TableField("invoice_province")
    private String invoiceProvince;

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

    /**
     * 开票地址-市
     */
    @ApiModelProperty(value = "开票地址-市(code)", dataType = "String")
    @TableField("invoice_city")
    private String invoiceCity;

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

    /**
     * 开票地址-区
     */
    @ApiModelProperty(value = "开票地址-区(code)", dataType = "String")
    @TableField("invoice_area")
    private String invoiceArea;

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

    /**
     * 开票地址-详细地址
     */
    @ApiModelProperty(value = "开票地址-详细地址", dataType = "String")
    @TableField("invoice_address")
    private String invoiceAddress;

    /**
     * 公司业务范围
     */
    @ApiModelProperty(value = "公司业务范围", dataType = "String")
    @TableField("business_scope")
    private String businessScope;

    /**
     * minio存储文件名
     */
    @ApiModelProperty(value = "上传文件返回名称", dataType = "String")
    @TableField("minio_file_name")
    private String minioFileName;

    /**
     * 审批状态-字典code
     */
    @ApiModelProperty(hidden = true)
    @TableField("approval_status")
    private String approvalStatus;

    @ApiModelProperty(hidden = true)
    @TableField(exist = false)
    private String approvalStatusName;

    /**
     * 流程实例id
     */
    @ApiModelProperty(value = "流程实例id（未通过编辑接口必传参数）", dataType = "String")
    @TableField("process_id")
    private String processId;

    /**
     * 登录者用户id（保证流程发起人为登录用户），接口中获取，工作流中使用
     */
    @ApiModelProperty(hidden = true)
    @TableField("create_user_id")
    private Long createUserId;

    /**
     * 备注
     */
    @ExcelProperty("备注")
    @ApiModelProperty(value = "备注", dataType = "String")
    @TableField("remark")
    private String remark;

    /**
     * 删除标记
     */
    @ApiModelProperty(hidden = true)
    @TableField("is_del")
    private Integer isDel;

    /**
     * 创建时间
     */
    @ExcelProperty("创建时间")
    @ApiModelProperty(value = "创建时间（列表接口参数）", dataType = "String")
    @TableField("create_time")
    private String createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(hidden = true)
    @TableField("update_time")
    private String updateTime;

    @TableField(exist = false)
    private List<MeterTraceSupplierPerson> traceSupplierPersonList;

    @TableField(exist = false)
    private List<Long> standardEquipmentIds;

}
