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

import jnpf.model.personnels.po.FtbPersonnelsStaffRoster;
import lombok.Data;

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

@Data
public class FtbPersonnelsStaffRosterDto extends StaffBaseInfoDto {

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

    /**
     * 系统用户ID
     */
    private String userId;

    /**
     * 系统员工ID,实际入职年份日期+当日办理入职3位顺序数，例如：231123001
     */
    private String systemWokerId;


    /**
     * 系统合同ID,HTZ+员工ID
     */
    private String systemContractId;

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

    /**
     * 员工姓名
     */
    private String name;

    /**
     * 工号
     */
    private String workerNo;

    /**
     * 当前店铺
     */
    private String currShopId;


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

    /**
     * 当前薪酬
     */
    private BigDecimal currSalary;

    /**
     * 转正薪酬
     */
    private BigDecimal regularSalary;


    /**
     * 入职时直属主管
     */
    private String currReportsTo;
    /**
     * 入职时直属主管
     */
    private String currReportsToName;


    /**
     * 合同编号
     */
    private String contractNo;

    /**
     * 合同生效日期
     */
    private Date contractEffectiveDate;

    /**
     * 合同到期日期
     */
    private Date contractEndDate;

    /**
     * 入职日期
     */
    private Date actualStartDate;

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

    /**
     * 转正日期
     */
    private Date actualProbationaryDate;

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

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

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

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

    /**
     * 是否调岗，0、未调岗  1、调岗中  2、调岗完成   3、调岗失败
     */
    private Integer transferPosition;

    /**
     * 有效标志，1无效 0有效
     */

    private Integer enabledMark;
    /**
     * 试用期
     */
    private String probationPeriod;

    /**
     * ，如果是1个月内，这里就是天数
     */
    private String probationPeriodDay;
    /**
     *  数据转义
     */
    private String probationPeriodDayName;

    /**
     * 创建用户
     */
    private String creatorUserId;

    /**
     * 创建时间
     */
    private Date creatorTime;

    /**
     * 修改用户
     */
    private String lastModifyUserId;

    /**
     * 修改时间
     */
    private Date lastModifyTime;

    /**
     * 司年龄(天数)
     */
    private String companyAge;

    /**
     * 司龄（年月日）
     */
    private String siLing;

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

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

    /**
     * 角色，多个逗号隔开
     */
    private String currRole;
    /**
     * 用户当前角色列表
     */
    List<SaffRoleDto> userRoleList;

    /**
     * 头像
     */
    private String headLogo;
    /**
     * 身份证号码
     */
    private String idCardNum;

    /**
     * 性别
     */
    private String workerSexName;
    /**
     * 出生日期
     */
    private String birthday;
    /**
     * 年龄
     */
    private String age;
    /**
     * 计划转正日期
     */
    private Date planProbationaryDate;

    /**
     * 员工组信息对象 组织、岗位、职等 直属主管 门店
     */
    private List<WorkerGroupDataDto> orgList;

    /**
     * 花名称
     */
    private String flowerName;
    /**
     * 离职状态 1标记为手动离职 空标记为审批离职
     */
    private String turnoverStatusFlag;

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

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

    /**
     * 离职时间
     */
    private Date departDate;

    /**
     * 1为正式试岗，0非正式试岗，当workerStatus=306时，该字段才有意义
     */
    private Integer workerStatusFormal = 0;

    /**
     * 是否有试岗期,0-没有，1-有
     */
    private Integer isTrialJob;


    /**
     * 试岗天数
     */
    private Integer trialJobDay;


    /**
     * 合同签署状态，500-未发起 501-待签署 502-已到期 503-已签署
     */
    private Integer contractStatus;
    /**
     * 合同签署状态，500-未发起 501-待签署 502-已到期 503-已签署
     */
    private String contractStatusName;
    /**
     * 合同发起方
     */
    private String contractCompany;

    /**
     * 任务编号
     */
    private String contractTaskId;

    /**
     * 是否是试岗驳回(0 : 否 1:是)
     */
    private Integer isTrialFail;

    /**
     * oa进行获取详情接口流程id
     */
    private String taskInfoId;

    /**
     * 1为新版审批使用taskInfoId进行查询离职流程
     */
    private Integer versionNum;
    /**
     * 班组id
     */
    private String currGroupId;

    /**
     * 班组Name
     */
    private String currGroupName;

    /**
     * 健康证状态：1-缺失，2-过期，3-临期，4-正常。
     */
    private Integer healthCertificateStatus;

    /**
    * 健康证id
    */
    private String healthCertificateId;


