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

import com.jeeplus.modules.sys.entity.Office;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeeplus.modules.sys.entity.Area;

import com.jeeplus.common.persistence.DataEntity;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.modules.workjobgrade.entity.WorkJobGrade;
import com.jeeplus.modules.workrelationship.entity.WorkRelationship;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.Size;

/**
 * 员工基本信息Entity
 * @author ssrh
 * @version 2018-07-26
 */
public class WorkStaffBasicInfo extends DataEntity<WorkStaffBasicInfo> {
	
	private static final long serialVersionUID = 1L;
	private String userId;
	private String sqlStr;
	private Date tryEndTime;
	private Office office;		// 部门ID
	private Office company;		// 公司ID
	private Office branchOffice;		// 公司ID
    private String no;		// 工    号
	private String name;		// 姓    名
	private String gender;		// 性    别
	private String nation;		// 民    族
	private String idCard;		// 身份证号码
	private Integer age;		// 年    龄
	private Date birthday;		// 出生日期
	private String calendar;		// 公历/农历
	private String email;		// 电子邮箱
	private String mobile;		// 移动电话
	private String phone;		// 座机
	private String marriage;		// 婚姻状况
	private String politics;		// 政治面貌
	private String exSoldier;		// 是否退伍军人
	private String address;		// 常住地址
	private Area nativePlace;		// 籍    贯
	private String household;		// 户口所在地
	private String duty;		// 职务
	private WorkJobGrade jobGrade;		// 职    级
	private Double salary;		// 基本工资
	private String status;		// 员工状态
	private Date entryDate;		// 入职日期
	private Date workDate;		// 参加工作日期
	private String bankName;		// 开户银行
	private String bankCard;		// 银行卡号
	private Date industryDate;		// 从事本行业日期
	private String ts;		// 是否TS人员
	private String picture;		// 照片
	private Date beginEntryDate;		// 开始 入职日期
	private Date endEntryDate;		// 结束 入职日期
    private Date dimissionDate;  //离职日期
    private Date workEndDate;  //考勤截止日期
    private MultipartFile pictureFile;
    private List<WorkStaffLanguages> languageList; //外语语种
    private List<WorkStaffExperience> experienceList; //工作经历
    private List<WorkStaffCertificate> certificateList; //执业资格证书
    private List<WorkStaffAchievement> achievementList;//工作业绩
    private List<WorkStaffFamily> familyList;//家庭情况
    private List<WorkStaffRewards> rewardsList;//奖惩情况
    private List<WorkStaffRecord> recordList;//电子档案
    private List<WorkStaffSocialPosition> socialPositionList;//社会及行业职务
    private List<WorkStaffTitle> titleList;//职称
    private List<WorkStaffTraining> trainingList;//培训经历
    private List<WorkStaffEducation> educationList;//教育经历
    private String achiveId;
    private String percent;
    private Date beginBirthdayDate;
    private Date endBirthdayDate;
    private Date beginWorkDate;
    private Date endWorkDate;
    private Integer minAge;
    private Integer maxAge;
    private Double minSalary;		// 基本工资
    private Double maxSalary;		// 基本工资
    private String minPercent;		// 基本工资
    private String maxPercent;		// 基本工资
    private String home;		// 基本工资
	private String roleId;
	private String roleName;

    private String nowDate;
    private String userName;
    private String errInfo;

	//劳动关系临时属性
	private String relationshipStatus;
    public List<WorkStaffEducation> getEducationList() {
        return educationList;
    }

    public void setEducationList(List<WorkStaffEducation> educationList) {
        this.educationList = educationList;
    }

    public String getSqlStr() {
		return sqlStr;
	}

    private List<WorkRelationship> labourList;//劳务关系
    private String notifyFlag;

    public List<WorkRelationship> getLabourList() {
        return labourList;
    }

    public void setLabourList(List<WorkRelationship> labourList) {
        this.labourList = labourList;
    }

	public void setSqlStr(String sqlStr) {
		this.sqlStr = sqlStr;
	}
    public List<WorkStaffLanguages> getLanguageList() {
        return languageList;
    }

    public void setLanguageList(List<WorkStaffLanguages> languageList) {
        this.languageList = languageList;
    }

    public List<WorkStaffExperience> getExperienceList() {
        return experienceList;
    }

    public void setExperienceList(List<WorkStaffExperience> experienceList) {
        this.experienceList = experienceList;
    }

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

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

    public List<WorkStaffAchievement> getAchievementList() {
        return achievementList;
    }

    public void setAchievementList(List<WorkStaffAchievement> achievementList) {
        this.achievementList = achievementList;
    }

    public List<WorkStaffFamily> getFamilyList() {
        return familyList;
    }

    public void setFamilyList(List<WorkStaffFamily> familyList) {
        this.familyList = familyList;
    }

    public List<WorkStaffRewards> getRewardsList() {
        return rewardsList;
    }

    public void setRewardsList(List<WorkStaffRewards> rewardsList) {
        this.rewardsList = rewardsList;
    }

