package com.jeeplus.human.enrollment.enrollmentRegistration.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeeplus.core.domain.BaseEntity;
import com.jeeplus.sys.service.dto.WorkAttachmentInfoDTO;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * 入职人员登记
 * @author 王强
 * @version 1.0
 * @date 2023-09-27 14:14
 */
@Data
@TableName("human_resources_enrollment_registration")
public class EnrollmentRegistration extends BaseEntity {
    @Excel(name = "姓名",width = 25)
    private String name;                //姓名
    private String sex;                 //性别
    private String age;                 //年龄
    private String birthday;            //出生日期
    private String politicalOutlook;    //政治面貌
    @Excel(name = "籍贯",width = 25)
    private String nativePlace;         //籍贯
    private String nation;              //民族
    private String maritalStatus;       //婚姻状况
    @Excel(name = "联系电话",width = 25)
    private String mobilePhone;         //联系电话
    @Excel(name = "身份证号码",width = 25)
    private String idCard;              //身份证号码
    private String homeAddress;         //家庭住址
    private String permanentAddress;    //常住地址
    private String graduatedFrom;       //毕业院校
    private String speciality;          //专业
    private String startTime;           //开始时间
    private String endTime;             //毕业时间
    private String education;           //学历
    private String educationNature;     //学历性质
    private String graduatedOrNot;      //是否毕业
    private String englishLevel;        //英语等级
    private String ncre;                //计算机等级
    @TableField(exist = false)
    private String email;                //邮箱
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Date joinIndustryDate;   //加入行业日期
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Date joinWorkDate;   //参加工作日期
    @Excel(name = "所属部门",width = 25)
    private String department;          //所属部门
    private String trialDuration;   //试用期时长（月）
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Date trialEndDate;   //试用结束日期
    private String entryDate;           //进所日期
    private String contractStartDate;   //合同开始日期
    private String contractEndDate;   //合同结束日期
    private String remarks;             //备注
    private String type;                //流程状态
    private String procInsId;
    private String processDefinitionId;
    private String userId;              //用户id
    private String projectManager;      //项目经理
    private String processType;      //流程类型（0：入职登记流程，1：信息完善流程）
    private String ddId;      //关联钉钉id
    private String ddType; //是否已加入钉钉
    @TableField(exist = false)
    private String registrationId;
    @TableField(exist = false)
    private String status; //用户信息审批状态
    @TableField(exist = false)
    private String socialSecurityNumber;        //社保编号
    @TableField(exist = false)
    private String socialSecurityBankNumber;    //社保银行卡号
    @TableField(exist = false)
    private String socialSecurityPictureFront;       //社保卡照片正面
    @TableField(exist = false)
    private String socialSecurityPictureFrontUrl;       //社保卡照片正面URL
    @TableField(exist = false)
    private String socialSecurityPictureOpposite;       //社保卡照片反面
    @TableField(exist = false)
    private String socialSecurityPictureOppositeUrl;       //社保卡照片反面URL
    private String onJobStatus;       //在职状态
    @TableField(exist = false)
    private String departmentName;       //所属部门名称

    @TableField(exist = false)
    private String zxBankCardNumber;        //银行卡号
    @TableField(exist = false)
    private String zxAccountHolder;
    @TableField(exist = false)
    private String accountHolderFront;
    @TableField(exist = false)
    private String accountHolderOpposite;
    @TableField(exist = false)
    private String gsBankCardNumber;
    @TableField(exist = false)
    private String gsAccountHolder;
    @TableField(exist = false)
    private String gsAccountHolderFront;
    @TableField(exist = false)
    private String gsAccountHolderOpposite;
    private String isPc; //用来判断是否是从电脑端发起的入职流程
    @TableField(exist = false)
    private String wageCardId; //工资卡id
    @TableField(exist = false)
    private List<String> roleIdList;
    @TableField(exist = false)
    private List<String> postIdList;
    @TableField(exist = false)
    private String companyId; //公司id
    @TableField(exist = false)
    @Excel(name = "角色",width = 25)
    private String role;
    @TableField(exist = false)
    @Excel(name = "所属公司",width = 25)
    private String company;     //所属公司
    @TableField(exist = false)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @Excel(name = "进所日期",exportFormat = "yyyy-MM-dd",importFormat = "yyyy-MM-dd")
    private Date inDate;  //进所日期
    @TableField(exist = false)
    private String loginFlag; //是否允许登录
    @TableField(exist = false)
    private String confirmNewPassword; //确认密码
    @TableField(exist = false)
    private String newPassword; //新密码

    @TableField(exist = false)
    private String no;      //工号
    @TableField(exist = false)
    private List<EnrollmentEduInfo> eduInfoList; //教育经历
    @TableField(exist = false)
    private List<EnrollmentWorkInfo> workInfoList; //工作经历
    @TableField(exist = false)
    private List<EnrollmentTrainingInfo> trainingInfoList; //培训经历
    @TableField(exist = false)
    private List<EnrollmentCertificateInfo> certificateInfoList; //资质证书
    @TableField(exist = false)
    private List<EnrollmentSkillInfo> skillInfoList; //专业技能
    @TableField(exist = false)
    private List<EnrollmentLanguageInfo> languageInfoList; //语言能力
    @TableField(exist = false)
    private List<EnrollmentFamilyInfo> familyInfoList; //家庭成员
    @TableField(exist = false)
    private List<EnrollmentRewardInfo> rewardInfoList; //奖项信息
    @TableField(exist = false)
    private List<EnrollmentLaborContractInfo> laborContractInfoList; //劳动合同
    @TableField(exist = false)
    private List<EnrollmentSocietyInfo> societyInfoList; //社会及行业职务
    @TableField(exist = false)
    private List<EnrollmentPerformanceInfo> performanceInfoList; //工作业绩
    @TableField(exist = false)
    private List<WorkAttachmentInfoDTO> idCardFront; //身份证正面
    @TableField(exist = false)
    private List<WorkAttachmentInfoDTO> idCardBack; //身份证反面

    @TableField(exist = false)
    private String loginName; //登录名

    @TableField(exist = false)
    private String[] createDates;

}
