package cn.ezhizao.project.business.company.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
import cn.ezhizao.framework.web.domain.BaseEntity;
import lombok.Data;
import io.swagger.annotations.ApiModelProperty;
import cn.ezhizao.framework.aspectj.lang.annotation.Excel;

/**
 * company对象 biz_company
 *
 * @author ezhizao
 * @date 2023-10-17
 */
@Data
@TableName(value = "biz_company")
public class BizCompany extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 合作伙伴分类：1、客户；2、供应商；3、外协商
     */
    @Excel(name = "合作伙伴分类：1、客户；2、供应商；3、外协商")
    @ApiModelProperty(value = "合作伙伴分类：1、客户；2、供应商；3、外协商")
    private String category;

    /**
     * 客户编码
     */
    @Excel(name = "客户编码")
    @ApiModelProperty(value = "客户编码")
    private String code;

    /**
     * 客户名称
     */
    @Excel(name = "客户名称")
    @ApiModelProperty(value = "客户名称")
    private String name;

    /**
     * 客户简称
     */
    @Excel(name = "客户简称")
    @ApiModelProperty(value = "客户简称")
    private String shortName;

    /**
     * 曾用名
     */
    @Excel(name = "曾用名")
    @ApiModelProperty(value = "曾用名")
    private String oldName;

    /**
     * 所有权人
     */
    @Excel(name = "所有权人")
    @ApiModelProperty(value = "所有权人")
    private String owner;

    /**
     * 所有权人ID外键（字典所有权人分类）
     */
    @ApiModelProperty(value = "所有权人")
    private Long ownerId;

    /**
     * 企业电话
     */
    @Excel(name = "企业电话")
    @ApiModelProperty(value = "企业电话")
    private String phone;

    /**
     * 企业邮箱
     */
    @Excel(name = "企业邮箱")
    @ApiModelProperty(value = "企业邮箱")
    private String email;

    /**
     * 联系地址
     */
    @Excel(name = "联系地址")
    @ApiModelProperty(value = "联系地址")
    private String contactAddress;

    /**
     * 客户阶段字典分类外键
     */
    @ApiModelProperty(value = "联系地址")
    private Long stageId;

    /**
     * 等级，对应的是数据字典外键
     */
    @ApiModelProperty(value = "联系地址")
    private Long companyLevelId;

    /**
     * 客户来源：与合同来源共用一个数据源
     */
    @ApiModelProperty(value = "联系地址")
    private Long sourceCategoryId;

    /**
     * 客户来源
     */
    @Excel(name = "客户来源")
    @ApiModelProperty(value = "客户来源")
    private String source;

    /**
     * 客户来源：
     */
    @ApiModelProperty(value = "客户来源")
    private Long sourceId;

    /**
     * 企业类型
     */
    @Excel(name = "企业类型")
    @ApiModelProperty(value = "企业类型")
    private String type;

    /**
     * 企业类型字典分类外键
     */
    @ApiModelProperty(value = "企业类型")
    private Long typeId;

    /**
     * 社会信用代码
     */
    @Excel(name = "社会信用代码")
    @ApiModelProperty(value = "社会信用代码")
    private String socialCreditCode;

    /**
     * 主营业务
     */
    @Excel(name = "主营业务")
    @ApiModelProperty(value = "主营业务")
    private String mainBusiness;

    /**
     * 主营行业字典分类外键
     */
    @ApiModelProperty(value = "主营业务")
    private Long mainBusinessId;

    /**
     * 法定代表人
     */
    @Excel(name = "法定代表人")
    @ApiModelProperty(value = "法定代表人")
    private String legalRepresentative;

    /**
     * 成立日期
     */
    @Excel(name = "成立日期")
    @ApiModelProperty(value = "成立日期")
    private String foundationDate;

    /**
     * 出执照日期
     */
    @Excel(name = "出执照日期")
    @ApiModelProperty(value = "出执照日期")
    private String licenceDate;

    /**
     * 营业开始时间
     */
    @Excel(name = "营业开始时间")
    @ApiModelProperty(value = "营业开始时间")
    private String businessStartDate;

    /**
     * 营业结束时间
     */
    @Excel(name = "营业结束时间")
    @ApiModelProperty(value = "营业结束时间")
    private String businessEndDate;

    /**
     * 长期有效否
     */
    @Excel(name = "长期有效否")
    @ApiModelProperty(value = "长期有效否")
    private Integer isPermanentlyEffective;

    /**
     * 注册资金
     */
    @Excel(name = "注册资金")
    @ApiModelProperty(value = "注册资金")
    private String registerMoney;

    /**
     * 注册资金单位
     */
    @Excel(name = "注册资金单位")
    @ApiModelProperty(value = "注册资金单位")
    private String registerMoneyUnit;

    /**
     * 注册资金数据字典id
     */
    @ApiModelProperty(value = "注册资金单位")
    private Long registerMoneyUnitId;

    /**
     * 注册省份编码
     */
    @Excel(name = "注册省份编码")
    @ApiModelProperty(value = "注册省份编码")
    private String provinceCode;

    /**
     * 省
     */
    @Excel(name = "省")
    @ApiModelProperty(value = "省")
    private String province;

    /**
     * 注册城市编码
     */
    @Excel(name = "注册城市编码")
    @ApiModelProperty(value = "注册城市编码")
    private String cityCode;

    /**
     * 市
     */
    @Excel(name = "市")
    @ApiModelProperty(value = "市")
    private String city;

    /**
     * 注册行政区编码
     */
    @Excel(name = "注册行政区编码")
    @ApiModelProperty(value = "注册行政区编码")
    private String districtCode;

    /**
     * 区
     */
    @Excel(name = "区")
    @ApiModelProperty(value = "区")
    private String district;

    /**
     * 注册详细地址
     */
    @Excel(name = "注册详细地址")
    @ApiModelProperty(value = "注册详细地址")
    private String address;

    /**
     * 经营范围
     */
    @Excel(name = "经营范围")
    @ApiModelProperty(value = "经营范围")
    private String businessField;

    /**
     * 纳税类型
     */
    @Excel(name = "纳税类型")
    @ApiModelProperty(value = "纳税类型")
    private String taxType;

    /**
     * 纳税类型字典分类ID外键
     */
    @ApiModelProperty(value = "纳税类型")
    private Long taxTypeId;

    /**
     * 报税类别ID外键字典
     */
    @ApiModelProperty(value = "纳税类型")
    private Long taxDeclarationCategoryId;

    /**
     * 是否零申报
     */
    @Excel(name = "是否零申报")
    @ApiModelProperty(value = "是否零申报")
    private Integer isZero;

    /**
     * 税盘ID外键字典
     */
    @ApiModelProperty(value = "是否零申报")
    private Long taxDishId;

    /**
     * 主管税务机关
     */
    @Excel(name = "主管税务机关")
    @ApiModelProperty(value = "主管税务机关")
    private String competentTaxAuthority;

    /**
     * 税务专管员
     */
    @Excel(name = "税务专管员")
    @ApiModelProperty(value = "税务专管员")
    private String taxCollectorName;

    /**
     * 专管员电话
     */
    @Excel(name = "专管员电话")
    @ApiModelProperty(value = "专管员电话")
    private String taxCollectorPhone;

    /**
     * 核税月份
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "核税月份", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "核税月份")
    private Date taxMonth;

    /**
     * 开户行
     */
    @Excel(name = "开户行")
    @ApiModelProperty(value = "开户行")
    private String openingBank;

    /**
     * 银行账户
     */
    @Excel(name = "银行账户")
    @ApiModelProperty(value = "银行账户")
    private String bankAccount;

    /**
     * 账套外键
     */
    @ApiModelProperty(value = "银行账户")
    private Long accountSetsId;

    /**
     * 主程序账套外键
     */
    @ApiModelProperty(value = "银行账户")
    @TableField(exist = false)
    private Long mainAccountSetsId;

    /**
     * 年收入
     */
    @Excel(name = "年收入")
    @ApiModelProperty(value = "年收入")
    private String annualIncome;

    /**
     * 政务网账号
     */
    @Excel(name = "政务网账号")
    @ApiModelProperty(value = "政务网账号")
    private String governmentAccountNo;

    /**
     * 政务网密码
     */
    @Excel(name = "政务网密码")
    @ApiModelProperty(value = "政务网密码")
    private String governmentPassword;

    /**
     * 社保账号
     */
    @Excel(name = "社保账号")
    @ApiModelProperty(value = "社保账号")
    private String socialSecurityAccountNo;

    /**
     * 社保密码
     */
    @Excel(name = "社保密码")
    @ApiModelProperty(value = "社保密码")
    private String socialSecurityPassword;

    /**
     * 用工密码
     */
    @Excel(name = "用工密码")
    @ApiModelProperty(value = "用工密码")
    private String employeePassword;

    /**
     * 公积金密码
     */
    @Excel(name = "公积金密码")
    @ApiModelProperty(value = "公积金密码")
    private String housingFundPassword;

    /**
     * 公积金单位账号
     */
    @Excel(name = "公积金单位账号")
    @ApiModelProperty(value = "公积金单位账号")
    private String housingFundUnitAccount;

    /**
     * 公积金划款密码
     */
    @Excel(name = "公积金划款密码")
    @ApiModelProperty(value = "公积金划款密码")
    private String housingFundDeductionPassword;

    /**
     * 征收方式
     */
    @Excel(name = "征收方式")
    @ApiModelProperty(value = "征收方式")
    private String collectionMethod;

    /**
     * 定额金额
     */
    @Excel(name = "定额金额")
    @ApiModelProperty(value = "定额金额")
    private BigDecimal quotaAmount;

    /**
     * 窗口现金交
     */
    @Excel(name = "窗口现金交")
    @ApiModelProperty(value = "窗口现金交")
    private Integer isPayOnWindow;

    /**
     * 初次社保信息保存
     */
    @Excel(name = "初次社保信息保存")
    @ApiModelProperty(value = "初次社保信息保存")
    private Integer isFirstSocialSecurity;

    /**
     * 初次公积金信息保存
     */
    @Excel(name = "初次公积金信息保存")
    @ApiModelProperty(value = "初次公积金信息保存")
    private Integer isFirstHousingFund;

    @ApiModelProperty(value = "租户id")
    private Long tenantId;
    @TableField(exist = false)
    private List<Long> ids;

    @TableField(exist = false)
    private String principal;
}
