package com.ruoyi.project.business.domain;

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.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.framework.web.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

/**
 * @TableName tc_lead
 */

@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Builder
@TableName("tc_lead")
public class TcLead extends BaseEntity {


    /**
     * 线索ID
     */
    @TableId(type = IdType.AUTO)
    private Long leadId;

    /**
     * 线索编号
     */
    @Size(max = 30, message = "编码长度不能超过30")
    @ApiModelProperty("线索编号")
    @Length(max = 30, message = "编码长度不能超过30")
    private String leadNo;

    /**
     * 国家
     */
    @ApiModelProperty("国家")
    private Long countryId;

    /**
     * 区域
     */
    @ApiModelProperty("区域")
    private Long areaId;

    @ApiModelProperty("城市")
    private String city;

    /**
     * 来源（关联字典表）
     */
    @Size(max = 2, message = "编码长度不能超过2")
    @ApiModelProperty("来源（关联字典表）")
    @Length(max = 2, message = "编码长度不能超过2")
    private String origin;

    /**
     * 客户姓名
     */
    @Size(max = 50, message = "编码长度不能超过50")
    @ApiModelProperty("客户姓名")
    @Length(max = 50, message = "编码长度不能超过50")
    private String accountName;

    /**
     * 联系人
     */
    @Size(max = 100, message = "编码长度不能超过100")
    @ApiModelProperty("联系人")
    @Length(max = 100, message = "编码长度不能超过100")
    private String contactPerson;

    /**
     * 联系电话
     */
    @Size(max = 100, message = "编码长度不能超过100")
    @ApiModelProperty("联系电话")
    @Length(max = 100, message = "编码长度不能超过100")
    private String contact;

    /**
     * 职位
     */
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("职位")
    @Length(max = 255, message = "编码长度不能超过255")
    private String jobTitle;

    /**
     * 邮箱
     */
    @Size(max = 50, message = "编码长度不能超过30")
    @ApiModelProperty("邮箱")
    @Length(max = 50, message = "编码长度不能超过30")
    private String email;

    /**
     * 行业
     */
    @Size(max = 100, message = "编码长度不能超过100")
    @ApiModelProperty("行业")
    @Length(max = 100, message = "编码长度不能超过100")
    private String sector;

    /**
     * 地址
     */
    @Size(max = 100, message = "编码长度不能超过100")
    @ApiModelProperty("地址")
    @Length(max = 100, message = "编码长度不能超过100")
    private String address;

    /**
     * 公司名称
     */
    @Size(max = 100, message = "编码长度不能超过100")
    @ApiModelProperty("公司名称")
    @Length(max = 100, message = "编码长度不能超过100")
    private String company;

    /**
     * 公司类型（关联字典）
     */
    @Size(max = 5, message = "编码长度不能超过5")
    @ApiModelProperty("公司类型（关联字典）")
    @Length(max = 5, message = "编码长度不能超过5")
    private String companyType;

    /**
     * 描述
     */
    @Size(max = 3000, message = "编码长度不能超过500")
    @ApiModelProperty("描述")
    @Length(max = 3000, message = "编码长度不能超过500")
    private String requirement;

    /**
     * 需求类型（关联字典）
     */
    @Size(max = 5, message = "编码长度不能超过5")
    @ApiModelProperty("需求类型（关联字典）")
    @Length(max = 5, message = "编码长度不能超过5")
    private String requirementType;

    /**
     * 优先级（关联字典表）
     */
    @Size(max = 5, message = "编码长度不能超过5")
    @ApiModelProperty("优先级（关联字典表）")
    @Length(max = 5, message = "编码长度不能超过5")
    private String priority;

    /**
     * 状态（关联字典表）
     */
    @Size(max = 5, message = "编码长度不能超过5")
    @ApiModelProperty("状态（关联字典表）")
    @Length(max = 5, message = "编码长度不能超过5")
    private String status;

    /**
     * 产品意向（关联字典表）
     */
    @Size(max = 5, message = "编码长度不能超过5")
    @ApiModelProperty("产品意向（关联字典表）")
    @Length(max = 5, message = "编码长度不能超过5")
    private String intentionalProduct;

    /**
     * 项目类型
     */
    @Size(max = 5, message = "编码长度不能超过5")
    @ApiModelProperty("项目类型")
    @Length(max = 5, message = "编码长度不能超过5")
    private String segment;

    /**
     * 归属集团
     */
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("归属集团")
    @Length(max = 255, message = "编码长度不能超过255")
    @TableField("`group`")
    private String group;

    /**
     * 分配对象
     */
    @ApiModelProperty("分配对象")
    private Long owner;

    /**
     * 所属代理商
     */
    @ApiModelProperty("所属代理商")
    private Long ownerAgent;

    /**
     * 线索时间
     */
    @ApiModelProperty("线索时间")
    private Date leadTime;

    /**
     * 线索类型（0：终端客户 1 代理商）
     */
    @Size(max = 5, message = "编码长度不能超过5")
    @ApiModelProperty("线索客户类型")
    @Length(max = 5, message = "编码长度不能超过5")
    private String type;

    /**
     * 转化后客户id
     */
    @ApiModelProperty("转化后客户id")
    private Long relativeAccount;

    /**
     * 转化项目后Id
     */
    @ApiModelProperty("转化项目后Id")
    private Long relativeProject;

    /**
     * 转化成单后合同Id
     */
    @ApiModelProperty("转化成单后合同Id")
    private Long relativeContract;

    /**
     * 无效原因
     */
    @Size(max = 500, message = "编码长度不能超过500")
    @ApiModelProperty("无效原因")
    @Length(max = 500, message = "编码长度不能超过500")
    private String unvalidReason;

    /**
     * 公司背景
     */
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("公司背景")
    @Length(max = 255, message = "编码长度不能超过255")
    private String background;

    /**
     * 丢失原因备注
     */
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("丢失原因备注")
    @Length(max = 255, message = "编码长度不能超过255")
    private String lostRemark;

    /**
     * 数据权限字符
     */
    @Size(max = 100, message = "编码长度不能超过100")
    @ApiModelProperty("数据权限字符")
    @Length(max = 100, message = "编码长度不能超过100")
    private String permissionChar;

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

    // @TableField(exist = false)
    // private String hasProjectFlag;
}
