/**
 * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.modules.hr.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeeplus.common.persistence.DataEntity;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.modules.sys.entity.Certificate;
import com.jeeplus.modules.sys.entity.Office;
import com.jeeplus.modules.sys.entity.User;
import com.jeeplus.modules.sysuseroffice.entity.Useroffice;
import org.hibernate.validator.constraints.Email;

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

/**
 * 人员基本信息Entity
 * @author fgy
 * @version 2017-12-06
 */
public class UserInfo extends DataEntity<UserInfo> {
	
	private static final long serialVersionUID = 1L;
	private String userId;		// 用户id
	private User user;          //用户
	private Useroffice  userOffice; //用户所在公司
	private String companyId;		// 所属公司
	private Office company;         //所属公司
	private String officeId;        //所属部门
	private Office office;          //所属部门
	private String name;		// 姓名
	private String nickName;		// 昵称
	private String gender;		// 性别
	private String jobNumber;     //工号
	private String highestDegree;		// 最高学历
	private String highestSchool;		// 最高学历院校
	private String highestProfession;		// 最高院校专业
	private Date highestGraduationTime;		// 最高学历毕业时间
	private String firstDegree;		// 第一学历
	private String firstSchool;		// 第一学历院校
	private String firstProfession;		// 第一学历专业
	private Date firstGraduationTime;		// 第一学历毕业时间
	private Date birthday;		// 出生日期
	private String idCard;		// 身份证号
	private String professionalTitle;		// 职称
	private Date professionalGetdate;		// 获取职称日期
	private String socialInsuranceAccount;		// 社保账号
	private String medicalInsuranceAccount;		// 医保账号
	private String bankAccount;		// 银行账号
	private String providentFundAccount;		// 公积金账号
	private String qq;		// QQ号
	private String weixin;		// 微信号
	private String mobilePhone;		// 联系电话
	private String email;		// 电子邮件
	private String isCostengineer;		// 是否造价师（0否，1是）
	private Date costengineerGetdate;		// 造价师取得日期
	private Date workstartDate;		// 报到日期
	private String probationPosition;		// 试用岗位
	private String probationDuration;		// 试用期（n个月）
	private Date probationEnddate;		// 试用结束日期
	private String professionalQualification;		// 职业资格
	private String engagedJob;		// 从事专业
	private String otherQualification;		// 其他资质
	private String personalProfile;		// 个人简介
	private List<Certificate> certificateList; //人员证书

	public UserInfo() {
		super();
	}

	public UserInfo(String id){
		super(id);
	}

