package com.inkasso.factoring.creditmanagement.entity;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.inkasso.adapter.bean.BaseBean;
import com.inkasso.factoring.file.entity.FileStorageDO;

import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 企业信息
 * </p>
 *
 * @author liutao
 * @since 2023-11-25
 */
@TableName("c_enterprise")
public class Enterprise extends BaseBean {

    private static final long serialVersionUID = 1L;

    /**
     * 公司名称
     */
    @NotBlank(message = "公司名称不能为空！")
    @TableField("corporate_name")
    private String corporateName;

    /**
     * 统一社会信用代码
     */
    @NotBlank(message = "统一社会信用代码不能为空！")
    @TableField("social_credit_code")
    private String socialCreditCode;

    /**
     * 法人代表
     */
    @NotBlank(message = "法人代表不能为空！")
    @TableField("legal_representative")
    private String legalRepresentative;

    /**
     * 大股东
     */
    @TableField("major_shareholders")
    private String majorShareholders;

    /**
     * 实控人
     */
    @TableField("controller")
    private String controller;

    /**
     * 成立日期
     */
    @NotBlank(message = "成立日期不能为空！")
    @TableField("start_sate")
    private Date startSate;

    /**
     * 注册资本
     */
    @TableField("registered_capital")
    private String registeredCapital;

    /**
     * 注册（登记）地址
     */
    @NotBlank(message = "注册（登记）地址不能为空！")
    @TableField("address")
    private String address;

    /**
     * 实际经营地址
     */
    @TableField("business_address")
    private String businessAddress;

    /**
     * sop综合风险排查信息表id  企业
     */
    @TableField("c_comprehensive_risk_investigation_id")
    private Long cComprehensiveRiskInvestigationId;

    /**
     * sop法人董监高风险扫描表id
     */
    @TableField("c_dongjiangao_risk_id")
    private Long cDongjiangaoRiskId;

    /**
     * sop实控人董监高风险扫描表id
     */
    @TableField("c_dongjiangao_risk_controller_id")
    private Long cDongjiangaoRiskControllerId;

    /**
     * sop大股东董监高风险扫描表id
     */
    @TableField("c_dongjiangao_risk_big_id")
    private Long cDongjiangaoRiskBigId;

    /**
     * 企业准入状态
     */
    @TableField("status")
    private String status;

    /**
     * 企业认证状态 0：未认证 1：已认证
     */
    @TableField("auth_status")
    private Boolean authStatus;

    /**
     * 企业认证短链接
     */
    @TableField("short_auth_url")
    private String shortAuthUrl;

    /**
     * 企业认证链接
     */
    @TableField("auth_url")
    private String authUrl;

    /**
     * 企业授权授权书签署状态 0：未签署 1：已签署
     */
    @TableField("certificate_sign_status")
    private Integer certificateSignStatus;

    /**
     * 授权书签署短链接
     */
    @TableField("certificate_short_sign_url")
    private String certificateShortSignUrl;

    /**
     * 授权书签署链接
     */
    @TableField("certificate_sign_url")
    private String certificateSignUrl;

    /**
     * 授权书合同编号
     */
    @TableField("certificate_contract_id")
    private String certificateContractId;

    /**
     * 企业在法大大上签署授权书的交易号
     */
    @TableField("certificate_transaction_id")
    private String certificateTransactionId;

    /**
     * 在法大大上的客户编号
     */
    @TableField("fdd_customer_id")
    private String fddCustomerId;

    /**
     * 企业授权自动签署状态 0：未认证 1：已认证
     */
    @TableField("auto_sign_status")
    private Integer autoSignStatus;

    /**
     * 自动签署短链接
     */
    @TableField("short_auto_sign_url")
    private String shortAutoSignUrl;

    /**
     * 自动签署链接
     */
    @TableField("auto_sign_url")
    private String autoSignUrl;

    /**
     * 税务局网址
     */
    @TableField(exist = false)
    private String taxBureauWebsite;

    public String getTaxBureauWebsite() {
        return taxBureauWebsite;
    }

    public void setTaxBureauWebsite(String taxBureauWebsite) {
        this.taxBureauWebsite = taxBureauWebsite;
    }

    @TableField(exist = false)
    private List<CreditInvestigationInfo> creditInvestigationInfoList;
    @TableField(exist = false)
    private List<CorporateFinance> corporateFinances;
    @TableField(exist = false)
    private List<UpstreamProcurementDocuments> upstreamProcurementDocuments;
    @TableField(exist = false)
    private List<SalesDocumentsInfo> salesDocumentsInfos;
    @TableField(exist = false)
    private List<AssociatedEnterpriseInfo> associatedEnterpriseInfos;