    public List<WorkStaffRecord> getRecordList() {
        return recordList;
    }

    public void setRecordList(List<WorkStaffRecord> recordList) {
        this.recordList = recordList;
    }

    public List<WorkStaffSocialPosition> getSocialPositionList() {
        return socialPositionList;
    }

    public void setSocialPositionList(List<WorkStaffSocialPosition> socialPositionList) {
        this.socialPositionList = socialPositionList;
    }

    public List<WorkStaffTitle> getTitleList() {
        return titleList;
    }

    public void setTitleList(List<WorkStaffTitle> titleList) {
        this.titleList = titleList;
    }

    public List<WorkStaffTraining> getTrainingList() {
        return trainingList;
    }

    public void setTrainingList(List<WorkStaffTraining> trainingList) {
        this.trainingList = trainingList;
    }

    public MultipartFile getPictureFile() {
        return pictureFile;
    }

    public void setPictureFile(MultipartFile pictureFile) {
        this.pictureFile = pictureFile;
    }

    public WorkStaffBasicInfo() {
		super();
	}

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

	@ExcelField(title="部门", fieldType=Office.class, value="office.name", align=2, sort=1)
	public Office getOffice() {
		return office;
	}

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

	public void setCompany(Office company) {
		this.company = company;
	}
	
	@ExcelField(title="工    号", align=2, sort=2)
	public String getNo() {
		return no;
	}

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

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

	public void setGender(String gender) {
		this.gender = gender;
	}
	
	@ExcelField(title="民    族", dictType="nation_type", align=2, sort=5)
	public String getNation() {
		return nation;
	}

	public void setNation(String nation) {
		this.nation = nation;
	}
	
