package com.goafanti.personnel.bo;

import java.util.Calendar;
import java.util.Date;

import com.goafanti.common.utils.excel.Excel;

public class OutPersonnelListBo {
	private Integer id;
	private Date entryTime;
	private String company;
	private String jobNature;
	private String jobNatureRemarks;
	private Date birthday;
	private Integer son;
	private Integer girl;
	private String promotionTime;
	private String contractStart;
	private String contractEnd;
	private Integer residenceProvince;
	private Integer residenceCity;
	private Integer residenceArea;
	private Integer nativePlaceProvince;
	private Integer nativePlaceCity;
	private Integer nowProvince;
	private Integer nowCity;
	private Integer nowArea;
	private String rpName;
	private String rcName;
	private String raName;
	private String nppName;
	private String npcName;
	private String npName;
	private String ncName;
	private String naName;
	private String nowAddress;
	private String residenceAddress;
	@Excel(name = "员工编号")
	private Integer employeeId;
	@Excel(name = "门禁编号")
	private Integer doorId;
	@Excel(name = "姓名")
	private String name;
	@Excel(name = "员工状态", readConverterExp = "0=实习生，1=在职（试用期），2=在职（合同期），3=兼职，4=已离职")
	private Integer status;
	@Excel(name = "所属系统", readConverterExp = "0=管理系统，1=营销系统，2=技术系统")
	private Integer system;
	@Excel(name = "职位名称")
	private String jobsName;
	@Excel(name = "等级名称")
	private String starName;
	@Excel(name = "所属公司")
	private String depName;
	@Excel(name = "星级", readConverterExp = "0=员工，1=主管，2=经理，3=总经理，4=总监，5=副总，6=总裁，7=董事长")
	private Integer lvl;
	@Excel(name = "入职时间")
	private String entryTimes;
	@Excel(name = "出生日期")
	private String birthdays;
	@Excel(name = "性别", readConverterExp = "0=男，1=女")
	private Integer sex;
	@Excel(name = "婚否", readConverterExp = "0=未婚，1=已婚，2=离异")
	private Integer marriage;
	@Excel(name = "子女")
	private String sonGirl;
	@Excel(name = "政治面貌", readConverterExp = "0=群众，1=中共预备党员，2=中共党员，3=致公党党员")
	private Integer politicalOutlook;
	@Excel(name = "学历", readConverterExp = "0=高中/中专，1=专科/高职，2=本科，3=研究生，4=硕士，5=博士")
	private Integer education;
	@Excel(name = "毕业学校")
	private String school;
	@Excel(name = "所学专业")
	private String major;
	@Excel(name = "职称/证书")
	private String title;
	@Excel(name = "晋升明细")
	private String promotionRemarks;
	@Excel(name = "最近晋升时间")
	private String promotionTimes;
	@Excel(name = "合同")
	private String contractStartEnd;
	@Excel(name = "联系电话")
	private String mobile;
	@Excel(name = "办公室电话")
	private String fixedTel;
	@Excel(name = "身份证号码")
	private String idCard;
	@Excel(name = "身份证发证地")
	private String certificationAuthority;
	@Excel(name = "户籍所在地")
	private String residenceName;
	@Excel(name = "现住址")
	private String nowName;
	@Excel(name = "紧急联系人")
	private String emergencyContact;
	@Excel(name = "紧急联系人电话")
	private String emergencyMobile;
	@Excel(name = "离职时间")
	private String quitTime;
	@Excel(name = "工作年限")
	private Integer workingYear;
	@Excel(name = "年龄")
	private Integer age;
	@Excel(name = "出生月份")
	private Integer month;
	@Excel(name = "参保时间")
	private String insuranceStartTimes;
	@Excel(name = "停保时间")
	private String insuranceEndTimes;
	@Excel(name = "入公积金时间")
	private String fundStartTimes;
	@Excel(name = "停公积金时间")
	private String fundEndTimes;

	public String getRpName() {
		return rpName;
	}

	public void setRpName(String rpName) {
		this.rpName = rpName;
		this.residenceName = new StringBuffer("").append(rpName).append("省").toString();
	}

	public String getRcName() {
		return rcName;
	}

	public void setRcName(String rcName) {
		this.rcName = rcName;
		this.residenceName = new StringBuffer(residenceName).append(rcName).toString();
	}

	public String getRaName() {
		return raName;
	}

	public void setRaName(String raName) {
		this.raName = raName;
		this.residenceName = new StringBuffer(this.residenceName).append(raName).toString();
	}

