package com.uas.finance.model;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 客户基础信息表
 * created by shicr on 2017/12/18
 **/
@Table
@Entity(name = "customer")

public class CustomerInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "cu_id")
    private Long id;

    /**
     * 公司中文名
     */
    @Column(name = "cu_name")
    private String cu_name;

    /**
     * 公司英文名
     */
    @Column(name = "cu_engname")
    private String cu_engname;

    /**
     * 公司类型
     */
    @Column(name = "cu_enterptype")
    private String cu_enterptype;

    /**
     * 成立时间
     */
    @Column(name = "cu_licensedate")
    private Date cu_licensedate;

    /**
     * 证件类型
     */
    @Column(name = "cu_paperstype")
    private String cu_paperstype;

    /**
     * 机构类型
     */
    @Column(name = "cu_institutype")
    private String cu_institutype;

    /**
     * 证件号码
     */
    @Column(name = "cu_paperscode")
    private String cu_paperscode;

    /**
     * 证件到期日
     */
    @Column(name = "cu_ctfduedate")
    private Date cu_ctfduedate;

    /**
     * 营业执照号
     */
    @Column(name = "cu_businesscode")
    private String cu_businesscode;

    /**
     * 国标行业分类
     */
    @Column(name = "cu_nastdinducls")
    private String cu_nastdinducls;

    /**
     * 注册资本币种
     */
    @Column(name = "cu_capcurrency")
    private String cu_capcurrency;

    /**
     * 注册资本
     */
    @Column(name = "cu_regcapital")
    private Double cu_regcapital;

    /**
     * 实缴资本
     */
    @Column(name = "cu_paidincapital")
    private Double cu_paidincapital;
    /**
     * 公司注册地
     */
    @Column(name = "cu_regadd")
    private String cu_regadd;
    /**
     * 办公地址
     */
    @Column(name = "cu_officeadd")
    private String cu_officeadd;

    /**
     * 经营范围
     */
    @Column(name = "cu_businsscope")
    private String cu_businsscope;

    /**
     * 其他情况说明
     */
    @Column(name = "cu_others")
    private String cu_others;

    /**
     * 企业uu
     *
     * @return
     */
    @Column(name = "cu_enuu")
    private Long enuu;

    /**
     * 最高权力机构
     *
     * @return
     */
    @Column(name = "cu_highestauthority")
    private String cu_highestauthority;

    /**
     * 员工人数
     *
     * @return
     */
    @Column(name = "cu_employeesnum")
    private Long cu_employeesnum;

    /**
     * 部门设置概况
     *
     * @return
     */
    @Column(name = "cu_departsituation")
    private String cu_departsituation;

    /**
     * erp下载状态
     */
    @Column(name = "cu_erpstatus")
    private Integer erpstatus;

    /**
     * 修改时间
     */
    @Column(name = "cu_submittime")
    private Date submitTime;

    /**
     * ERP系统中的主键id
     */
    @Column(name = "erpId")
    private Long erpId;

    /**
     * 财务数据表
     */
    @OneToMany(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    private List<AccountInfo> accountInfoList;

    /**
     * 关联企业
     */
    @OneToMany(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    private List<AssociateCompany> associateCompanies;

    /**
     * 情况描述
     */
    @OneToOne(mappedBy = "customerInfo", cascade = CascadeType.MERGE)
    private BusinessCondition businessCondition;

    /**
     * 变更内容
     */
    @OneToMany(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    private List<ChangesInstruction> changesInstructions;

    /**
     * 管理层背景
     */
    @OneToMany(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    private List<CustomerExcutive> customerExcutives;

    /**
     * 经营情况描述
     */
    @OneToOne(mappedBy = "customerInfo", cascade = CascadeType.MERGE)
    private FinanceCondition financeCondition;

    @JSONField(serialize = false)
    @OneToOne(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    private FinancingApply financingApply;

    @OneToMany(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    private List<MFCustInfo> mfCustInfos;

    /**
     * 经营情况表
     */
    @OneToMany(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    private List<ProductMix> productMixes;

    /**
     * 股东构成
     */
    @OneToMany(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    private List<Shareholders> shareholders;

    /**
     * 供应商客户
     */
    @OneToMany(mappedBy = "customerInfo", cascade = CascadeType.REFRESH)
    @OrderBy("id")
    private List<Updowncast> updowncasts;

    public Long getErpId() {
        return erpId;
    }

    public void setErpId(Long erpId) {
        this.erpId = erpId;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCu_name() {
        return cu_name;
    }

    public void setCu_name(String cu_name) {
        this.cu_name = cu_name;
    }

    public String getCu_engname() {
        return cu_engname;
    }

    public void setCu_engname(String cu_engname) {
        this.cu_engname = cu_engname;
    }

    public String getCu_paperstype() {
        return cu_paperstype;
    }

    public void setCu_paperstype(String cu_paperstype) {
        this.cu_paperstype = cu_paperstype;
    }

    public String getCu_institutype() {
        return cu_institutype;
    }

    public void setCu_institutype(String cu_institutype) {
        this.cu_institutype = cu_institutype;
    }

    public Date getCu_licensedate() {
        return cu_licensedate;
    }

    public void setCu_licensedate(Date cu_licensedate) {
        this.cu_licensedate = cu_licensedate;
    }

    public String getCu_paperscode() {
        return cu_paperscode;
    }

    public void setCu_paperscode(String cu_paperscode) {
        this.cu_paperscode = cu_paperscode;
    }

    public Date getCu_ctfduedate() {
        return cu_ctfduedate;
    }

    public void setCu_ctfduedate(Date cu_ctfduedate) {
        this.cu_ctfduedate = cu_ctfduedate;
    }

    public String getCu_businesscode() {
        return cu_businesscode;
    }

    public void setCu_businesscode(String cu_businesscode) {
        this.cu_businesscode = cu_businesscode;
    }

    public String getCu_nastdinducls() {
        return cu_nastdinducls;
    }

    public void setCu_nastdinducls(String cu_nastdinducls) {
        this.cu_nastdinducls = cu_nastdinducls;
    }

    public String getCu_capcurrency() {
        return cu_capcurrency;
    }

    public void setCu_capcurrency(String cu_capcurrency) {
        this.cu_capcurrency = cu_capcurrency;
    }

    public String getCu_enterptype() {
        return cu_enterptype;
    }

    public void setCu_enterptype(String cu_enterptype) {
        this.cu_enterptype = cu_enterptype;
    }

    public Double getCu_regcapital() {
        return cu_regcapital;
    }

    public void setCu_regcapital(Double cu_regcapital) {
        this.cu_regcapital = cu_regcapital;
    }

    public Double getCu_paidincapital() {
        return cu_paidincapital;
    }

    public void setCu_paidincapital(Double cu_paidincapital) {
        this.cu_paidincapital = cu_paidincapital;
    }

    public String getCu_regadd() {
        return cu_regadd;
    }

    public void setCu_regadd(String cu_regadd) {
        this.cu_regadd = cu_regadd;
    }

    public String getCu_officeadd() {
        return cu_officeadd;
    }

    public void setCu_officeadd(String cu_officeadd) {
        this.cu_officeadd = cu_officeadd;
    }

    public String getCu_businsscope() {
        return cu_businsscope;
    }

    public void setCu_businsscope(String cu_businsscope) {
        this.cu_businsscope = cu_businsscope;
    }

    public String getCu_others() {
        return cu_others;
    }

    public void setCu_others(String cu_others) {
        this.cu_others = cu_others;
    }

    public Long getEnuu() {
        return enuu;
    }

    public void setEnuu(Long enuu) {
        this.enuu = enuu;
    }

    public String getCu_highestauthority() {
        return cu_highestauthority;
    }

    public void setCu_highestauthority(String cu_highestauthority) {
        this.cu_highestauthority = cu_highestauthority;
    }

    public Long getCu_employeesnum() {
        return cu_employeesnum;
    }

    public void setCu_employeesnum(Long cu_employeesnum) {
        this.cu_employeesnum = cu_employeesnum;
    }

    public String getCu_departsituation() {
        return cu_departsituation;
    }

    public void setCu_departsituation(String cu_departsituation) {
        this.cu_departsituation = cu_departsituation;
    }

    public FinancingApply getFinancingApply() {
        return financingApply;
    }

    public void setFinancingApply(FinancingApply financingApply) {
        this.financingApply = financingApply;
    }

    public Integer getErpstatus() {
        return erpstatus;
    }

    public void setErpstatus(Integer erpstatus) {
        this.erpstatus = erpstatus;
    }

    public List<AccountInfo> getAccountInfoList() {
        return accountInfoList;
    }

    public void setAccountInfoList(List<AccountInfo> accountInfoList) {
        this.accountInfoList = accountInfoList;
    }

    public List<AssociateCompany> getAssociateCompanies() {
        return associateCompanies;
    }

    public void setAssociateCompanies(List<AssociateCompany> associateCompanies) {
        this.associateCompanies = associateCompanies;
    }

    public BusinessCondition getBusinessCondition() {
        return businessCondition;
    }

    public void setBusinessCondition(BusinessCondition businessCondition) {
        this.businessCondition = businessCondition;
    }

    public List<ChangesInstruction> getChangesInstructions() {
        return changesInstructions;
    }

    public void setChangesInstructions(List<ChangesInstruction> changesInstructions) {
        this.changesInstructions = changesInstructions;
    }

    public List<CustomerExcutive> getCustomerExcutives() {
        return customerExcutives;
    }

    public void setCustomerExcutives(List<CustomerExcutive> customerExcutives) {
        this.customerExcutives = customerExcutives;
    }

    public FinanceCondition getFinanceCondition() {
        return financeCondition;
    }

    public void setFinanceCondition(FinanceCondition financeCondition) {
        this.financeCondition = financeCondition;
    }

    /*  public FinancingApply getFinancingApply() {
        return financingApply;
    }

    public void setFinancingApply(FinancingApply financingApply) {
        this.financingApply = financingApply;
    }*/

    public List<MFCustInfo> getMfCustInfos() {
        return mfCustInfos;
    }

    public void setMfCustInfos(List<MFCustInfo> mfCustInfos) {
        this.mfCustInfos = mfCustInfos;
    }

    public List<ProductMix> getProductMixes() {
        return productMixes;
    }

    public void setProductMixes(List<ProductMix> productMixes) {
        this.productMixes = productMixes;
    }

    public List<Shareholders> getShareholders() {
        return shareholders;
    }

    public void setShareholders(List<Shareholders> shareholders) {
        this.shareholders = shareholders;
    }

    public List<Updowncast> getUpdowncasts() {
        return updowncasts;
    }

    public void setUpdowncasts(List<Updowncast> updowncasts) {
        this.updowncasts = updowncasts;
    }

    public Date getSubmitTime() {
        return submitTime;
    }

    public void setSubmitTime(Date submitTime) {
        this.submitTime = submitTime;
    }


    public CustomerInfo(CustomerInfo customerInfo) {
        this.cu_employeesnum = customerInfo.getCu_employeesnum();
        this.cu_name = customerInfo.getCu_name();
        this.cu_engname = customerInfo.getCu_engname();
        this.cu_enterptype = customerInfo.getCu_enterptype();
        this.cu_licensedate = customerInfo.getCu_licensedate();
        this.cu_paperstype = customerInfo.getCu_paperstype();
        this.cu_institutype = customerInfo.getCu_institutype();
        this.cu_paperscode = customerInfo.getCu_paperscode();
        this.cu_ctfduedate = customerInfo.getCu_ctfduedate();
        this.cu_businesscode = customerInfo.getCu_businesscode();
        this.cu_nastdinducls = customerInfo.getCu_nastdinducls();
        this.cu_capcurrency = customerInfo.getCu_capcurrency();
        this.cu_regcapital = customerInfo.getCu_regcapital();
        this.cu_paidincapital = customerInfo.getCu_paidincapital();
        this.cu_regadd = customerInfo.getCu_regadd();
        this.cu_officeadd = customerInfo.getCu_officeadd();
        this.cu_businsscope = customerInfo.getCu_businsscope();
        this.cu_others = customerInfo.getCu_others();
        this.enuu = customerInfo.getEnuu();
        this.cu_highestauthority = customerInfo.getCu_highestauthority();
        this.cu_departsituation = customerInfo.getCu_departsituation();
        this.erpstatus = customerInfo.getErpstatus();
        this.submitTime = customerInfo.getSubmitTime();
        this.accountInfoList = customerInfo.getAccountInfoList();
        this.associateCompanies = customerInfo.getAssociateCompanies();
        this.businessCondition = customerInfo.getBusinessCondition();
        this.changesInstructions = customerInfo.getChangesInstructions();
        this.customerExcutives = customerInfo.getCustomerExcutives();
        this.financeCondition = customerInfo.getFinanceCondition();
        this.mfCustInfos = customerInfo.getMfCustInfos();
        this.productMixes = customerInfo.getProductMixes();
        this.shareholders = customerInfo.getShareholders();
        this.updowncasts = customerInfo.getUpdowncasts();
    }
   public CustomerInfo(){

   }
}
