package com.casic.missiles.model.business;

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 com.casic.missiles.annotation.DictCodeField;
import com.casic.missiles.constants.MeterDictCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * <p>
 * 分包方
 * </p>
 *
 * @author wangpeng
 * @since 2023-03-23
 */
@ColumnWidth(30)
@HeadRowHeight(15)
@ContentRowHeight(20)
@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
@ExcelIgnoreUnannotated
@ApiModel
@Data
@TableName("business_outsourcer_info")
public class BusinessOutsourcerInfo implements Serializable {

    private static final long serialVersionUID = 1L;

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

    /**
     * 分包方编号
     */
    @ExcelProperty("分包方编号")
    @ApiModelProperty(value = "分包方编号", dataType = "String")
    @TableField("outsourcer_no")
    private String outsourcerNo;

    /**
     * 分包方公司名字
     */
    @ExcelProperty("公司名称")
    @ApiModelProperty(value = "公司名称", dataType = "String", required = true)
    @NotBlank(message = "公司名称不能为空")
    @TableField("outsourcer_name")
    private String outsourcerName;

    /**
     * 分包方公司简称
     */
    @ExcelProperty("公司简称")
    @ApiModelProperty(value = "公司简称", dataType = "String")
    @TableField("outsourcer_brief_name")
    private String outsourcerBriefName;

    /**
     * 分包方公司规模-字典
     */
    @DictCodeField(message = "分包方公司规模不合法", cacheName = MeterDictCode.COMPANY_SCALE)
    @ApiModelProperty(value = "公司规模-字典code", dataType = "String")
    @NotBlank(message = "公司规模不能为空")
    @TableField("outsourcer_size")
    private String outsourcerSize;

    @ExcelProperty("公司规模")
    @ApiModelProperty(value = "公司规模-字典value", dataType = "String")
    @TableField(exist = false)
    private String outsourcerSizeName;

    /**
     * 业务规模-字典
     */
    @ApiModelProperty(value = "业务规模-字典code", dataType = "String")
    @DictCodeField(message = "业务规模不合法", cacheName = MeterDictCode.BUSINESS_SCALE)
    @NotBlank(message = "业务规模不能为空")
    @TableField("business_size")
    private String businessSize;

    @ExcelProperty("业务规模")
    @ApiModelProperty(value = "业务规模-字典value", dataType = "String")
    @TableField(exist = false)
    private String businessSizeName;

    /**
     * 履约评级-字典
     */
    @ApiModelProperty(value = "履约评级-字典code", dataType = "String")
    @DictCodeField(message = "履约评级不合法", cacheName = MeterDictCode.GRADE)
    @NotBlank(message = "履约评级不能为空")
    @TableField("grade")
    private String grade;

    @ExcelProperty("履约评级")
    @ApiModelProperty(value = "履约评级-字典value", dataType = "String")
    @TableField(exist = false)
    private String gradeName;

    /**
     * 整体评价-字典
     */
    @ApiModelProperty(value = "整体评价-字典code", dataType = "String")
    @DictCodeField(message = "整体评价不合法", cacheName = MeterDictCode.EVALUATION)
    @NotBlank(message = "整体评价不能为空")
    @TableField("evaluation")
    private String evaluation;

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

    /**
     * 业务内容
     */
    @ExcelProperty("业务内容")
    @ApiModelProperty(value = "业务内容", dataType = "String")
    @TableField("business_content")
    private String businessContent;

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

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

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

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

    /**
     * 邮编
     */
    @ExcelProperty("邮编")
    @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;

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

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

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

    /**
     * 公司地址-国家
     */
    @ApiModelProperty(value = "公司地址-国家编码", dataType = "String")
    @TableField("address_country")
    private String addressCountry;

    /**
     * 公司地址-省
     */
    @ApiModelProperty(value = "公司地址-省编码", dataType = "String")
    @TableField("address_province")
    private String addressProvince;

    /**
     * 公司地址-市
     */
    @ApiModelProperty(value = "公司地址-市编码", dataType = "String")
    @TableField("address_city")
    private String addressCity;

    /**
     * 公司地址-区
     */
    @ApiModelProperty(value = "公司地址-区编码", dataType = "String")
    @TableField("address_area")
    private String addressArea;

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

    /**
     * 公司地址-省
     */
    @ExcelProperty("公司地址-省")
    @ApiModelProperty(value = "公司地址-省", dataType = "String")
    @TableField("address_province_name")
    private String addressProvinceName;

    /**
     * 公司地址-市
     */
    @ExcelProperty("公司地址-市")
    @ApiModelProperty(value = "公司地址-市", dataType = "String")
    @TableField("address_city_name")
    private String addressCityName;

    /**
     * 公司地址-区
     */
    @ExcelProperty("公司地址-区")
    @ApiModelProperty(value = "公司地址-区", dataType = "String")
    @TableField("address_area_name")
    private String addressAreaName;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @ApiModelProperty(hidden = true)
    @TableField("create_user")
    private Long createUser;

    @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;


}