	public void setResidenceAddress(String residenceAddress) {
		this.residenceAddress = residenceAddress;
		this.residenceName = new StringBuffer(this.residenceName == null ? "" : this.residenceName)
				.append(residenceAddress).toString();
	}

	public String getNppName() {
		return nppName;
	}

	public void setNppName(String nppName) {
		this.nppName = nppName;

	}

	public String getNpcName() {
		return npcName;
	}

	public void setNpcName(String npcName) {
		this.npcName = npcName;
	}

	public String getNpName() {
		return npName;
	}

	public void setNpName(String npName) {
		this.npName = npName;
		this.nowName = new StringBuffer("").append(npName).toString();
	}

	public String getNcName() {
		return ncName;
	}

	public void setNcName(String ncName) {
		this.ncName = ncName;
		this.nowName = new StringBuffer(this.nowName).append(ncName).toString();
	}

	public String getNaName() {
		return naName;
	}

	public void setNaName(String naName) {
		this.naName = naName;
		this.nowName = new StringBuffer(this.nowName).append(naName).toString();
	}

	public void setNowAddress(String nowAddress) {
		this.nowAddress = nowAddress;
		this.nowName = new StringBuffer(this.nowName == null ? "" : this.nowName).append(nowAddress).toString();
	}

	public String getInsuranceStartTimes() {
		return insuranceStartTimes;
	}

	public void setInsuranceStartTimes(String insuranceStartTimes) {
		this.insuranceStartTimes = insuranceStartTimes;
	}

	public String getInsuranceEndTimes() {
		return insuranceEndTimes;
	}

	public void setInsuranceEndTimes(String insuranceEndTimes) {
		this.insuranceEndTimes = insuranceEndTimes;
	}

	public String getFundStartTimes() {
		return fundStartTimes;
	}

	public void setFundStartTimes(String fundStartTimes) {
		this.fundStartTimes = fundStartTimes;
	}

	public String getFundEndTimes() {
		return fundEndTimes;
	}

