package jnpf.model.personnels.vo.emp;

import com.alibaba.fastjson.JSONArray;
import jnpf.model.personnels.dto.salary.FtbPersonnelsSalaryInfo;
import jnpf.model.personnels.po.FtbPersonnelsStaffEmploymentApply;
import lombok.Data;

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

/**
 * 入职详情
 * @Author: peng.hao
 * @create: 2025/4/7
 */
@Data
public class FtbEmpConfirmVO {
    /**
     * id
     */
    private String id;
    /**
     * 手机号码
     */
    private String phone;

    /**
     * 员工姓名
     */
    private String workerName;
    /**
     * 员工姓名
     */
    private String userId;

    /**
     * 员工类型
     * 26	全职
     * 27	兼职日薪
     * 28	实习
     * 29	劳务派遣
     * 30	退休返聘
     * 31	劳务外包
     * 32   兼职小时工
     */
    private String workerType;


    /**
     * 员工状态
     * 301、预入职  302、试用 303、正式  304、待离职  305 离职
     */
    private String workerStatus;

    /**
     * 实际入职日期，格式为yyyy-MM-dd HH:mm:ss
     */
    private Date actualStartDate;


    /**
     * 实际入职日期，格式为yyyy-MM-dd HH:mm:ss
     */
    private Date actualStartDateDate;
    /**
     * 试用期
     * 100	无试用期
     * 101	1个月内
     * 102	1个月
     * 103	2个月
     * 104	3个月
     * 105	4个月
     * 106	5个月
     * 107	6个月
     * 108	7个月
     * 109	8个月
     */
    private String probationPeriod;


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


    /**
     * 计划转正日期，格式为yyyy-MM-dd HH:mm:ss
     */
    private String planProbationaryDate;

    /**
     * 入职组织
     */
    private String currOrgId;
    /**
     * 入职组织名称
     */
    private String currOrgName;

    /**
     * 入职岗位
     */
    private String currPositionId;
    /**
     * 入职岗位名称
     */
    private String currPositionName;

    /**
     * 班组
     */
    private String currShopId;

    /**
     * 班组名称
     */
    private String currShopName;

    /**
     * 入职职级
     */
    private String currRankId;
    /**
     * 入职职级名称
     */
    private String currRankName;

    /**
     * 薪资结构 0否 1是
     */
    private String salaryStructure;
    /**
     * 薪资序列
     *  1职级标准 2自定义标准
     */
    private Integer payrollSequence;
    /**
     * 薪资项
     */
    private List<FtbPersonnelsSalaryInfo> salaryList;
    /**
     * 入职备注
     */
    private String onboardingRemarks;
    /**
     * 直属主管
     */
    private String affiliatedReportsTo;
    /**
     * 直属主管名称
     */
    private String affiliatedReportsToName;

    /**
     * 上传入职附件
     */
    private String files;
    /**
     * 入职薪酬金额
     */
    private BigDecimal entryMoney;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 创建人
     */
    private String createUserId;
    /**
     * 创建人
     */
    private String createUserName;
    /**
     * 是否使用薪酬 默认不使用 0不使用 1使用
     */
    private Integer isAdjustSalary;

    /**
     * 薪资序列名称
     */
    private String payrollSequenceName;
    /**
     * 入职次数
     */
    private Integer joinNum;


    public static FtbEmpConfirmVO covert(FtbPersonnelsStaffEmploymentApply apply) {
        if (apply == null) {
            return null;
        }
        FtbEmpConfirmVO ftbEmpConfirmVO = new FtbEmpConfirmVO();
        ftbEmpConfirmVO.setPhone(apply.getPhone());
        ftbEmpConfirmVO.setWorkerName(apply.getWorkerName());
        ftbEmpConfirmVO.setUserId(apply.getUserId());
        ftbEmpConfirmVO.setFiles(apply.getFiles());
        ftbEmpConfirmVO.setOnboardingRemarks(apply.getOnboardingRemarks());
        ftbEmpConfirmVO.setSalaryStructure(apply.getSalaryStructure());
        ftbEmpConfirmVO.setId(apply.getId());
        ftbEmpConfirmVO.setPayrollSequence(apply.getPayrollSequence());
        ftbEmpConfirmVO.setSalaryList(apply.getSalaryData() == null ? null : JSONArray.parseArray(apply.getSalaryData(),FtbPersonnelsSalaryInfo.class));
        ftbEmpConfirmVO.setCurrOrgId(apply.getCurrOrg());
        ftbEmpConfirmVO.setCurrOrgName(apply.getCurrOrgName());
        ftbEmpConfirmVO.setCurrPositionId(apply.getCurrPosition());
        ftbEmpConfirmVO.setCurrPositionName(apply.getCurrPositionName());
        ftbEmpConfirmVO.setCurrRankId(apply.getCurrRank());
        ftbEmpConfirmVO.setCurrRankName(apply.getCurrRankName());
        ftbEmpConfirmVO.setCurrShopId(apply.getCurrGroupId());
        ftbEmpConfirmVO.setCurrShopName(apply.getCurrGroupName());
        ftbEmpConfirmVO.setEntryMoney(apply.getEntryMoney());
        ftbEmpConfirmVO.setCreateTime(apply.getCreatorTime());
        ftbEmpConfirmVO.setCreateUserId(apply.getCreatorUserId());
        ftbEmpConfirmVO.setIsAdjustSalary(apply.getIsAdjustSalary());
        ftbEmpConfirmVO.setPayrollSequenceName(apply.getPayrollSequenceName());
        ftbEmpConfirmVO.setWorkerStatus(apply.getWorkerStatus());
        ftbEmpConfirmVO.setWorkerType(apply.getWorkerType());
        ftbEmpConfirmVO.setAffiliatedReportsTo(apply.getAffiliatedReportsTo());
        ftbEmpConfirmVO.setProbationPeriod(apply.getProbationPeriod());
        ftbEmpConfirmVO.setProbationPeriodDay(apply.getProbationPeriodDay());
        ftbEmpConfirmVO.setActualStartDate(apply.getActualStartDate());
        ftbEmpConfirmVO.setJoinNum(apply.getJoinNum());
        return ftbEmpConfirmVO;
    }
}
