package jnpf.model.personnels.dto.staff.employment;

import jnpf.model.personnels.dto.salary.FtbPersonnelsSalaryInfo;
import jnpf.model.personnels.dto.staff.roster.StaffBaseInfoDto;
import jnpf.model.personnels.vo.employment.AddStaffEmploymentApplyExcelVO;
import jnpf.model.personnels.vo.task.FtbPersonnelsAuditInfoVO;
import lombok.Data;
import lombok.EqualsAndHashCode;

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

/**
 * 员工入职表 DTO
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class FtbPersonnelsStaffEmploymentApplyDto extends StaffBaseInfoDto {

    /**
     * 主键ID
     */
    private String id;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 姓名
     */
    private String workerName;


    /**
     * 合同类型ID
     */
    private String contractType;

    /**
     * 合同类型名称
     */
    private String contractTypeName;

    /**
     * 预计入职日期
     */
    private Date expectedStartDate;

    /**
     * 来源关联信息名称
     */
    private String sourceRelation;


    /**
     * 来源关联信息ID
     */
    private String sourceRelationId;

    /**
     * 来源，1、APP端个人内推  2、门店招聘、3、组织招聘
     */
    private Integer source;

    /**
     * 是否提交了入职登记表：0、未提交  1、已提交
     */
    private Integer isSubmitForm;

    /**
     * 到岗状态：0、未到岗 1、已到岗 2、已逾期
     */
    private Integer status;

    /**
     * 逾期天数
     */
    private Long expireDayNum;

    /**
     * 入职薪酬
     */
    private BigDecimal entryMoney;

    /**
     * 是否需要审批：0、需要审批  1、不需要审批
     */
    private Integer isNeedCheck;

    /**
     * 审批状态：0,待审批,1审批中,2,审核通过,3,审核不通过,4,撤销 (v1.1.1显示主流程状态)
     */
    private Integer checkStatus;

    /**
     * 附件，逗号分割
     */
    private String files;

    /**
     * 有效标志，1无效 0有效
     */
    private Long enabledMark;

    /**
     * 最后修改时间
     */
    private Date lastModifyTime;
    /**
     * 修改时间
     */
    private String lastModifyUserId;

    /**
     * 创建时间
     */
    private Date creatorTime;
    /**
     * 创建人
     */
    private String creatorUserId;

    /**
     * 是否重复入职，0、否 1、是
     */
    private Integer repeat;

    /**
     * 入职次数，大于1重复入职
     */
    private Integer joinNum;

    /**
     * 审核信息 意见是否必填 是否具有填写权限 勾选权限
     */
    private FtbPersonnelsAuditInfoVO auditInfo;
    /**
     * 0不通过 1 通过
     */
    private Integer approvalResult;

    /**
     * 办理人
     */
    private String opUser;
    /**
     * 办理人姓名
     */
    private String opUserName;
    /**
     * 0 不处于
     * 1 存在
     */
    private String isItUnderReview;

    /**
     * 审批id
     */
    private String taskInfoId;

    private String excuseStatus;

    /**
     * 入职备注
     */
    private String onboardingRemarks;

    /**
     * 考勤组id
     */
    private String attendanceGroup;

    /**
     * 考勤组名称
     */
    private String attendanceGroupName;

    /**
     * 薪资结构(0,不使用,1使用)
     */
    private String salaryStructure;

    /**
     * 薪酬项列表
     */
    private List<FtbPersonnelsSalaryInfo> salaryItemList;

    /**
     * 薪酬总额
     */
    private BigDecimal salaryTotalAmount;

    /**
     * 薪酬临时数据存储
     */
    private String salaryData;

    /**
     * 照片
     */
    private String photoFiles;

    /**
     *  版本号 区分是否为老版本审批数据 0为老版本 1为新版审批
     */
    private Integer versionNum;
    /**
     * 意向组织id
     */
    private String intentionOrgId;
    /**
     * 意向组织名称
     */
    private String intentionOrgName;

    /**
     *
     * @param dto
     * @return
     */
    public static AddStaffEmploymentApplyExcelVO covert(FtbPersonnelsStaffEmploymentApplyDto dto) {
        if (dto == null) {
            return null;
        }
        AddStaffEmploymentApplyExcelVO addStaffEmploymentApplyExcelVO = new AddStaffEmploymentApplyExcelVO();
        addStaffEmploymentApplyExcelVO.setPhone(dto.getPhone());
        addStaffEmploymentApplyExcelVO.setWorkerName(dto.getWorkerName());
        addStaffEmploymentApplyExcelVO.setContractType(dto.getContractType());
        addStaffEmploymentApplyExcelVO.setContractTypeName(dto.getContractTypeName());
        addStaffEmploymentApplyExcelVO.setExpectedStartDate(dto.getExpectedStartDate());
        addStaffEmploymentApplyExcelVO.setCurrOrg(dto.getCurrOrg());
        addStaffEmploymentApplyExcelVO.setCurrPosition(dto.getCurrPosition());
        addStaffEmploymentApplyExcelVO.setCurrRank(dto.getCurrRank());
        addStaffEmploymentApplyExcelVO.setCurrOrgName(dto.getCurrOrgName());
        addStaffEmploymentApplyExcelVO.setCurrPositionName(dto.getCurrPositionName());
        addStaffEmploymentApplyExcelVO.setCurrRankName(dto.getCurrRankName());
        return addStaffEmploymentApplyExcelVO;
    }

}