	public void setFundEndTimes(String fundEndTimes) {
		this.fundEndTimes = fundEndTimes;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Integer getDoorId() {
		return doorId;
	}

	public void setDoorId(Integer doorId) {
		this.doorId = doorId;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}

	public Integer getSystem() {
		return system;
	}

	public void setSystem(Integer system) {
		this.system = system;
	}

	public String getCompany() {
		return company;
	}

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

	public String getJobsName() {
		return jobsName;
	}

	public void setJobsName(String jobsName) {
		this.jobsName = jobsName;
	}

	public Integer getLvl() {
		return lvl;
	}

	public void setLvl(Integer lvl) {
		this.lvl = lvl;
	}

	public String getStarName() {
		return starName;
	}

	public void setStarName(String starName) {
		this.starName = starName;
	}

	public String getEntryTimes() {
		return entryTimes;
	}

	public void setEntryTimes(String entryTimes) {
		this.entryTimes = entryTimes;
	}

	public String getPromotionTimes() {
		return promotionTimes;
	}

	public void setPromotionTimes(String promotionTimes) {
		this.promotionTimes = promotionTimes;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
		if ( this.birthday != null) {
			this.age = getAgeByBirth(this.birthday);
			Calendar cal = Calendar.getInstance();
			cal.setTime(birthday);
			this.month = cal.get(Calendar.MONTH) + 1;
		}
	}

	public String getBirthdays() {
		return birthdays;
	}

	public void setBirthdays(String birthdays) {
		this.birthdays = birthdays;
	}

	public Date getEntryTime() {
		return entryTime;
	}

	public void setEntryTime(Date entryTime) {
		this.entryTime = entryTime;
		if (this.entryTime != null) {
			int wy = getAgeByBirth(this.entryTime);
			this.workingYear = 0 < wy ? 0 : wy;
		}
	}

	public Integer getSex() {
		return sex;
	}

	public void setSex(Integer sex) {
		this.sex = sex;
	}

	public Integer getSon() {
		return son;
	}

	public void setSon(Integer son) {
		this.son = son;
		this.sonGirl = new StringBuffer(this.sonGirl == null ? "/" : this.sonGirl).insert(0, son).toString();
	}

	public Integer getGirl() {
		return girl;
	}

	public void setGirl(Integer girl) {
		this.girl = girl;
		this.sonGirl = new StringBuffer(this.sonGirl == null ? "/" : this.sonGirl).append(girl).toString();
	}

	public Integer getPoliticalOutlook() {
		return politicalOutlook;
	}

	public String getPoliticalOutlookName() {
		if (politicalOutlook != null) {
			if (politicalOutlook == 0) {
				return "群众";
			} else if (politicalOutlook == 1) {
				return "中共预备党员";
			} else if (politicalOutlook == 2) {
				return "中共党员";
			} else if (politicalOutlook == 3) {
				return "致公党党员";
			}
		}
		return "";
	}

	public void setPoliticalOutlook(Integer politicalOutlook) {
		this.politicalOutlook = politicalOutlook;
	}

	public Integer getEducation() {
		return education;
	}

	public String getEducationName() {
		if (education != null) {
			if (education == 0)
				return "高中/中专";
			else if (education == 1)
				return "专科/高职";
			else if (education == 2)
				return "本科";
			else if (education == 3)
				return "研究生";
			else if (education == 4)
				return "硕士";
			else if (education == 5)
				return "博士";

		}

		return "";
	}

	public void setEducation(Integer education) {
		this.education = education;
	}

	public String getSchool() {
		return school;
	}

	public void setSchool(String school) {
		this.school = school;
	}

	public String getMajor() {
		return major;
	}

	public void setMajor(String major) {
		this.major = major;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getPromotionRemarks() {
		return promotionRemarks;
	}

	public void setPromotionRemarks(String promotionRemarks) {
		this.promotionRemarks = promotionRemarks;
	}

	public String getPromotionTime() {
		return promotionTime;
	}

	public void setPromotionTime(String promotionTime) {
		this.promotionTime = promotionTime;
	}

	public String getContractStart() {
		return contractStart;
	}

	public void setContractStart(String contractStart) {
		this.contractStart = contractStart;
		this.contractStartEnd = new StringBuffer(this.contractStartEnd == null ? "~" : this.contractStartEnd)
				.insert(0, contractStart).toString();
	}

	public String getContractEnd() {
		return contractEnd;
	}

	public void setContractEnd(String contractEnd) {
		this.contractEnd = contractEnd;
		this.contractStartEnd = new StringBuffer(this.contractStartEnd == null ? "~" : this.contractStartEnd)
				.append(contractEnd).toString();
	}

	public String getMobile() {
		return mobile;
	}

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

	public String getFixedTel() {
		return fixedTel;
	}

	public void setFixedTel(String fixedTel) {
		this.fixedTel = fixedTel;
	}

	public String getIdCard() {
		return idCard;
	}

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

	public String getCertificationAuthority() {
		return certificationAuthority;
	}

	public void setCertificationAuthority(String certificationAuthority) {
		this.certificationAuthority = certificationAuthority;
	}

	public Integer getResidenceProvince() {
		return residenceProvince;
	}

	public void setResidenceProvince(Integer residenceProvince) {
		this.residenceProvince = residenceProvince;
	}

	public Integer getResidenceCity() {
		return residenceCity;
	}

	public void setResidenceCity(Integer residenceCity) {
		this.residenceCity = residenceCity;
	}

	public Integer getResidenceArea() {
		return residenceArea;
	}

	public void setResidenceArea(Integer residenceArea) {
		this.residenceArea = residenceArea;
	}

	public String getResidenceAddress() {
		return residenceAddress;
	}

	public Integer getNativePlaceProvince() {
		return nativePlaceProvince;
	}

	public void setNativePlaceProvince(Integer nativePlaceProvince) {
		this.nativePlaceProvince = nativePlaceProvince;
	}

	public Integer getNativePlaceCity() {
		return nativePlaceCity;
	}

	public void setNativePlaceCity(Integer nativePlaceCity) {
		this.nativePlaceCity = nativePlaceCity;
	}

	public Integer getNowProvince() {
		return nowProvince;
	}

	public void setNowProvince(Integer nowProvince) {
		this.nowProvince = nowProvince;
	}

	public Integer getNowCity() {
		return nowCity;
	}

	public void setNowCity(Integer nowCity) {
		this.nowCity = nowCity;
	}

	public Integer getNowArea() {
		return nowArea;
	}

	public void setNowArea(Integer nowArea) {
		this.nowArea = nowArea;
	}

	public String getNowAddress() {
		return nowAddress;
	}

	public String getQuitTime() {
		return quitTime;
	}

	public void setQuitTime(String quitTime) {
		this.quitTime = quitTime;
	}

	public Integer getWorkingYear() {
		return workingYear;
	}

	public void setWorkingYear(Integer workingYear) {
		
		this.workingYear = workingYear;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		 this.age = age;
	}
	
	public Integer getMonth() {
		return month;
	}

	public void setMonth(Integer month) {
		 this.month = month;
	}

	public static int getAgeByBirth(Date birthDay) {
		int age = 0;
		Calendar cal = Calendar.getInstance();
		int yearNow = cal.get(Calendar.YEAR); // 当前年份
		int monthNow = cal.get(Calendar.MONTH); // 当前月份
		int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); // 当前日期
		cal.setTime(birthDay);
		int yearBirth = cal.get(Calendar.YEAR);
		int monthBirth = cal.get(Calendar.MONTH);
		int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
		age = yearNow - yearBirth; // 计算整岁数
		if (monthNow <= monthBirth) {
			if (monthNow == monthBirth) {
				if (dayOfMonthNow < dayOfMonthBirth)
					age--;// 当前日期在生日之前，年龄减一
			} else {
				age--;// 当前月份在生日之前，年龄减一
			}
		}
		return age;

	}

	public String getDepName() {
		return depName;
	}

	public void setDepName(String depName) {
		this.depName = depName;
	}

	public String getStatusName() {
		if (this.status != null) {
			if (status == 0) {
				return "实习生";
			} else if (status == 1) {
				return "在职（试用期）";
			} else if (status == 2) {
				return "在职（合同期）";
			} else if (status == 3) {
				return "兼职";
			} else if (status == 4) {
				return "已离职";
			}
		}
		return "";
	}

	public String getSystemName() {
		if (this.system != null) {
			if (system == 0) {
				return "管理系统";
			} else if (system == 1) {
				return "营销系统";
			} else if (system == 2) {
				return "技术系统";
			}
		}
		return "";
	}

	public String getLvlName() {
		// 级别 0员工1主管2经理3总经理4总监5副总6总裁7董事长
		if (this.lvl != null) {
			if (lvl == 0) {
				return "员工";
			} else if (lvl == 1) {
				return "主管";
			} else if (lvl == 2) {
				return "经理";
			} else if (lvl == 3) {
				return "总经理";
			} else if (lvl == 4) {
				return "总监";
			} else if (lvl == 5) {
				return "副总";
			} else if (lvl == 6) {
				return "总裁";
			} else if (lvl == 7) {
				return "董事长";
			}
		}
		return "";
	}

	public Integer getMarriage() {
		return marriage;
	}

	public String getMarriageName() {
		if (marriage != null) {
			if (marriage == 0) {
				return "未婚";
			} else if (marriage == 1) {
				return "已婚";
			} else if (marriage == 2) {
				return "离异";
			}
		}
		return "";
	}

	public void setMarriage(Integer marriage) {
		this.marriage = marriage;
	}

	public String getEmergencyContact() {
		return emergencyContact;
	}

	public void setEmergencyContact(String emergencyContact) {
		this.emergencyContact = emergencyContact;
	}

	public String getEmergencyMobile() {
		return emergencyMobile;
	}

	public void setEmergencyMobile(String emergencyMobile) {
		this.emergencyMobile = emergencyMobile;
	}

	public String getResidenceName() {
		String str = "";
		if (rpName != null)
			str = str + rpName.trim() + "省";
		if (rcName != null)
			str = str + rcName.trim();
		if (raName != null)
			str = str + raName.trim();
		if (residenceAddress != null)
			str = str + residenceAddress;
		return str;
	}

	public String getNativePlaceName() {
		String str = "";
		if (nppName != null)
			str = str + nppName.trim() + "省";
		if (npcName != null)
			str = str + npcName.trim();
		return str;
	}

	public String getNowName() {
		String str = "";
		if (npName != null)
			str = str + npName.trim() + "省";
		if (ncName != null)
			str = str + ncName.trim();
		if (naName != null)
			str = str + naName.trim();
		if (nowAddress != null)
			str = str + nowAddress;
		return str;
	}

	public String getJobNature() {
		return jobNature;
	}

	public void setJobNature(String jobNature) {
		this.jobNature = jobNature;
	}

	public String getJobNatureRemarks() {
		return jobNatureRemarks;
	}

	public void setJobNatureRemarks(String jobNatureRemarks) {
		this.jobNatureRemarks = jobNatureRemarks;
	}

	public Integer getEmployeeId() {
		return employeeId;
	}

	public void setEmployeeId(Integer employeeId) {
		this.employeeId = employeeId;
	}

}