    public static void changeEscape(FtbPersonnelsStaffRosterDto data) {
        // 工作状态，301、预入职  302、试用 303、正式  304、待离职  305 离职 306试岗
        if ("301".equals(data.getWorkerStatus())) {
            data.setWorkerStatusName("预入职");
        } else if ("302".equals(data.getWorkerStatus())) {
            data.setWorkerStatusName("试用");
        } else if ("303".equals(data.getWorkerStatus())) {
            data.setWorkerStatusName("正式");
        } else if ("304".equals(data.getWorkerStatus())) {
            data.setWorkerStatusName("待离职");
        } else if ("305".equals(data.getWorkerStatus())) {
            data.setWorkerStatusName("离职");
        } else if ("306".equals(data.getWorkerStatus())) {
            data.setWorkerStatusName("试岗");
        }
        // 合同签署状态，500-未发起 501-待签署 502-已到期 503-已签署
        if (500 == data.getContractStatus()){
            data.setContractStatusName("未发起");
        }else if (501 == data.getContractStatus()){
            data.setContractStatusName("待签署");
        }else if (502 == data.getContractStatus()){
            data.setContractStatusName("已到期");
        }else if (503 == data.getContractStatus()){
            data.setContractStatusName("已签署");
        }
        //试用期
        //100	无试用期
        //101	1个月内
        //102	1个月
        //103	2个月
        //104	3个月
        //105	4个月
        //106	5个月
        //107	6个月
        //108	7个月
        //109	8个月
        //110		9个月
        //111	10个月
        //112		11个月
        //113		12个月
        if ("100".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("无试用期");
        }else if ("101".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("1个月内"+"("+data.getProbationPeriodDay()+"天)");
        }else if ("102".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("1个月");
        }else if ("103".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("2个月");
        }else if ("104".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("3个月");
        }else if ("105".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("4个月");
        }else if ("106".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("5个月");
        }else if ("107".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("6个月");
        }else if ("108".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("7个月");
        }else if ("109".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("8个月");
        }else if ("110".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("9个月");
        }else if ("111".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("10个月");
        }else if ("112".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("11个月");
        }else if ("113".equals(data.getProbationPeriod())){
            data.setProbationPeriodDayName("12个月");
        }
    }

    public static FtbPersonnelsStaffRosterDto changeEscape(FtbPersonnelsStaffRoster da) {
        if (da == null) {
            return null;
        }
        FtbPersonnelsStaffRosterDto ftbPersonnelsStaffRosterDto = new FtbPersonnelsStaffRosterDto();
        ftbPersonnelsStaffRosterDto.setUserId(da.getUserId());
        ftbPersonnelsStaffRosterDto.setSystemWokerId(da.getSystemWokerId());
        ftbPersonnelsStaffRosterDto.setSystemContractId(da.getSystemContractId());
        ftbPersonnelsStaffRosterDto.setPhone(da.getPhone());
        ftbPersonnelsStaffRosterDto.setName(da.getName());
        ftbPersonnelsStaffRosterDto.setWorkerNo(da.getWorkerNo());
        ftbPersonnelsStaffRosterDto.setCurrOrg(da.getCurrOrg());
        ftbPersonnelsStaffRosterDto.setCurrPosition(da.getCurrPosition());
        ftbPersonnelsStaffRosterDto.setCurrRank(da.getCurrRank());
        ftbPersonnelsStaffRosterDto.setCurrShopId(da.getCurrShopId());
        ftbPersonnelsStaffRosterDto.setEntrySalary(da.getEntrySalary());
        ftbPersonnelsStaffRosterDto.setCurrSalary(da.getCurrSalary());
        ftbPersonnelsStaffRosterDto.setRegularSalary(da.getRegularSalary());
        ftbPersonnelsStaffRosterDto.setCurrReportsTo(da.getCurrReportsTo());
        ftbPersonnelsStaffRosterDto.setContractNo(da.getContractNo());
        ftbPersonnelsStaffRosterDto.setContractEffectiveDate(da.getContractEffectiveDate());
        ftbPersonnelsStaffRosterDto.setContractEndDate(da.getContractEndDate());
        ftbPersonnelsStaffRosterDto.setActualStartDate(da.getActualStartDate());
        ftbPersonnelsStaffRosterDto.setWorkerType(da.getWorkerType());
        ftbPersonnelsStaffRosterDto.setContractType(da.getContractType());
        ftbPersonnelsStaffRosterDto.setWorkerStatus(da.getWorkerStatus());
        ftbPersonnelsStaffRosterDto.setIsSubmitForm(da.getIsSubmitForm());
        ftbPersonnelsStaffRosterDto.setTransferPosition(da.getTransferPosition());
        ftbPersonnelsStaffRosterDto.setJoinNum(da.getJoinNum());
        ftbPersonnelsStaffRosterDto.setActualProbationaryDate(da.getActualProbationaryDate());
        ftbPersonnelsStaffRosterDto.setCurrRole(da.getCurrRole());
        ftbPersonnelsStaffRosterDto.setDepartDate(da.getDepartDate());
        ftbPersonnelsStaffRosterDto.setIsTrialJob(da.getIsTrialJob());
        ftbPersonnelsStaffRosterDto.setTrialJobDay(da.getTrialJobDay());
        ftbPersonnelsStaffRosterDto.setContractStatus(da.getContractStatus());
        ftbPersonnelsStaffRosterDto.setContractTypeName(da.getContractTypeName());
        ftbPersonnelsStaffRosterDto.setContractCompany(da.getContractCompany());
        ftbPersonnelsStaffRosterDto.setIsTrialFail(da.getIsTrialFail());
        ftbPersonnelsStaffRosterDto.setTaskInfoId(da.getTaskInfoId());
        ftbPersonnelsStaffRosterDto.setVersionNum(da.getVersionNum());
        ftbPersonnelsStaffRosterDto.setLastModifyTime(da.getLastModifyTime());
        ftbPersonnelsStaffRosterDto.setLastModifyUserId(da.getLastModifyUserId());
        ftbPersonnelsStaffRosterDto.setCreatorTime(da.getCreatorTime());
        ftbPersonnelsStaffRosterDto.setCreatorUserId(da.getCreatorUserId());
        ftbPersonnelsStaffRosterDto.setId(da.getId());
        ftbPersonnelsStaffRosterDto.setEnabledMark(da.getEnabledMark());
        return ftbPersonnelsStaffRosterDto;
    }
}
