package jnpf.model.personnels.vo.turnover;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jnpf.model.cultivate.vo.offline.FtbCultivateOfflineFileVO;
import jnpf.model.personnels.dto.staff.roster.WorkerGroupDataDto;
import lombok.Data;

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

/**
 * @Title:FtbPersonnelsTurnoverHandoverVO
 * @Author:peng.hao
 * @create: 2024/2/117:07
 */
@Data
public class FtbPersonnelsTurnoverManagementVO {

    @ExcelIgnore
    private String id;
    /**
     * 用户姓名
     */
    @ExcelProperty( value = "姓名")
    private String userName;
    /**
     * 用户id
     */
    @ExcelProperty( value = "员工ID")
    private String systemWokerId;
    /**
     * 用户id
     */
    @ExcelIgnore
    private String userId;
    /**
     * 工号
     */
    @ExcelIgnore
    private String jobNumber;

    /**
     * 入职所属组织id
     */
    @ExcelIgnore
    private String orgId;

    /**
     * 入职所属组织名称
     */
    @ExcelProperty( value = "组织")
    private String orgName;

    /**
     * 入职岗位id
     */
    @ExcelIgnore
    private String entryPostId;

    /**
     * 入职岗位名称
     */
    @ExcelProperty(value = "岗位")
    private String entryPostName;

    /**
     * 入职职等id
     */
    @ExcelIgnore
    private String entryGradeId;

    /**
     * 入职职等name
     */
    @ExcelProperty( value = "职级")
    private String entryGradeName;
    /**
     * 入职日期
     */
    @ExcelIgnore
    private Date dateOfEntry;
    /**
     * 入职日期
     */
    @ExcelProperty( value = "入职日期")
    private String dateOfEntryStr;

    /**
     * 实际转正日期
     */
    @ExcelIgnore
    private Date actualConverDate;

    /**
     * 员工期望离职日期
     */
    @ExcelIgnore
    private Date empResignationDate;

    /**
     * 离职生效日期
     */
    @ExcelIgnore
    private Date resignationDate;
    /**
     * 离职生效日期
     */
    @ExcelProperty(value = "离职生效日期")
    private String resignationDateStr;

    /**
     * 司龄
     */
    @ExcelIgnore
    private String siLing;

    /** 离职状态(0,待审批,1审批中,2,审核通过,3,审核不通过,4,撤销,5未办理, 6手动,7逾期未审批,*/
    @ExcelIgnore
    private Integer turnoverStatus;

    /**
     * 办理状态(0,待审批,1审批中,2,审核通过,3,审核不通过,4,撤销,5未办理, 6手动,7逾期未审批,
     */
    @ExcelProperty( value = "办理状态")
    @JsonIgnore
    private String approvalStatus;

    /**
     * 员工当前状态(预入职/试用/正式/待离职/已离职)
     */
    @ExcelProperty(value = "员工当前状态")
    private String workingCondition;

    /**
     * 申请来源(0,员工申请,1,审批办理,2直接办理, 3试岗驳回)
     */
    @ExcelIgnore
    private String applicationSource;

    /**
     *我的审核状态 0不通过，1通过
     */
    @JsonIgnore
    @ExcelIgnore
    private Integer approvalResult;

    /**
     * 离职原因
     */
    @ExcelProperty(value = "离职原因")
    private String reasonForResignation;

    /**
     * 附件信息上限3个
     */
    @ExcelIgnore
    List<FtbCultivateOfflineFileVO> files;
    /**
     * 创建用户
     */
    @ExcelIgnore
    private String creatorUserId;
    /**
     * 去掉撤销按钮标识 0 不需要去除 1需要去除
     */
    @ExcelIgnore
    private String removeTheUndoButtonLogo;
    /**
     * 审批id
     */
    @ExcelIgnore
    private String taskInfoId;
    /**
     *
     * 申请时间
     */
    @ExcelIgnore
    private Date creatorTime;

    /**
     * 组织信息
     */
    @ExcelIgnore
    private String organizationInfo;
    /**
     * 组织信息
     */
    @ExcelIgnore
    private List<WorkerGroupDataDto> organizationList;

    /**
     *  版本号 区分是否为老版本审批数据 0为老版本 1为新版审批
     */
    @ExcelIgnore
    private Integer versionNum;
    /**
     *是否为当前发起人(0 否 1是)
     */
    @ExcelIgnore
    private Integer currentSponsor;
    /**
     * 入职次数
     */
    @ExcelIgnore
    private Integer joinNum;

    /**
     *  是否已纳入黑名单 0为否 1为是
     */
    @ExcelIgnore
    private Integer whetherToBeIncluded;
    /**
     *  是否已纳入黑名单 0为否 1为是
     */
    @ExcelProperty(index = 10, value = "是否已纳入黑名单")
    private String whetherToBeIncludedName;

    @ExcelIgnore
    private String phone;


    public static void changeWorkStatus(FtbPersonnelsTurnoverManagementVO data) {
        // 工作状态，301、预入职  302、试用 303、正式  304、待离职  305 离职 306试岗
        if ("301".equals(data.getWorkingCondition())) {
            data.setWorkingCondition("预入职");
        } else if ("302".equals(data.getWorkingCondition())) {
            data.setWorkingCondition("试用");
        } else if ("303".equals(data.getWorkingCondition())) {
            data.setWorkingCondition("正式");
        } else if ("304".equals(data.getWorkingCondition())) {
            data.setWorkingCondition("待离职");
        } else if ("305".equals(data.getWorkingCondition())) {
            data.setWorkingCondition("已离职");
        } else if ("306".equals(data.getWorkingCondition())) {
            data.setWorkingCondition("试岗");
        }
    }

    public static void changeApplySource(FtbPersonnelsTurnoverManagementVO a) {
        // 申请来源(0,员工申请,1,审批办理,2直接办理, 3试岗驳回)
        if ("0".equals(a.getApplicationSource())) {
            a.setApplicationSource("员工申请");
        } else if ("1".equals(a.getApplicationSource())) {
            a.setApplicationSource("审批办理");
        } else if ("2".equals(a.getApplicationSource())) {
            a.setApplicationSource("直接办理");
        } else if ("3".equals(a.getApplicationSource())) {
            a.setApplicationSource("试岗驳回");
        }
    }


    public static void changeApprovalStatus(FtbPersonnelsTurnoverManagementVO a) {
        // 离职状态(0,待审批,1审批中,2,审核通过,3,审核不通过,4,撤销,5未办理, 6手动,7逾期未审批,*/
        if (a.getTurnoverStatus() == null) {
            return;
        }
        if (a.getTurnoverStatus() == 0) {
            a.setApprovalStatus("待审批");
        } else if (a.getTurnoverStatus() == 1) {
            a.setApprovalStatus("审批中");
        } else if (a.getTurnoverStatus() == 2) {
            a.setApprovalStatus("审核通过");
        } else if (a.getTurnoverStatus() == 3) {
            a.setApprovalStatus("审核不通过");
        } else if (a.getTurnoverStatus() == 4) {
            a.setApprovalStatus("已撤销");
        } else if (a.getTurnoverStatus() == 5) {
            a.setApprovalStatus("未办理");
        } else if (a.getTurnoverStatus() == 6) {
            a.setApprovalStatus("手动办理");
        } else if (a.getTurnoverStatus() == 7) {
            a.setApprovalStatus("逾期未审批");
        }
    }
}
