package com.ruoyi.project.business.domain;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.ruoyi.project.business.domain.vo.lead.LeadRes;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
import org.springframework.data.annotation.Transient;

/**
 * 客户管理对象 tc_account
 * 
 * @author ruoyi
 * @date 2024-04-10
 */
@EqualsAndHashCode(callSuper = false)
@Data
public class TcAccount extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 客户ID */
    @TableId(type = IdType.AUTO)
    private Long accountId;

    /** 客户编号 */
    @Excel(name = "客户编号", i18nCode = "account.no", sort = 1)
    private String accountNo;

    /** 区域名称 */
    @Transient
    @Excel(name = "区域", i18nCode = "lead.area", sort = 2)
    private String areaName;

    /** 国家名称 */
    @Transient
    @Excel(name = "国家", i18nCode = "account.country", sort = 3)
    private String countryName;

    /** 城市 */
    @Excel(name = "城市", i18nCode = "project.city", sort = 4)
    private String city;

    @Transient
    @Excel(name = "客户级别", i18nCode = "account.level", sort = 5)
    private String levelName;

    @Transient
    @Excel(name = "负责人", i18nCode = "business.owner", sort = 6)
    private String ownerName;


    @Transient
    @Excel(name = "所属代理商", i18nCode = "business.ownerAgent", sort = 7)
    private String ownerAgentName;

    /** 公司名称 */
    @Excel(name = "公司名称", i18nCode = "lead.company", sort = 8)
    private String accountName;
    
    @Transient
    @Excel(name = "公司类型", i18nCode = "company.type", sort = 9)
    private String companyTypeName;

    @Transient
    @Excel(name = "状态", i18nCode = "account.status", sort = 10)
    private String statusName;

    /** 最新跟进结果 */
    @Transient
    @Excel(name = "最新跟进结果", i18nCode = "account.followDesc", sort = 11)
    private String followDesc;

    /** 最新跟进时间 */
    @Transient
    @Excel(name = "最新跟进时间", i18nCode = "account.followTime", dateFormat= "yyyy-MM-dd", sort = 12)
    private Date followTime;

    /** 跟进人 */
    @Transient
    @Excel(name = "跟进人", i18nCode = "account.followPerson", sort = 13)
    private String followPerson;

    @Transient
    @Excel(name = "产品意向", i18nCode = "account.intentionalProduct", sort = 14)
    private String intentionalProductName;

    @Excel(name = "项目类型", i18nCode = "project.type", sort = 15)
    private String segmentName;
    
    /** 国家 */
    private Long countryId;



    /** 地区（可输入） */
    private String area;

    /** 区域 */
    private Long areaId;



    /** 来源（关联字典表） */
    private String origin;

    /** 联系电话 */
    private String phone;

    /** 邮箱 */
    private String email;

    /** 地址 */
    private String address;

    /** 行业 */
    private String sector;

    /** 注册资本 */
    private String registeredCapital;

    /** 客户级别（关联字典表） */
    private String level;

 
    /** 成立日期 */
    private Date startTime;

    /** 负责人 */
    private Long owner;

  

    /** 客户所有代理商 */
    private Long ownerAgent;


    /** 状态（关联字典表，活跃、暂无意向） */
    private String status;

 

    /** 客户类型（0：终端客户 1 代理商） */
    private String type;

    @Transient
    // @Excel(name = "客户类型", i18nCode = "account.type", sort = 4)
    private String typeName;

    /** 公司类型 新增 */
    private String companyType;


    /** 公司介绍 */
    private String accountDesc;

    /** 成单状态 0：已成单  1：未成单 */
    private String orderStatus;

    /** 所属集团 */
    private String accountGroup;

    /** 产品意向（关联字典表） 新增 */
    private String intentionalProduct;



    /** 项目类型（关联字典表） 新增 */
    private String segment;



    /** 公司网址 新增 */
    private String companyWebsite;

    /** 公司背景 新增 */
    private String background;

    /** 首次合作年份 新增 */
    private Date beginYear;

    /** 数据权限字符 */
    private String permissionChar;

    /** 删除标记（0：启用  1：停用） */
    @TableLogic
    private String delFlag;

    /** 附件地址拼接字符串 */
    @Transient
    private String file;



    /** 附件集合 */
    @Transient
    private List<TbFile> fileList;

    /** 合并客户集合 */
    @Transient
    private List<TcAccount> accounts;

    /** 相关联系人集合 */
    @Transient
    private List<TcAccountContact> contactList = new ArrayList<>();

    /** 相关线索ids */
    @Transient
    private List<Long> leadIds;

    @Transient
    private String language;
    
    @Transient
    private List<Date> dateRange;

    @Transient
    private String agentName;

    // 远程检索key
    @Transient
    private String query;

    @Transient
    private Long loginId;

    // 编辑时回显已绑定的线索
    @Transient
    private List<LeadRes> leadList;
    
    // 创建人的 所属 id
    private Long deptId;

    @TableField(exist = false)
    private String modifyRemark;



}
