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

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

import com.fasterxml.jackson.annotation.JsonFormat;

import com.google.common.collect.Lists;
import com.jeeplus.common.persistence.ActEntity;
import com.jeeplus.common.persistence.DataEntity;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
import com.jeeplus.modules.workstaff.entity.WorkStaffBasicInfo;

/**
 * 请假申请Entity
 * @author ssrh
 * @version 2018-09-10
 */
public class LeaveApply extends ActEntity<LeaveApply> {
	
	private static final long serialVersionUID = 1L;
	private String officeId;		// 所属部门
	private String companyId;		// 所属公司
	private String branchOffice;		// 所属分公司
	private String staffId;		// 人员档案id
	private Date startTime;		// 开始时间
	private Date endTime;		// 结束时间
	private String startType;		// 开始类型
	private String endType;		// 结束类型
	private String longTime;		// 请假天数
	private String status;		// 申请状态
	private String processInstanceId;		// 流程实例id
	private String sellStatus;		// 销假状态
	private Date applyTime;		// 申请时间
	private String no;		// 请假编号
	private String reason;		// 请假原因
	private Date beginApplyTime;		// 开始 申请时间
	private Date endApplyTime;		// 结束 申请时间
	private WorkStaffBasicInfo basicInfo;
	private List<LeaveDetail> leaveDetailList;
	private List<LeaveDetail> hisLeaveDetailList;
	private String home;
	private String applyer;//请假人
	private Date backTime;//销假时间
	private String contrast;//销假对比
	private String sumDays;//累计天数
	private String counts;//累计次数
	private String state;//重置状态0未1已
	private String backStartType;		// 销假开始类型
	private List<WorkClientAttachment> workAttachments = Lists.newArrayList();

	public List<WorkClientAttachment> getWorkAttachments() {
		return workAttachments;
	}

	public void setWorkAttachments(List<WorkClientAttachment> workAttachments) {
		this.workAttachments = workAttachments;
	}

	public String getBackStartType() {
		return backStartType;
	}

	public void setBackStartType(String backStartType) {
		this.backStartType = backStartType;
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

	public String getSumDays() {
		return sumDays;
	}

	public void setSumDays(String sumDays) {
		this.sumDays = sumDays;
	}

	public String getCounts() {
		return counts;
	}

	public void setCounts(String counts) {
		this.counts = counts;
	}

	public Date getBackTime() {
		return backTime;
	}

	public void setBackTime(Date backTime) {
		this.backTime = backTime;
	}

	public String getContrast() {
		return contrast;
	}

	public void setContrast(String contrast) {
		this.contrast = contrast;
	}

	public String getApplyer() {
		return applyer;
	}

	public void setApplyer(String applyer) {
		this.applyer = applyer;
	}

	public String getHome() {
		return home;
	}

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

	public List<LeaveDetail> getHisLeaveDetailList() {
		return hisLeaveDetailList;
	}

	public void setHisLeaveDetailList(List<LeaveDetail> hisLeaveDetailList) {
		this.hisLeaveDetailList = hisLeaveDetailList;
	}

	public LeaveApply() {
		super();
	}

	public WorkStaffBasicInfo getBasicInfo() {
		return basicInfo;
	}

	public void setBasicInfo(WorkStaffBasicInfo basicInfo) {
		this.basicInfo = basicInfo;
	}

	public List<LeaveDetail> getLeaveDetailList() {
		return leaveDetailList;
	}

	public void setLeaveDetailList(List<LeaveDetail> leaveDetailList) {
		this.leaveDetailList = leaveDetailList;
	}

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

	@ExcelField(title="所属部门", align=2, sort=7)
	public String getOfficeId() {
		return officeId;
	}

	public void setOfficeId(String officeId) {
		this.officeId = officeId;
	}
	
	@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 getBranchOffice() {
		return branchOffice;
	}

	public void setBranchOffice(String branchOffice) {
		this.branchOffice = branchOffice;
	}
	
	@ExcelField(title="人员档案id", align=2, sort=10)
	public String getStaffId() {
		return staffId;
	}

	public void setStaffId(String staffId) {
		this.staffId = staffId;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="开始时间", align=2, sort=11)
	public Date getStartTime() {
		return startTime;
	}

	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="结束时间", align=2, sort=12)
	public Date getEndTime() {
		return endTime;
	}

	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}
	
	@ExcelField(title="开始类型", align=2, sort=13)
	public String getStartType() {
		return startType;
	}

	public void setStartType(String startType) {
		this.startType = startType;
	}
	
	@ExcelField(title="结束类型", align=2, sort=14)
	public String getEndType() {
		return endType;
	}

	public void setEndType(String endType) {
		this.endType = endType;
	}
	
	@ExcelField(title="请假天数", align=2, sort=15)
	public String getLongTime() {
		return longTime;
	}

	public void setLongTime(String longTime) {
		this.longTime = longTime;
	}
	
	@ExcelField(title="申请状态", align=2, sort=16)
	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}
	
	@ExcelField(title="流程实例id", align=2, sort=17)
	public String getProcessInstanceId() {
		return processInstanceId;
	}

	public void setProcessInstanceId(String processInstanceId) {
		this.processInstanceId = processInstanceId;
	}
	
	@ExcelField(title="销假状态", align=2, sort=18)
	public String getSellStatus() {
		return sellStatus;
	}

	public void setSellStatus(String sellStatus) {
		this.sellStatus = sellStatus;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="申请时间", align=2, sort=19)
	public Date getApplyTime() {
		return applyTime;
	}

	public void setApplyTime(Date applyTime) {
		this.applyTime = applyTime;
	}
	
	@ExcelField(title="请假编号", align=2, sort=20)
	public String getNo() {
		return no;
	}

	public void setNo(String no) {
		this.no = no;
	}
	
	@ExcelField(title="请假原因", align=2, sort=21)
	public String getReason() {
		return reason;
	}

	public void setReason(String reason) {
		this.reason = reason;
	}
	
	public Date getBeginApplyTime() {
		return beginApplyTime;
	}

	public void setBeginApplyTime(Date beginApplyTime) {
		this.beginApplyTime = beginApplyTime;
	}
	
	public Date getEndApplyTime() {
		return endApplyTime;
	}

	public void setEndApplyTime(Date endApplyTime) {
		this.endApplyTime = endApplyTime;
	}
		
}