package jnpf.model.personnels.vo.regular;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import java.util.Date;

/**
 * @Title:FtbPersonnelsRegularManagementVO
 * @Author:peng.hao
 * @create: 2024/2/119:31
 */
@Data
public class FtbPersonnelsRegularManagementVO {
    /**
     * 主键
     */
    @ExcelIgnore
    private String id;

    /**
     * 系统展示userId
     */
    @ExcelProperty(index = 1, value = "员工ID")
    private String systemWokerId;

    /**
     * 用户id
     */
    @ExcelIgnore
    private String userId;

    /**
     * 用户姓名
     */
    @ExcelProperty(index = 0, value = "姓名")
    private String userName;

    /**
     * 工号
     */
    @ExcelIgnore
    private String jobNumber;


    /**
     * 组织id
     */
    @ExcelIgnore
    private String orgId;

    /**
     * 组织
     */
    @ExcelProperty(index = 2, value = "组织")
    private String orgName;


    /**
     * 岗位id
     */
    @ExcelIgnore
    private String regularPostId;

    /**
     * 岗位名称
     */
    @ExcelProperty(index = 3, value = "岗位")
    private String regularPostName;

    /**
     * 职级id
     */
    @ExcelIgnore
    private String regularGradeId;

    /**
     * 职级
     */
    @ExcelProperty(index = 4, value = "职级")
    private String regularGradeName;


    /**
     * 入职日期
     */
    @ExcelProperty(index = 5, value = "入职日期")
    @DateTimeFormat(value = "yyyy-MM-dd")
    private Date dateOfEntry;


    /**
     * 试用期
     * 100	无试用期
     * 101	1个月内
     * 102	1个月
     * 103	2个月
     * 104	3个月
     * 105	4个月
     * 106	5个月
     * 107	6个月
     * 108	7个月
     * 109	8个月
     */
    @ExcelProperty(index = 6, value = "试用期")
    private String probation;

    /**
     * 试用期天数，如果是1个月内，这里就是天数
     */
    @ExcelIgnore
    private String probationPeriodDay;

    /**
     * 实际转正日期
     */
    @ExcelProperty(index = 7, value = "转正生效日期")
    @DateTimeFormat(value = "yyyy-MM-dd")
    private Date actualConverDate;
    /**
     * 计划转正日期
     */
    @ExcelIgnore
    private Date schedConverDate;


    /**
     * 直属主管
     */
    @ExcelIgnore
    private String immediateSuperId;

    /**
     * 直属主管name
     */
    @ExcelIgnore
    private String immediateSuperName;


    /** 转正审批状态(0,待审批,1审批中,2,审核通过,3,审核不通过,4,撤销,5未办理, 6手动转正,) (v1.1.1 显示主流程状态) */
    @ExcelIgnore
    private Integer transferStatus;

    /**
     * 转正审批状态(0,待审批,1审批中,2,审核通过,3,审核不通过,4,撤销,5未办理, 6手动转正,) (v1.1.1 显示主流程状态)
     */
    @ExcelProperty(index = 8, value = "办理状态")
    private String transferStatusExcel;
    /**
     *  我的审核状态 0不通过，1通过
     */
    @JsonIgnore
    @ExcelIgnore
    private Integer approvalResult;
    /**
     *申请来源 0,员工申请,1,审批办理,2直接办理,3确认到岗
     */
    @ExcelIgnore
    private Integer applicationSource;
    /**
     * 创建用户
     */
    @ExcelIgnore
    private  String creatorUserId;
    /**
     * 审批id
     */
    @ExcelIgnore
    private String taskInfoId;
    /**
     * 申请时间
     */
    @ExcelIgnore
    private Date creatorTime;

    /**
     * 申请时间(我的转正申请时间)
     */
    @ExcelIgnore
    private Date lastModifyTime;

    /**
     * 工作状态
     *   * 302、试用
     *      * 303、正式
     *      * 304、待离职
     *      * 305 离职
     *      306 试岗
     */
    @ExcelIgnore
    private String workingCondition;

    /**
     *  版本号 区分是否为老版本审批数据 0为老版本 1为新版审批
     */
    @ExcelIgnore
    private Integer versionNum;

    /**
     *是否为当前发起人(0 否 1是)
     */
    @ExcelIgnore
    private Integer currentSponsor;
    /**
     * 入职次数
     */
    @ExcelIgnore
    private Integer joinNum;

    public static void probationPeriodTranslation(FtbPersonnelsRegularManagementVO vo) {
        /**
         * 试用期
         * 100	无试用期
         * 101	1个月内
         * 102	1个月
         * 103	2个月
         * 104	3个月
         * 105	4个月
         * 106	5个月
         * 107	6个月
         * 108	7个月
         * 109	8个月
         */
        if (StringUtils.isBlank(vo.getProbation())) {
            return;
        }
        switch (vo.getProbation()) {
            case "100":
                vo.setProbation("无试用期");
                break;
            case "101":
                vo.setProbation("1个月内");
                break;
            case "102":
                vo.setProbation("1个月");
                break;
            case "103":
                vo.setProbation("2个月");
                break;
            case "104":
                vo.setProbation("3个月");
                break;
            case "105":
                vo.setProbation("4个月");
                break;
            case "106":
                vo.setProbation("5个月");
                break;
            case "107":
                vo.setProbation("6个月");
                break;
            case "108":
                vo.setProbation("7个月");
                break;
            case "109":
                vo.setProbation("8个月");
                break;
            case "110":
                vo.setProbation("9个月");
                break;
            case "111":
                vo.setProbation("10个月");
                break;
            case "112":
                vo.setProbation("11个月");
                break;
            case "113":
                vo.setProbation("12个月");
                break;
            default:
                vo.setProbation("");
                break;
        }
    }

    public static void approvalStatusTranslation(FtbPersonnelsRegularManagementVO a) {
        // 转正审批状态(0,待审批,1审批中,2,审核通过,3,审核不通过,4,撤销,5未办理, 6手动转正,)
        if (a.getTransferStatus() == null) {
            a.setTransferStatusExcel("");
            return;
        }
        switch (a.getTransferStatus()) {
            case 0:
                a.setTransferStatusExcel("待审批");
                break;
            case 1:
                a.setTransferStatusExcel("审批中");
                break;
            case 2:
                a.setTransferStatusExcel("审批通过");
                break;
            case 3:
                a.setTransferStatusExcel("审批不通过");
                break;
            case 4:
                a.setTransferStatusExcel("已撤销");
                break;
            case 5:
                a.setTransferStatusExcel("未办理");
                break;
            case 6:
                a.setTransferStatusExcel("手动转正");
                break;
            default:
                a.setTransferStatusExcel("");
        }
    }
}
