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

import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.common.collect.Lists;
import com.jeeplus.common.persistence.ActEntity;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.modules.sys.entity.Office;
import com.jeeplus.modules.workbidingproject.entity.WorkBidingProject;
import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
import com.jeeplus.modules.workengineeringproject.entity.WorkEngineeringProject;
import com.jeeplus.modules.workproject.entity.WorkProject;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

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

/**
 * 项目归档Entity
 * @author mapengbo
 * @version 2017-11-01
 */
public class WorkFullRecord extends ActEntity<WorkFullRecord> {
	
	private static final long serialVersionUID = 1L;
	private String recordName;		// 案卷名称
	private String recordNumber;		// 案卷编号
	private String backRecordNumber;		// 归档号
	private String recordLibNumber;		// 所属卷库
	private String backRecordYear;		// 归卷年代
	private Office backRecordDept;		// 归卷部门
	private String compleOrganization;		// 编制机构
	private String retentionPeriod;		// 保管期限
	private Date startTime;		// 开始日期
	private Date endTime;		// 结束日期
	private String recordSecretLevel;		// 案卷密级
	private String fondsNumber;		// 全宗号
	private String listsNumber;		// 目录号
	private String recordProNumber;		// 档案馆号
	private String strongboxNumber;		// 保险箱号
	private String microNumber;		// 缩微号
	private String ekkoBstypOne;		// 凭证编号开始
	private String ekkoBstypTwo;		// 凭证编号结尾
	private String reportNumber;		// 报告号
	private String pageNumber;		// 页数
	private String manageUser;		// 管理员
	private String ekkoType;		// 凭证类别
	private WorkFullManage workFullManage; //项目登记的信息
	private WorkEngineeringProject workEngineeringProject; //项目登记的信息
	private WorkContractInfo workContractInfo; //项目登记的信息
	private WorkBidingProject workBidingProject;  //招标项目信息
	private WorkProject workProject;//总项目
	private String companyId; //公司编号
	private String officeId; //公司编号
	private String backRecordStatus; //归档状态
	private String processInstanceId; //流程id
	private String type;
	private String manageId; //管理员编号
	private List<WorkClientAttachment> workAttachments = Lists.newArrayList();

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

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

	public WorkProject getWorkProject() {
		return workProject;
	}

	public void setWorkProject(WorkProject workProject) {
		this.workProject = workProject;
	}

	public WorkBidingProject getWorkBidingProject() {
		return workBidingProject;
	}

	public void setWorkBidingProject(WorkBidingProject workBidingProject) {
		this.workBidingProject = workBidingProject;
	}

	// 流程任务
	private Task task;
	// 运行中的流程实例
	private ProcessInstance processInstance;
	// 历史的流程实例
	private HistoricProcessInstance historicProcessInstance;
	// 流程定义
	private ProcessDefinition processDefinition;

	public WorkFullRecord() {
		super();
	}

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

	@ExcelField(title="案卷名称", align=2, sort=7)
	public String getRecordName() {
		return recordName;
	}

	public void setRecordName(String recordName) {
		this.recordName = recordName;
	}
	
	@ExcelField(title="案卷编号", align=2, sort=8)
	public String getRecordNumber() {
		return recordNumber;
	}

	public void setRecordNumber(String recordNumber) {
		this.recordNumber = recordNumber;
	}
	
	@ExcelField(title="归档号", align=2, sort=9)
	public String getBackRecordNumber() {
		return backRecordNumber;
	}

	public void setBackRecordNumber(String backRecordNumber) {
		this.backRecordNumber = backRecordNumber;
	}
	
	@ExcelField(title="所属卷库", dictType="record_lib_number", align=2, sort=10)
	public String getRecordLibNumber() {
		return recordLibNumber;
	}

	public void setRecordLibNumber(String recordLibNumber) {
		this.recordLibNumber = recordLibNumber;
	}
	
	@ExcelField(title="归卷年代", align=2, sort=11)
	public String getBackRecordYear() {
		return backRecordYear;
	}

	public void setBackRecordYear(String backRecordYear) {
		this.backRecordYear = backRecordYear;
	}



	@ExcelField(title="归卷部门", fieldType=Office.class, value="backRecordDept.name", align=2, sort=12)
	public Office getBackRecordDept() {
		return backRecordDept;
	}

	public void setBackRecordDept(Office backRecordDept) {
		this.backRecordDept = backRecordDept;
	}
	
	@ExcelField(title="编制机构", align=2, sort=13)
	public String getCompleOrganization() {
		return compleOrganization;
	}

	public void setCompleOrganization(String compleOrganization) {
		this.compleOrganization = compleOrganization;
	}
	
	@ExcelField(title="保管期限", dictType="retention_period", align=2, sort=14)
	public String getRetentionPeriod() {
		return retentionPeriod;
	}