    @TableField(exist = false)
    private List<FileStorageDO> locationMap;
    @TableField(exist = false)
    private List<FileStorageDO> rentalContract;
    @TableField(exist = false)
    private List<FileStorageDO> waterElectricityFees;
    @TableField(exist = false)
    private List<FileStorageDO> officeEnvironment;
    @TableField(exist = false)
    private List<FileStorageDO> businessLicense;
    @TableField(exist = false)
    private List<FileStorageDO> basicAccountInformation;
    @TableField(exist = false)
    private List<FileStorageDO> articlesAssociation;
    @TableField(exist = false)
    private List<FileStorageDO> judgment;
    @TableField(exist = false)
    private List<FileStorageDO> taxReturn;
    @TableField(exist = false)
    private List<FileStorageDO> accountingreport ;

    @TableField(exist = false)
    private List<Long> locationMapIds;
    @TableField(exist = false)
    private List<Long> rentalContractIds;
    @TableField(exist = false)
    private List<Long> waterElectricityFeesIds;
    @TableField(exist = false)
    private List<Long> officeEnvironmentIds;
    @TableField(exist = false)
    private List<Long> businessLicenseIds;
    @TableField(exist = false)
    private List<Long> basicAccountInformationIds;
    @TableField(exist = false)
    private List<Long> articlesAssociationIds;
    @TableField(exist = false)
    private List<Long> judgmentIds;
    @TableField(exist = false)
    private List<Long> taxReturnIds;
    @TableField(exist = false)
    private List<Long> accountingreportIds;

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

    private Integer sxCountBig;
    @TableField(exist = false)

    private Integer zxCountBig;
    @TableField(exist = false)
    private Integer stCountBig;
    @TableField(exist = false)
    private List<String> errors;

    public String getCertificateTransactionId() {
        return certificateTransactionId;
    }

    public void setCertificateTransactionId(String certificateTransactionId) {
        this.certificateTransactionId = certificateTransactionId;
    }

    public List<String> getErrors() {
        return errors;
    }

    public void setErrors(List<String> errors) {
        this.errors = errors;
    }

    public Integer getSxCountBig() {
        return sxCountBig;
    }

    public void setSxCountBig(Integer sxCountBig) {
        this.sxCountBig = sxCountBig;
    }

    public Integer getZxCountBig() {
        return zxCountBig;
    }

    public void setZxCountBig(Integer zxCountBig) {
        this.zxCountBig = zxCountBig;
    }

    public Integer getStCountBig() {
        return stCountBig;
    }

    public void setStCountBig(Integer stCountBig) {
        this.stCountBig = stCountBig;
    }

    public List<Long> getAllFileIds() {
        return allFileIds;
    }

    public void setAllFileIds(List<Long> allFileIds) {
        this.allFileIds = allFileIds;
    }

    public List<Long> getLocationMapIds() {
        return locationMapIds;
    }

    public void setLocationMapIds(List<Long> locationMapIds) {
        this.locationMapIds = locationMapIds;
    }

    public List<Long> getRentalContractIds() {
        return rentalContractIds;
    }

    public void setRentalContractIds(List<Long> rentalContractIds) {
        this.rentalContractIds = rentalContractIds;
    }

    public List<Long> getWaterElectricityFeesIds() {
        return waterElectricityFeesIds;
    }

    public void setWaterElectricityFeesIds(List<Long> waterElectricityFeesIds) {
        this.waterElectricityFeesIds = waterElectricityFeesIds;
    }

    public List<Long> getOfficeEnvironmentIds() {
        return officeEnvironmentIds;
    }

    public void setOfficeEnvironmentIds(List<Long> officeEnvironmentIds) {
        this.officeEnvironmentIds = officeEnvironmentIds;
    }

    public List<Long> getBusinessLicenseIds() {
        return businessLicenseIds;
    }

    public void setBusinessLicenseIds(List<Long> businessLicenseIds) {
        this.businessLicenseIds = businessLicenseIds;
    }

    public List<Long> getBasicAccountInformationIds() {
        return basicAccountInformationIds;
    }

    public void setBasicAccountInformationIds(List<Long> basicAccountInformationIds) {
        this.basicAccountInformationIds = basicAccountInformationIds;
    }

    public List<Long> getArticlesAssociationIds() {
        return articlesAssociationIds;
    }

    public void setArticlesAssociationIds(List<Long> articlesAssociationIds) {
        this.articlesAssociationIds = articlesAssociationIds;
    }

    public List<Long> getJudgmentIds() {
        return judgmentIds;
    }