	@ExcelField(title="用户id", align=2, sort=7)
	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}
	
	@ExcelField(title="所属公司", align=2, sort=8)
	public String getCompanyId() {
		return companyId;
	}

	public void setCompanyId(String companyId) {
		this.companyId = companyId;
	}
	
	@ExcelField(title="姓名", align=2, sort=9)
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	@ExcelField(title="昵称", align=2, sort=10)
	public String getNickName() {
		return nickName;
	}

	public void setNickName(String nickName) {
		this.nickName = nickName;
	}
	
	@ExcelField(title="性别", dictType="sex", align=2, sort=11)
	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}
	
	@ExcelField(title="最高学历", dictType="education_level", align=2, sort=12)
	public String getHighestDegree() {
		return highestDegree;
	}

	public void setHighestDegree(String highestDegree) {
		this.highestDegree = highestDegree;
	}
	
	@ExcelField(title="最高学历院校", align=2, sort=13)
	public String getHighestSchool() {
		return highestSchool;
	}

	public void setHighestSchool(String highestSchool) {
		this.highestSchool = highestSchool;
	}
	
	@ExcelField(title="最高院校专业", align=2, sort=14)
	public String getHighestProfession() {
		return highestProfession;
	}

	public void setHighestProfession(String highestProfession) {
		this.highestProfession = highestProfession;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="最高学历毕业时间", align=2, sort=15)
	public Date getHighestGraduationTime() {
		return highestGraduationTime;
	}

	public void setHighestGraduationTime(Date highestGraduationTime) {
		this.highestGraduationTime = highestGraduationTime;
	}
	
	@ExcelField(title="第一学历", dictType="education_level", align=2, sort=16)
	public String getFirstDegree() {
		return firstDegree;
	}

	public void setFirstDegree(String firstDegree) {
		this.firstDegree = firstDegree;
	}
	
	@ExcelField(title="第一学历院校", align=2, sort=17)
	public String getFirstSchool() {
		return firstSchool;
	}

	public void setFirstSchool(String firstSchool) {
		this.firstSchool = firstSchool;
	}
	
	@ExcelField(title="第一学历专业", align=2, sort=18)
	public String getFirstProfession() {
		return firstProfession;
	}

	public void setFirstProfession(String firstProfession) {
		this.firstProfession = firstProfession;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="第一学历毕业时间", align=2, sort=19)
	public Date getFirstGraduationTime() {
		return firstGraduationTime;
	}

	public void setFirstGraduationTime(Date firstGraduationTime) {
		this.firstGraduationTime = firstGraduationTime;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="出生日期", align=2, sort=20)
	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	
	@ExcelField(title="身份证号", align=2, sort=21)
	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}
	
	@ExcelField(title="职称", align=2, sort=22)
	public String getProfessionalTitle() {
		return professionalTitle;
	}

	public void setProfessionalTitle(String professionalTitle) {
		this.professionalTitle = professionalTitle;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="获取职称日期", align=2, sort=23)
	public Date getProfessionalGetdate() {
		return professionalGetdate;
	}

	public void setProfessionalGetdate(Date professionalGetdate) {
		this.professionalGetdate = professionalGetdate;
	}
	
	@ExcelField(title="社保账号", align=2, sort=24)
	public String getSocialInsuranceAccount() {
		return socialInsuranceAccount;
	}

	public void setSocialInsuranceAccount(String socialInsuranceAccount) {
		this.socialInsuranceAccount = socialInsuranceAccount;
	}
	
	@ExcelField(title="医保账号", align=2, sort=25)
	public String getMedicalInsuranceAccount() {
		return medicalInsuranceAccount;
	}

	public void setMedicalInsuranceAccount(String medicalInsuranceAccount) {
		this.medicalInsuranceAccount = medicalInsuranceAccount;
	}
	
	@ExcelField(title="银行账号", align=2, sort=26)
	public String getBankAccount() {
		return bankAccount;
	}

	public void setBankAccount(String bankAccount) {
		this.bankAccount = bankAccount;
	}
	
	@ExcelField(title="公积金账号", align=2, sort=27)
	public String getProvidentFundAccount() {
		return providentFundAccount;
	}

	public void setProvidentFundAccount(String providentFundAccount) {
		this.providentFundAccount = providentFundAccount;
	}
	
	@ExcelField(title="QQ号", align=2, sort=28)
	public String getQq() {
		return qq;
	}

	public void setQq(String qq) {
		this.qq = qq;
	}
	
	@ExcelField(title="微信号", align=2, sort=29)
	public String getWeixin() {
		return weixin;
	}

	public void setWeixin(String weixin) {
		this.weixin = weixin;
	}
	
	@ExcelField(title="联系电话", align=2, sort=30)
	public String getMobilePhone() {
		return mobilePhone;
	}

	public void setMobilePhone(String mobilePhone) {
		this.mobilePhone = mobilePhone;
	}
	
	@Email(message="电子邮件必须为合法邮箱")
	@ExcelField(title="电子邮件", align=2, sort=31)
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	
	@ExcelField(title="是否造价师（0否，1是）", dictType="s_costEngineer", align=2, sort=32)
	public String getIsCostengineer() {
		return isCostengineer;
	}

	public void setIsCostengineer(String isCostengineer) {
		this.isCostengineer = isCostengineer;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="造价师取得日期", align=2, sort=33)
	public Date getCostengineerGetdate() {
		return costengineerGetdate;
	}

	public void setCostengineerGetdate(Date costengineerGetdate) {
		this.costengineerGetdate = costengineerGetdate;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="报到日期", align=2, sort=34)
	public Date getWorkstartDate() {
		return workstartDate;
	}

	public void setWorkstartDate(Date workstartDate) {
		this.workstartDate = workstartDate;
	}
	
	@ExcelField(title="试用岗位", align=2, sort=35)
	public String getProbationPosition() {
		return probationPosition;
	}

	public void setProbationPosition(String probationPosition) {
		this.probationPosition = probationPosition;
	}
	
	@ExcelField(title="试用期（n个月）", align=2, sort=36)
	public String getProbationDuration() {
		return probationDuration;
	}

	public void setProbationDuration(String probationDuration) {
		this.probationDuration = probationDuration;
	}
	
	@ExcelField(title="试用结束日期", align=2, sort=37)
	public Date getProbationEnddate() {
		return probationEnddate;
	}

	public void setProbationEnddate(Date probationEnddate) {
		this.probationEnddate = probationEnddate;
	}
	
	@ExcelField(title="职业资格", align=2, sort=38)
	public String getProfessionalQualification() {
		return professionalQualification;
	}

	public void setProfessionalQualification(String professionalQualification) {
		this.professionalQualification = professionalQualification;
	}
	
	@ExcelField(title="从事专业", align=2, sort=39)
	public String getEngagedJob() {
		return engagedJob;
	}

	public void setEngagedJob(String engagedJob) {
		this.engagedJob = engagedJob;
	}
	
	@ExcelField(title="其他资质", align=2, sort=40)
	public String getOtherQualification() {
		return otherQualification;
	}

	public void setOtherQualification(String otherQualification) {
		this.otherQualification = otherQualification;
	}
	
	@ExcelField(title="个人简介", align=2, sort=41)
	public String getPersonalProfile() {
		return personalProfile;
	}

	public void setPersonalProfile(String personalProfile) {
		this.personalProfile = personalProfile;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public Office getCompany() {
		return company;
	}

	public void setCompany(Office company) {
		this.company = company;
	}

	public Office getOffice() {
		return office;
	}

	public void setOffice(Office office) {
		this.office = office;
	}

	public String getOfficeId() {
		return officeId;
	}

	public void setOfficeId(String officeId) {
		this.officeId = officeId;
	}


	public Useroffice getUserOffice() {
		return userOffice;
	}

	public void setUserOffice(Useroffice userOffice) {
		this.userOffice = userOffice;
	}

	public String getJobNumber() {
		return jobNumber;
	}

	public void setJobNumber(String jobNumber) {
		this.jobNumber = jobNumber;
	}

	public List<Certificate> getCertificateList() {
		return certificateList;
	}

	public void setCertificateList(List<Certificate> certificateList) {
		this.certificateList = certificateList;
	}
}