	public void setRetentionPeriod(String retentionPeriod) {
		this.retentionPeriod = retentionPeriod;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelField(title="开始日期", align=2, sort=15)
	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=16)
	public Date getEndTime() {
		return endTime;
	}

	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}
	
	@ExcelField(title="案卷密级", dictType="record_secret_level", align=2, sort=17)
	public String getRecordSecretLevel() {
		return recordSecretLevel;
	}

	public void setRecordSecretLevel(String recordSecretLevel) {
		this.recordSecretLevel = recordSecretLevel;
	}
	
	@ExcelField(title="全宗号", align=2, sort=18)
	public String getFondsNumber() {
		return fondsNumber;
	}

	public void setFondsNumber(String fondsNumber) {
		this.fondsNumber = fondsNumber;
	}
	
	@ExcelField(title="目录号", align=2, sort=19)
	public String getListsNumber() {
		return listsNumber;
	}

	public void setListsNumber(String listsNumber) {
		this.listsNumber = listsNumber;
	}
	
	@ExcelField(title="档案馆号", align=2, sort=20)
	public String getRecordProNumber() {
		return recordProNumber;
	}

	public void setRecordProNumber(String recordProNumber) {
		this.recordProNumber = recordProNumber;
	}
	
	@ExcelField(title="保险箱号", align=2, sort=21)
	public String getStrongboxNumber() {
		return strongboxNumber;
	}

	public void setStrongboxNumber(String strongboxNumber) {
		this.strongboxNumber = strongboxNumber;
	}
	
	@ExcelField(title="缩微号", align=2, sort=22)
	public String getMicroNumber() {
		return microNumber;
	}

	public void setMicroNumber(String microNumber) {
		this.microNumber = microNumber;
	}
	
	@ExcelField(title="凭证编号开始", align=2, sort=23)
	public String getEkkoBstypOne() {
		return ekkoBstypOne;
	}

	public void setEkkoBstypOne(String ekkoBstypOne) {
		this.ekkoBstypOne = ekkoBstypOne;
	}
	
	@ExcelField(title="凭证编号结尾", align=2, sort=24)
	public String getEkkoBstypTwo() {
		return ekkoBstypTwo;
	}

	public void setEkkoBstypTwo(String ekkoBstypTwo) {
		this.ekkoBstypTwo = ekkoBstypTwo;
	}
	
	@ExcelField(title="报告号", align=2, sort=25)
	public String getReportNumber() {
		return reportNumber;
	}

	public void setReportNumber(String reportNumber) {
		this.reportNumber = reportNumber;
	}
	
	@ExcelField(title="页数", align=2, sort=26)
	public String getPageNumber() {
		return pageNumber;
	}

	public void setPageNumber(String pageNumber) {
		this.pageNumber = pageNumber;
	}
	
	@ExcelField(title="管理员", align=2, sort=27)
	public String getManageUser() {
		return manageUser;
	}

	public void setManageUser(String manageUser) {
		this.manageUser = manageUser;
	}
	
	@ExcelField(title="凭证类别", dictType="ekko_type", align=2, sort=28)
	public String getEkkoType() {
		return ekkoType;
	}

	public void setEkkoType(String ekkoType) {
		this.ekkoType = ekkoType;
	}

	public String getManageId() {
		return manageId;
	}

	public void setManageId(String manageId) {
		this.manageId = manageId;
	}

	public WorkFullManage getWorkFullManage() {
		return workFullManage;
	}

	public void setWorkFullManage(WorkFullManage workFullManage) {
		this.workFullManage = workFullManage;
	}

	public WorkEngineeringProject getWorkEngineeringProject() {
		return workEngineeringProject;
	}

	public void setWorkEngineeringProject(WorkEngineeringProject workEngineeringProject) {
		this.workEngineeringProject = workEngineeringProject;
	}

	public String getCompanyId() {
		return companyId;
	}

	public void setCompanyId(String companyId) {
		this.companyId = companyId;
	}

	public String getBackRecordStatus() {
		return backRecordStatus;
	}

	public void setBackRecordStatus(String backRecordStatus) {
		this.backRecordStatus = backRecordStatus;
	}

	public String getProcessInstanceId() {
		return processInstanceId;
	}

	public void setProcessInstanceId(String processInstanceId) {
		this.processInstanceId = processInstanceId;
	}

	public Task getTask() {
		return task;
	}

	public void setTask(Task task) {
		this.task = task;
	}

	public ProcessInstance getProcessInstance() {
		return processInstance;
	}

	public void setProcessInstance(ProcessInstance processInstance) {
		this.processInstance = processInstance;
	}

	public HistoricProcessInstance getHistoricProcessInstance() {
		return historicProcessInstance;
	}

	public void setHistoricProcessInstance(HistoricProcessInstance historicProcessInstance) {
		this.historicProcessInstance = historicProcessInstance;
	}

	public ProcessDefinition getProcessDefinition() {
		return processDefinition;
	}

	public void setProcessDefinition(ProcessDefinition processDefinition) {
		this.processDefinition = processDefinition;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public WorkContractInfo getWorkContractInfo() {
		return workContractInfo;
	}

	public void setWorkContractInfo(WorkContractInfo workContractInfo) {
		this.workContractInfo = workContractInfo;
	}

	public String getOfficeId() {
		return officeId;
	}

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