	@ExcelField(title="身份证号码", align=2, sort=6)
	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}

    @ExcelField(title="年    龄", align=2, sort=7)
	public String getAgeStr(){
        return String.valueOf(age);
    }

    public void setAgeStr(String age){
        this.age = Integer.valueOf(age);
    }
	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	@ExcelField(title="出生日期", align=2, sort=8)
	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	
	@ExcelField(title="公历/农历", dictType="calendar_type", align=2, sort=9)
	public String getCalendar() {
		return calendar;
	}

	public void setCalendar(String calendar) {
		this.calendar = calendar;
	}
	
	@ExcelField(title="电子邮箱", align=2, sort=10)
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	
	@ExcelField(title="移动电话", align=2, sort=11)
	public String getMobile() {
		return mobile;
	}

	public void setMobile(String mobile) {
		this.mobile = mobile;
	}

	@ExcelField(title="座机", align=2, sort=11)
	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	@ExcelField(title="婚姻状况", align=2, sort=12,valiName = "marriage_status")
	public String getMarriage() {
		return marriage;
	}

	public void setMarriage(String marriage) {
		this.marriage = marriage;
	}
	
	@ExcelField(title="政治面貌", align=2, sort=13, valiName = "politics_type")
	public String getPolitics() {
		return politics;
	}

	public void setPolitics(String politics) {
		this.politics = politics;
	}
	
	@ExcelField(title="是否退伍军人", dictType="yes_no", align=2, sort=14)
	public String getExSoldier() {
		return exSoldier;
	}

	public void setExSoldier(String exSoldier) {
		this.exSoldier = exSoldier;
	}
	
	@ExcelField(title="常住地址", align=2, sort=15)
	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
	
	@ExcelField(title="籍    贯", fieldType=Area.class, value="", align=2, sort=16)
	public Area getNativePlace() {
		return nativePlace;
	}

	public void setNativePlace(Area nativePlace) {
		this.nativePlace = nativePlace;
	}
	
	@ExcelField(title="户口所在地", align=2, sort=17)
	public String getHousehold() {
		return household;
	}

	public void setHousehold(String household) {
		this.household = household;
	}
	
	@ExcelField(title="职务", align=2, sort=18,valiName = "staff_duty")
	public String getDuty() {
		return duty;
	}

	public void setDuty(String duty) {
		this.duty = duty;
	}
	
	@ExcelField(title="职    级", align=2, value="jobGrade.name", sort=19, valiName = "WorkJobGrade")
	public WorkJobGrade getJobGrade() {
		return jobGrade;
	}

	public void setJobGrade(WorkJobGrade jobGrade) {
		this.jobGrade = jobGrade;
	}
	
	@ExcelField(title="员工状态", align=2, sort=20, valiName = "staff_status")
	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	@ExcelField(title="入职日期", align=2, sort=21)
	public Date getEntryDate() {
		return entryDate;
	}

	public void setEntryDate(Date entryDate) {
		this.entryDate = entryDate;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	@ExcelField(title="参加工作日期", align=2, sort=22)
	public Date getWorkDate() {
		return workDate;
	}

	public void setWorkDate(Date workDate) {
		this.workDate = workDate;
	}
	
	@ExcelField(title="开户银行", align=2, sort=23, valiName = "bank_type")
	public String getBankName() {
		return bankName;
	}

	public void setBankName(String bankName) {
		this.bankName = bankName;
	}
	
	@ExcelField(title="银行卡号", align=2, sort=24)
	public String getBankCard() {
		return bankCard;
	}

	public void setBankCard(String bankCard) {
		this.bankCard = bankCard;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	@ExcelField(title="从事本行业日期", align=2, sort=25)
	public Date getIndustryDate() {
		return industryDate;
	}

	public void setIndustryDate(Date industryDate) {
		this.industryDate = industryDate;
	}
	
	@ExcelField(title="是否TS人员", dictType="yes_no", align=2, sort=26)
	public String getTs() {
		return ts;
	}

	public void setTs(String ts) {
		this.ts = ts;
	}
	
	public String getPicture() {
		return picture;
	}

	public void setPicture(String picture) {
		this.picture = picture;
	}
	
	public Date getBeginEntryDate() {
		return beginEntryDate;
	}

	public void setBeginEntryDate(Date beginEntryDate) {
		this.beginEntryDate = beginEntryDate;
	}
	
	public Date getEndEntryDate() {
		return endEntryDate;
	}

	public void setEndEntryDate(Date endEntryDate) {
		this.endEntryDate = endEntryDate;
	}

    public Date getDimissionDate() {
        return dimissionDate;
    }

    public void setDimissionDate(Date dimissionDate) {
        this.dimissionDate = dimissionDate;
    }
	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

    public Office getBranchOffice() {
        return branchOffice;
    }

    public void setBranchOffice(Office branchOffice) {
        this.branchOffice = branchOffice;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    public Date getWorkEndDate() {
        return workEndDate;
    }

    public void setWorkEndDate(Date workEndDate) {
        this.workEndDate = workEndDate;
    }

    public String getNotifyFlag() {
        return notifyFlag;
    }

    public void setNotifyFlag(String notifyFlag) {
        this.notifyFlag = notifyFlag;
    }

    public String getAchiveId() {
        return achiveId;
    }

    public void setAchiveId(String achiveId) {
        this.achiveId = achiveId;
    }

	public String getRelationshipStatus() {
		return relationshipStatus;
	}

	public void setRelationshipStatus(String relationshipStatus) {
		this.relationshipStatus = relationshipStatus;
	}


	public Date getTryEndTime() {
		return tryEndTime;
	}

	public void setTryEndTime(Date tryEndTime) {
		this.tryEndTime = tryEndTime;
	}

    public String getPercent() {
        return percent;
    }

    public void setPercent(String percent) {
        this.percent = percent;
    }

    public Date getBeginBirthdayDate() {
        return beginBirthdayDate;
    }

    public void setBeginBirthdayDate(Date beginBirthdayDate) {
        this.beginBirthdayDate = beginBirthdayDate;
    }

    public Date getEndBirthdayDate() {
        return endBirthdayDate;
    }

    public void setEndBirthdayDate(Date endBirthdayDate) {
        this.endBirthdayDate = endBirthdayDate;
    }

    public Date getBeginWorkDate() {
        return beginWorkDate;
    }

    public void setBeginWorkDate(Date beginWorkDate) {
        this.beginWorkDate = beginWorkDate;
    }

    public Date getEndWorkDate() {
        return endWorkDate;
    }

    public void setEndWorkDate(Date endWorkDate) {
        this.endWorkDate = endWorkDate;
    }

    public Integer getMinAge() {
        return minAge;
    }

    public void setMinAge(Integer minAge) {
        this.minAge = minAge;
    }

    public Integer getMaxAge() {
        return maxAge;
    }

    public void setMaxAge(Integer maxAge) {
        this.maxAge = maxAge;
    }

    public Double getMinSalary() {
        return minSalary;
    }

    public void setMinSalary(Double minSalary) {
        this.minSalary = minSalary;
    }

    public Double getMaxSalary() {
        return maxSalary;
    }

    public void setMaxSalary(Double maxSalary) {
        this.maxSalary = maxSalary;
    }

    public String getMinPercent() {
        return minPercent;
    }

    public void setMinPercent(String minPercent) {
        this.minPercent = minPercent;
    }

    public String getMaxPercent() {
        return maxPercent;
    }

    public void setMaxPercent(String maxPercent) {
        this.maxPercent = maxPercent;
    }

    public String getHome() {
        return home;
    }

    public void setHome(String home) {
        this.home = home;
    }

	public String getRoleId() {
		return roleId;
	}

	public void setRoleId(String roleId) {
		this.roleId = roleId;
	}

    @ExcelField(title="导入时间", align=2, sort=27)
    public String getNowDate() {
        return nowDate;
    }

    public void setNowDate(String nowDate) {
        this.nowDate = nowDate;
    }

    @ExcelField(title="导入用户", align=2, sort=28)
    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    @ExcelField(title="失败原因", align=2, sort=29)
    public String getErrInfo() {
        return errInfo;
    }

    public void setErrInfo(String errInfo) {
        this.errInfo = errInfo;
    }

	public String getRoleName() {
		return roleName;
	}

	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}
}