package com.ruoyi.project.business.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

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

@Data
@TableName("tb_agent_history")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class TbAgentHistory extends BaseEntity{
    private static final long serialVersionUID = 1L;

    /** 代理商ID */
    @Excel(name = "代理商ID")
    private Long agentId;

    /** $column.columnComment */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 1代理商编号 */
    @Excel(name = "代理商编号",i18nCode = "agent.agentNo")
    private String agentNo;

    /** 2代理商名称 */
    @Excel(name = "代理商名称",i18nCode = "agent.agentName")
    private String agentName;

    /** 所属区域 */
    //@Excel(name = "所属区域")
    private Long areaId;

    /** 所在国家-多选-[,]分割 */
    //@Excel(name = "所在国家-多选-[,]分割")
    private String countryId;

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

    /** 代理商类型（关联字典表） */
    //@Excel(name = "代理商类型", readConverterExp = "关=联字典表")
    private String agentType;

    /** 是否签约(0:false,1:true) */
    //@Excel(name = "是否签约(0:false,1:true)")
    private Integer hasContract;

    /** 上级代理，没有则为0 */
    //@Excel(name = "上级代理，没有则为0")
    private Long parentAgentId;

    /** 上级销售ID userId */
    //@Excel(name = "上级销售ID userId")
    private Long parentSalerId;

    /** 代理商等级（关联字典表） */
    //@Excel(name = "代理商等级", readConverterExp = "关=联字典表")
    private String agentLevel;

    /** 折扣率 */
    //@Excel(name = "折扣率")
    private BigDecimal discount;

    /** 负责人名称 */
    //@Excel(name = "负责人名称")
    private String head;

    /** 联系方式 */
    //@Excel(name = "联系方式")
    private String phone;

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

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

    /** 状态（0：启用  1：停用） */
    //@Excel(name = "状态", readConverterExp = "0=：启用,1=：停用")
    private String status;

    /** 数据权限字符 */
    //@Excel(name = "数据权限字符")
    private String permissionChar;

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

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

    /** 首次合作年份 */
    //@Excel(name = "首次合作年份")
    private String firstCooperationYear;

    /** 协议生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    //@Excel(name = "协议生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date protocolStartDate;

    /** 协议失效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    //@Excel(name = "协议失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date protocolEndDate;

    /** 授权区域 */
    //@Excel(name = "授权区域")
    private String authorizedArea;


    /**
     * 父级名称
     */
    //@Excel(name = "上级代理", i18nCode = "agent.parentAgent")
    @TableField(exist = false)
    private String parentAgentName;

    /**
     * 上级销售名称
     */
    //@Excel(name = "上级销售", i18nCode = "agent.parentSaler")
    @TableField(exist = false)
    private String parentSalerName;

    /**
     * 地区name
     */
    @Excel(name = "所属区域", i18nCode = "agent.areaId")
    @TableField(exist = false)
    private String areaName;

    @TableField(exist = false)
    private String curUserPermissionChar;


    /**
     * 协议生效日期:列表检索开始
     */
    @TableField(exist = false)
    private Date protocolSsDate;
    /**
     * 协议生效日期:列表检索结束
     */
    @TableField(exist = false)
    private Date protocolSeDate;
    /**
     * 协议失效日期:列表检索开始
     */
    @TableField(exist = false)
    private Date protocolEsDate;
    /**
     * 协议失效日期:列表检索结束
     */
    @TableField(exist = false)
    private Date protocolEeDate;

    @TableField(exist = false)
    private List<String> agentIds;

    /**
     * 多选代理商等级
     */
    @TableField(exist = false)
    private List<String> agentLevels;

    @TableField(exist = false)
    private List<String> origins;

    /**
     * 多选区域
     */
    @TableField(exist = false)
    private List<String> areaIds;
    /**
     * 修改者
     */
    @Excel(name = "修改者", i18nCode = "agent.parentAgent")
    @TableField(exist = false)
    private String createName;

    /**
     * 修改时间
     */
    @Excel(name = "修改时间", i18nCode = "agent.parentAgent")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}