    public void setJudgmentIds(List<Long> judgmentIds) {
        this.judgmentIds = judgmentIds;
    }

    public List<Long> getTaxReturnIds() {
        return taxReturnIds;
    }

    public void setTaxReturnIds(List<Long> taxReturnIds) {
        this.taxReturnIds = taxReturnIds;
    }

    public List<Long> getAccountingreportIds() {
        return accountingreportIds;
    }

    public void setAccountingreportIds(List<Long> accountingreportIds) {
        this.accountingreportIds = accountingreportIds;
    }

    public String getController() {
        return controller;
    }

    public void setController(String controller) {
        this.controller = controller;
    }

    public Long getcDongjiangaoRiskControllerId() {
        return cDongjiangaoRiskControllerId;
    }

    public void setcDongjiangaoRiskControllerId(Long cDongjiangaoRiskControllerId) {
        this.cDongjiangaoRiskControllerId = cDongjiangaoRiskControllerId;
    }

    public String getCertificateContractId() {
        return certificateContractId;
    }

    public void setCertificateContractId(String certificateContractId) {
        this.certificateContractId = certificateContractId;
    }

    public Integer getAutoSignStatus() {
        return autoSignStatus;
    }

    public void setAutoSignStatus(Integer autoSignStatus) {
        this.autoSignStatus = autoSignStatus;
    }

    public String getShortAutoSignUrl() {
        return shortAutoSignUrl;
    }

    public void setShortAutoSignUrl(String shortAutoSignUrl) {
        this.shortAutoSignUrl = shortAutoSignUrl;
    }

    public String getAutoSignUrl() {
        return autoSignUrl;
    }

    public void setAutoSignUrl(String autoSignUrl) {
        this.autoSignUrl = autoSignUrl;
    }

    public String getAuthUrl() {
        return authUrl;
    }

    public void setAuthUrl(String authUrl) {
        this.authUrl = authUrl;
    }

    public String getCertificateSignUrl() {
        return certificateSignUrl;
    }

    public void setCertificateSignUrl(String certificateSignUrl) {
        this.certificateSignUrl = certificateSignUrl;
    }

    public String getFddCustomerId() {
        return fddCustomerId;
    }

    public void setFddCustomerId(String fddCustomerId) {
        this.fddCustomerId = fddCustomerId;
    }

    public List<AssociatedEnterpriseInfo> getAssociatedEnterpriseInfos() {
        return associatedEnterpriseInfos;
    }

    public void setAssociatedEnterpriseInfos(List<AssociatedEnterpriseInfo> associatedEnterpriseInfos) {
        this.associatedEnterpriseInfos = associatedEnterpriseInfos;
    }

    public List<SalesDocumentsInfo> getSalesDocumentsInfos() {
        return salesDocumentsInfos;
    }

    public void setSalesDocumentsInfos(List<SalesDocumentsInfo> salesDocumentsInfos) {
        this.salesDocumentsInfos = salesDocumentsInfos;
    }

    public List<UpstreamProcurementDocuments> getUpstreamProcurementDocuments() {
        return upstreamProcurementDocuments;
    }

    public void setUpstreamProcurementDocuments(List<UpstreamProcurementDocuments> upstreamProcurementDocuments) {
        this.upstreamProcurementDocuments = upstreamProcurementDocuments;
    }

    public List<FileStorageDO> getLocationMap() {
        return locationMap;
    }

    public void setLocationMap(List<FileStorageDO> locationMap) {
        this.locationMap = locationMap;
    }

    public List<FileStorageDO> getAccountingreport() {
        return accountingreport;
    }

    public void setAccountingreport(List<FileStorageDO> accountingreport) {
        this.accountingreport = accountingreport;
    }

    public List<FileStorageDO> getRentalContract() {
        return rentalContract;
    }

    public void setRentalContract(List<FileStorageDO> rentalContract) {
        this.rentalContract = rentalContract;
    }

    public List<FileStorageDO> getWaterElectricityFees() {
        return waterElectricityFees;
    }

    public void setWaterElectricityFees(List<FileStorageDO> waterElectricityFees) {
        this.waterElectricityFees = waterElectricityFees;
    }

    public List<FileStorageDO> getOfficeEnvironment() {
        return officeEnvironment;
    }

    public void setOfficeEnvironment(List<FileStorageDO> officeEnvironment) {
        this.officeEnvironment = officeEnvironment;
    }

    public List<FileStorageDO> getBusinessLicense() {
        return businessLicense;
    }

    public void setBusinessLicense(List<FileStorageDO> businessLicense) {
        this.businessLicense = businessLicense;
    }

    public List<FileStorageDO> getBasicAccountInformation() {
        return basicAccountInformation;
    }

