package cn.iocoder.yudao.module.staff.entity;


import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

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

import static cn.iocoder.yudao.common.DictBaseConstants.COMPANY_STAFF_EDU;
import static cn.iocoder.yudao.common.DictBaseConstants.DICT_SYS_USER_SEX;

/**
 * 企业管理-员工信息实体
 * @author 小李
 * @date 16:25 2024/8/6
**/
@TableName("company_staff")
@Data
@EqualsAndHashCode(callSuper = true)
@ExcelIgnoreUnannotated
public class CompanyStaff extends TenantBaseDO {
    /** 主键标识 */
    @TableId(type = IdType.ASSIGN_ID)
    private String id;

    /** 企业id（base_company表中的id） */
    private String corpId;

    /** 用户id（system_users表的id） */
    private Long userId;

    /** 部门id(system_dept表中的id) */
    private Long deptId;

    /** 工号 */
    @ExcelProperty("工号")
    private String workNo;

    /** 姓名 */
    @ExcelProperty("姓名")
    private String name;

    /** 手机号 */
    @ExcelProperty("手机号")
    private String tel;

    /** 性别 */
    @ExcelProperty(value = "性别", converter = DictConvert.class)
    @DictFormat(DICT_SYS_USER_SEX)
    private String sex;

    /** 家庭住址 */
    @ExcelProperty("家庭住址")
    private String address;

    /** 工作日期 */
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ExcelProperty("工作日期")
    private Date workDate;

    /** 工龄 */
    @ExcelProperty("工龄(年)")
    private BigDecimal workYear;

    /** 入职日期 */
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ExcelProperty("入职日期")
    private Date joinedDate;

    /** 司龄 */
    @ExcelProperty("司龄(年)")
    private BigDecimal joinedYear;

    /** 学历 */
    @ExcelProperty(value = "学历", converter = DictConvert.class)
    @DictFormat(COMPANY_STAFF_EDU)
    private String education;

    /** 个人简介 */
    @ExcelProperty("个人简介")
    private String content;

    /** 唯一推广码（须保证全平台唯一，规则：字母+数字；字母全大写） */
    @ExcelProperty("唯一推广码")
    private String uniqueCode;

    /** 附件urls（infra_file表中的url，多个英文逗号拼接） */
    private String fileUrls;

    /** 员工角色ID集合，新增修改的时候用 */
    @TableField(exist = false)
    private List<Long> roleIds;

    /** 员工角色名称们(,分隔) */
    @TableField(exist = false)
    @ExcelProperty("员工角色")
    private String roleNames;
}
