package com.ruoyi.project.business.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.data.annotation.Transient;

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

/**
 * 客户（组织）履历对象 tc_account_history
 *
 * @author ruoyi
 * @date 2024-04-23
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tc_account_history")
public class TcAccountHistory extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 版本ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 客户ID
     */
    @Excel(name = "客户ID")
    private Long accountId;

    /**
     * 客户编号
     */
    @Excel(name = "客户编号")
    private String accountNo;

    /**
     * 公司名称
     */
    @Excel(name = "公司名称")
    private String accountName;

    /**
     * 国家
     */
    @Excel(name = "国家")
    private Long countryId;

    /**
     * 地区（可输入）
     */
    @Excel(name = "地区", readConverterExp = "可=输入")
    private String area;

    /**
     * 区域
     */
    private Long areaId;

    /**
     * 来源（关联字典表）
     */
    @Excel(name = "来源", readConverterExp = "关=联字典表")
    private String origin;

    /**
     * 联系电话
     */
    @Excel(name = "联系电话")
    private String phone;

    /**
     * 邮箱
     */
    @Excel(name = "邮箱")
    private String email;

    /**
     * 地址
     */
    @Excel(name = "地址")
    private String address;

    /**
     * 行业
     */
    @Excel(name = "行业")
    private String sector;

    /**
     * 注册资本
     */
    @Excel(name = "注册资本")
    private String registeredCapital;

    /**
     * 客户级别（关联字典表）
     */
    @Excel(name = "客户级别", readConverterExp = "关=联字典表")
    private String level;

    /**
     * 成立日期
     */
//    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "成立日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /**
     * 客户所有人
     */
    @Excel(name = "客户所有人")
    private Long owner;

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

    /**
     * 状态（关联字典表，活跃、暂无意向）
     */
    @Excel(name = "状态", readConverterExp = "关=联字典表，活跃、暂无意向")
    private String status;

    /**
     * 客户类型（0：终端客户 1 代理商）
     */
    @Excel(name = "客户类型", readConverterExp = "0=：终端客户,1=,代=理商")
    private String type;

    /**
     * 公司介绍
     */
    @Excel(name = "公司介绍")
    private String accountDesc;

    /**
     * 成单状态 0：已成单  1：未成单
     */
    @Excel(name = "成单状态 0：已成单  1：未成单")
    private String orderStatus;

    /**
     * 所属集团
     */
    @Excel(name = "所属集团")
    private String accountGroup;

    /**
     * 版本号
     */
    @Excel(name = "版本号")
    private Long version;

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

    @Transient
    private String nickName;

    @Transient
    private List<TcAccountContactHistory> contactList;

    @Transient
    private List<TbFile> fileList;

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

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

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

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

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

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

    /**
     * @Author renzx
     * @Date 2024/8/1
     * @Description 城市
     **/
    private String city;

    private String modifyRemark;
    
    public static TcAccountHistory from (TcAccount tcAccount, Long version) {
        TcAccountHistory history = new TcAccountHistory();
        BeanUtils.copyProperties(tcAccount, history);
        history.setVersion(version);
        return history;
    }

}
