package cn.ey.biz.module.system.dal.dataobject.rate;

import cn.ey.biz.common.enums.CommonStatusEnum;
import cn.ey.biz.framework.mybatis.core.type.JsonLongSetTypeHandler;
import cn.ey.biz.framework.tenant.core.db.TenantBaseDO;
import cn.ey.biz.module.system.enums.common.SexEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

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

/**
 * dict费率做
 *
 * @author ShiJie-SJ.Li
 * @date 2023/06/29
 */
@TableName(value = "system_users_new", autoResultMap = true) // 由于 SQL Server 的 system_user 是关键字，所以使用 system_users
@KeySequence("system_users_new_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysUserNewDO  extends TenantBaseDO {


    /**
     * 用户ID
     */
    @TableId
    private Long id;
    /**
     * 用户账号
     */
    private String username;
    /**
     * 加密后的密码
     *
     * 因为目前使用 {@link BCryptPasswordEncoder} 加密器，所以无需自己处理 salt 盐
     */
    private String password;
    /**
     * 用户昵称
     */
    private String nickname;
    /**
     * 备注
     */
    private String remark;
    /**
     * 部门ID
     */
    private Long deptId;
    /**
     * 岗位编号数组
     */
    @TableField(typeHandler = JsonLongSetTypeHandler.class)
    private Set<Long> postIds;
    /**
     * 用户个人邮箱
     */
    @TableField("private_email")
    private String email;
    /**
     * 手机号码
     */
    private String mobile;
    /**
     * 用户性别
     *
     * 枚举类 {@link SexEnum}
     */
    @TableField("gender")
    private String sex;
    /**
     * 用户头像
     */
    private String avatar;
    /**
     * 帐号状态
     *
     * 枚举 {@link CommonStatusEnum}
     */
    private Integer status;
    /**
     * 最后登录IP
     */
    private String loginIp;
    /**
     * 最后登录时间
     */
    private Date loginDate;
    /**
     * 用户编码
     */
    private String userCode;



    /**
     * GUI
     */
    private String gui;
    /**
     * 用户编码-GPN
     */
    private String gpn;
    /**
     * LPN
     */
    private String lpn;
    /**
     * 英文名
     */
    private String enFirstName;
    /**
     * 英文姓
     */
    private String enLastName;

    /**
     * 中间名
     */
    private String enMiddleName;
    /**
     * 中国姓
     */
    private String cnFirstName;
    /**
     * 中国名
     */
    private String cnLastName;
    /**
     * 名字全称
     */
    private String displayName;
    /**
     * 国籍
     */
    private String citizenship;

    /**
     * 第二国籍
     */
    private String secondCitizenship;
    /**
     * 公司邮箱
     */
    private String businessEmail;
    /**
     * 个人电话
     */
    private String privatePhone;
    /**
     * 公司电话
     */
    private String businessPhone;
    /**
     * 员工状态
     */
    private String employeeStatus;
    /**
     * 员工分类
     */
    private String employeeClass;
    /**
     * 员工分类
     */
    private String employeeType;
    /**
     * base 地
     */
    private String baseLocation;
    /**
     * 上级员工id
     */
    private String conseloerGpn;

    /**
     * 职业级别
     */
    private String rankCode;
    /**
     * 出生日期
     */
    private String dateOfBirth;
    /**
     * 出生国家
     */
    private String countryOfBirth;

    /**
     * 出生地
     */
    private String regionOfBirth;
    /**
     * 区域
     */
    private String region;
    /**
     * 国家
     */
    private String country;
    /**
     * 财务管辖区域
     */
    private String countryRegion;
    /**
     * 地理区域
     */
    private String geoRegion;

    /**
     * 法人名称
     */
    private String legalName;
    /**
     * 所属公司主体
     */
    private String legalEntity;
    /**
     * 分支
     */
    private String branch;
    /**
     * buesinessUnit
     */
    private String buesinessUnit;
    /**
     * mgmtRegion
     */
    private String mgmtRegion;

    /**
     * operatingUnit
     */
    private String operatingUnit;
    /**
     * mgmtUnit
     */
    private String mgmtUnit;
    /**
     * subMgmtUnit
     */
    private String subMgmtUnit;
    /**
     * 关联财务组织
     */
    private String codeBlock;

    /**
     * 加班资格
     */
    private String overtimeRlihiniliyy;
    /**
     * 生效日期
     */
    private String effictiveDate;
    /**
     * 资源类型
     */
    private String resourceType;


    /**
     * 办公地点
     */
    private String workLocation;

    /**
     * 工资类型
     */
    private String payType;


    /**
     * 子公司主体
     */
    private String subLegalEntity;
    /**
     * serviceLine
     */
    private String serviceLine;
    /**
     * subServiceLine
     */
    private String subServiceLine;
    /**
     * 合同工标识
     */
    private Integer isContractWorker;
    /**
     * 计费费率
     */
    private BigDecimal costRate;
    /**
     * 成本率
     */
    private BigDecimal billingRate;
    /**
     * 净标准收益率
     */
    private BigDecimal netStandardReveneRate;
    /**
     * 标准小时数
     */
    private Double standardHours;


    /**
     * originalBusinessUnit
     */
    private String originalBusinessUnit;
    /**
     * partnerGpnName
     */
    private String partnerGpnName;


    /**
     * 部门负责人-GPN
     */
    private String supervisor;

    /**
     * 等级
     */
    private Long gradeId;

    /**
     * competency
     */
    private String competency;

    /**
     * 能力
     */
    private String speciality;

    /**
     * PersonId
     */
    private String personId;


    /**
     * 关联财务组织
     */
    private String costCenter;

    /**
     * 离职日期
     */
    private String quitDate;

    /**
     * 每周工作天数
     */
    private Double weeklyDays;

    /**
     * 所属大区
     */
    private String marketSegment;
    /**
     * 币种
     */
    private String currency;
    /**
     * 生效时间
     */
    private String effectiveTime;

    /**
     * 失效时间
     */
    private String failureTime;

    /**
     * 版本号
     */
    private String version;

    /**
     * 部门id
     */
    private String departmentId;

    /**
     * hr user id
     */
    private String userIdHr;

}