    public void setBasicAccountInformation(List<FileStorageDO> basicAccountInformation) {
        this.basicAccountInformation = basicAccountInformation;
    }

    public List<FileStorageDO> getArticlesAssociation() {
        return articlesAssociation;
    }

    public void setArticlesAssociation(List<FileStorageDO> articlesAssociation) {
        this.articlesAssociation = articlesAssociation;
    }

    public List<FileStorageDO> getJudgment() {
        return judgment;
    }

    public void setJudgment(List<FileStorageDO> judgment) {
        this.judgment = judgment;
    }

    public List<FileStorageDO> getTaxReturn() {
        return taxReturn;
    }

    public void setTaxReturn(List<FileStorageDO> taxReturn) {
        this.taxReturn = taxReturn;
    }

    public List<CorporateFinance> getCorporateFinances() {
        return corporateFinances;
    }

    public void setCorporateFinances(List<CorporateFinance> corporateFinances) {
        this.corporateFinances = corporateFinances;
    }

    public List<CreditInvestigationInfo> getCreditInvestigationInfoList() {
        return creditInvestigationInfoList;
    }

    public void setCreditInvestigationInfoList(List<CreditInvestigationInfo> creditInvestigationInfoList) {
        this.creditInvestigationInfoList = creditInvestigationInfoList;
    }

    public Boolean getAuthStatus() {
        return authStatus;
    }

    public void setAuthStatus(Boolean authStatus) {
        this.authStatus = authStatus;
    }

    public String getShortAuthUrl() {
        return shortAuthUrl;
    }

    public void setShortAuthUrl(String shortAuthUrl) {
        this.shortAuthUrl = shortAuthUrl;
    }

    public Integer getCertificateSignStatus() {
        return certificateSignStatus;
    }

    public void setCertificateSignStatus(Integer certificateSignStatus) {
        this.certificateSignStatus = certificateSignStatus;
    }

    public String getCertificateShortSignUrl() {
        return certificateShortSignUrl;
    }

    public void setCertificateShortSignUrl(String certificateShortSignUrl) {
        this.certificateShortSignUrl = certificateShortSignUrl;
    }

    public Enterprise(JSONObject jsonObject) {
        this.corporateName = jsonObject.getStr("Name");
        this.socialCreditCode = jsonObject.getStr("CreditCode");
        this.startSate = jsonObject.getDate("StartDate");
        this.legalRepresentative = jsonObject.getStr("OperName");
        this.address = jsonObject.getStr("Address");
    }

    public Enterprise() {
    }

    public String getMajorShareholders() {
        return majorShareholders;
    }

    public void setMajorShareholders(String majorShareholders) {
        this.majorShareholders = majorShareholders;
    }

    public String getCorporateName() {
        return corporateName;
    }

    public void setCorporateName(String corporateName) {
        this.corporateName = corporateName;
    }
    public String getSocialCreditCode() {
        return socialCreditCode;
    }

    public void setSocialCreditCode(String socialCreditCode) {
        this.socialCreditCode = socialCreditCode;
    }
    public String getLegalRepresentative() {
        return legalRepresentative;
    }

    public void setLegalRepresentative(String legalRepresentative) {
        this.legalRepresentative = legalRepresentative;
    }
    public Date getStartSate() {
        return startSate;
    }

    public void setStartSate(Date startSate) {
        this.startSate = startSate;
    }
    public String getRegisteredCapital() {
        return registeredCapital;
    }

    public void setRegisteredCapital(String registeredCapital) {
        this.registeredCapital = registeredCapital;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
    public String getBusinessAddress() {
        return businessAddress;
    }

    public void setBusinessAddress(String businessAddress) {
        this.businessAddress = businessAddress;
    }
    public Long getcComprehensiveRiskInvestigationId() {
        return cComprehensiveRiskInvestigationId;
    }

    public void setcComprehensiveRiskInvestigationId(Long cComprehensiveRiskInvestigationId) {
        this.cComprehensiveRiskInvestigationId = cComprehensiveRiskInvestigationId;
    }
    public Long getcDongjiangaoRiskId() {
        return cDongjiangaoRiskId;
    }

    public void setcDongjiangaoRiskId(Long cDongjiangaoRiskId) {
        this.cDongjiangaoRiskId = cDongjiangaoRiskId;
    }
    public Long getcDongjiangaoRiskBigId() {
        return cDongjiangaoRiskBigId;
    }

    public void setcDongjiangaoRiskBigId(Long cDongjiangaoRiskBigId) {
        this.cDongjiangaoRiskBigId = cDongjiangaoRiskBigId;
    }
    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}
