package com.fs.doctor.domain;

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

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fs.common.annotation.Excel;
import com.fs.common.core.domain.BaseEntity;
import com.fs.doctor.vo.DoctorProductVO;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 讲者主对象 doctor
 *
 * @author fs
 * @date 2025-12-30
 */
@Data
public class Doctor extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 讲者业务ID */
    @Excel(name = "讲者业务ID")
    private String doctorId;

    /** 讲者姓名 */
    @Excel(name = "讲者姓名")
    private String doctorName;

    /** 账户身份（医生/药剂师） */
    @Excel(name = "账户身份", readConverterExp = "0=医生,1=药剂师")
    private String accountType;

    /** 手机号码 */
    @Excel(name = "手机号码")
    private String mobile;

    /** 身份证号 */
    @Excel(name = "身份证号")
    private String idCard;

    /** 机构名称 */
    @Excel(name = "机构名称")
    private String institution;

    /** 省 */
    private String province;

    /** 市 */
    private String city;

    /** 区 */
    private String district;


    @Excel(name = "省")
    private String provinceName;
    @Excel(name = "市")
    private String cityName;
    @Excel(name = "区")
    private String districtName;

    /** 科室 */
    @Excel(name = "科室")
    private String department;

    /** 职称 */
    @Excel(name = "职称")
    private String jobTitle;

    /** 第三方业务编码 */
    @Excel(name = "第三方业务编码")
    private String thirdPartyCode;

    /** 研究者编码 */
    @Excel(name = "研究者编码")
    private String researcherCode;

    /** 注册时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "注册时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date registerTime;

    /** 执业证图片URL */
    @Excel(name = "执业证图片URL")
    private String licenseImage;

    /** 职称证/工牌图片URL */
    @Excel(name = "职称证/工牌图片URL")
    private String titleCertImage;

    /** 签约协议状态（0-未签约 1-已签约） */
    @Excel(name = "签约协议状态", readConverterExp = "0=-未签约,1=-已签约")
    private Long contractStatus;

    /** 银行卡号 */
    @Excel(name = "银行卡号")
    private String bankCardNo;

    /** 开户银行 */
    @Excel(name = "开户银行")
    private String bankName;

    /** 支行信息 */
    @Excel(name = "支行信息")
    private String bankBranch;

    /** 状态（0-待审核 1-审核通过 2-审核拒绝 3-转人工审核） */
    @Excel(name = "状态", readConverterExp = "0=-待审核,1=-审核通过,2=-审核拒绝,3=-转人工审核")
    private Long status;

    /** 逻辑删除标记（0-未删除 1-已删除） */
    private Long deleted;

    /** 密码 */
    private String pwd;

    /** 公司ID */
    private Long companyId;

    /** 公司名称 */
    @Excel(name = "公司名称")
    private String  companyName;
    /**
     * 审核实例Id
     */
    private Long auditInstanceId;

    // 积分余额
    private Double balance;

    /**
     * 任务数量
     */
    private Integer taskNum;
    /**
     * 医生关联产品
     */
    @TableField(exist = false)
    private List<DoctorProductVO> doctorProducts;

    /**
     * 驳回原因
     */
    private String rejectReason;


    @TableField(exist = false)
    private Integer isApply;

    /**
     * 业务员ID（用于查询条件，非表字段）
     */
    @TableField(exist = false)
    private Long companyUserId;
}
