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


import com.google.common.collect.Lists;
import com.jeeplus.common.persistence.DataEntity;
import com.jeeplus.common.utils.Collections3;
import com.jeeplus.common.utils.StringUtils;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.modules.sys.entity.Area;
import com.jeeplus.modules.sys.entity.Office;
import com.jeeplus.modules.sys.entity.User;
import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
import com.jeeplus.modules.workproject.entity.WorkProject;
import com.jeeplus.modules.workprojectcompletion.entity.WorkProjectCompletionInfo;

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

/**
 * 全过程管理Entity
 * @author mapengbo
 * @version 2017-10-24
 */
public class WorkFullManage extends DataEntity<WorkFullManage> {
	
	private static final long serialVersionUID = 1L;
	private String contractId;		// 合同编号
	private String fullProjectNumber;		// 项目编号
	private String fullProjectSource;		// 项目来源
	private String fullProjectName;		// 项目名称
	private String fullIndustryType;		// 行业分类
	private String fullStructureType;		// 结构类型
	private String fullInvestMoney;		// 投资金额
	private String clientId;		// 委托方
	private String buildId;		// 建设方s
	private String fullProjectType;		// 项目分类
//	private String fullProjectAddress;		// 工程所在地
	private String fullProjectProperty;		// 工程性质
	private String fullProjectScale;		// 工程规模
	private String fullCountUnit;		// 计量单位
	private String fullProjectFeature;		// 项目特性
	private Office hostCompany;		// 主办公司及部门
	private Office followCompany;		// 协办公司及部门
	private Date talkStartTime;		// 洽谈开始时间
	private Date talkEndTime;		// 洽谈结束时间
	private String askPayMode;		// 咨询费用支付方式
	private String standardExplain;		// 标准说明
	private String fixedPrice;		// 固定价
	private String clientRequire;		// 业主要求
	private String hostMaster;	//主办负责人编号
	private String hostMasterName;	//主办负责人名称
	private String followMaster;	//协办负责人编号
	private String followMasterName;	//协办负责人名称
	private String hostMember;		//主办项目成员编号
	private String hostMemberName;	//主办项目成员名称
	private String followMember;	//协办项目成员编号
	private String followMemberName; //协办项目成员
	private String ciName; //委托方名称
	private String fullProjectStatus; //项目状态
	private WorkFullConstruct constructId; //施工单位编号
	private WorkFullSurvey surveyId;  //监理单位编号
	private WorkFullDesign designId; //设计单位编号
	private WorkContractInfo workContractInfo; //合同信息
	private WorkClientInfo workClientInfo;
	private WorkClientInfo workBuildInfo;
	private String queryCon; //查询条件
	private String companyId; //公司编号
	private String officeId;
	private String workVisaCount;//签证单数量
	private String workAskCheckPriceCount;//询价与核价数量
	private String query2;
	private WorkProject workProject;//总项目外键
	private Area area;		// 地区Id
	private WorkProjectCompletionInfo workProjectCompletion;
	private String masterId;
	private String contractName;
	private String ext;
	private String isTotal;
	private String totalFullName;
	private String psort;//行业大分类
	private String ssort; //行业详细分类
	private String totalFullId; //父节点
	private String totalFullNumber;
	private String totalFullIds; //所有父节点
	private String commonFlag; //标识同一个总合同
	private String isTotalName; //标识当前项目级别
	private Integer sort = 30;
	private String projectId;
	private List<WorkClientAttachment> workAttachments = Lists.newArrayList();

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

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

	private WorkFullRecord workFullRecord; //项目归档实体类

	public WorkProject getWorkProject() {
		return workProject;
	}

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

	//附件列表
//	private List<WorkClientAttachment> workClientAttachmentList = Lists.newArrayList();
	// 主办公司负责人
	private List<User> hostMasterList = new ArrayList<User>();
	// 协办公司负责人
	private List<User> followMasterList = new ArrayList<>();
	// 主办公司项目成员
	private List<User> hostMemberList = new ArrayList<>();
	// 协办公司项目成员
	private List<User> followMemberList = new ArrayList<>();
	public WorkFullManage() {
		super();
	}

	public String getPsort() {
		return psort;
	}

	public void setPsort(String psort) {
		this.psort = psort;
	}

	public String getSsort() {
		return ssort;
	}

	public void setSsort(String ssort) {
		this.ssort = ssort;
	}

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

	public String getWorkAskCheckPriceCount() {
		return workAskCheckPriceCount;
	}

	public void setWorkAskCheckPriceCount(String workAskCheckPriceCount) {
		this.workAskCheckPriceCount = workAskCheckPriceCount;
	}

	public String getWorkVisaCount() {
		return workVisaCount;
	}

	public void setWorkVisaCount(String workVisaCount) {
		this.workVisaCount = workVisaCount;
	}

	public String getExt() {
		return ext;
	}

	public void setExt(String ext) {
		this.ext = ext;
	}

	public String getContractName() {
		return contractName;
	}

	public void setContractName(String contractName) {
		this.contractName = contractName;
	}

	@ExcelField(title="合同编号", align=2, sort=7)
	public String getContractId() {
		return contractId;
	}

	public void setContractId(String contractId) {
		this.contractId = contractId;
	}
	
	@ExcelField(title="项目编号", align=2, sort=8)
	public String getFullProjectNumber() {
		return fullProjectNumber;
	}

	public void setFullProjectNumber(String fullProjectNumber) {
		this.fullProjectNumber = fullProjectNumber;
	}
	
	@ExcelField(title="项目来源", align=2, sort=9)
	public String getFullProjectSource() {
		return fullProjectSource;
	}

	public void setFullProjectSource(String fullProjectSource) {
		this.fullProjectSource = fullProjectSource;
	}
	
	@ExcelField(title="项目名称", align=2, sort=10)
	public String getFullProjectName() {
		return fullProjectName;
	}

	public void setFullProjectName(String fullProjectName) {
		this.fullProjectName = fullProjectName;
	}
	
	@ExcelField(title="行业分类", dictType="full_industry_type", align=2, sort=11)
	public String getFullIndustryType() {
		return fullIndustryType;
	}

	public void setFullIndustryType(String fullIndustryType) {
		this.fullIndustryType = fullIndustryType;
	}
	
	@ExcelField(title="结构类型", dictType="full_structure_type", align=2, sort=12)
	public String getFullStructureType() {
		return fullStructureType;
	}

	public void setFullStructureType(String fullStructureType) {
		this.fullStructureType = fullStructureType;
	}
	
	@ExcelField(title="投资金额", align=2, sort=13)
	public String getFullInvestMoney() {
		return fullInvestMoney;
	}

	public void setFullInvestMoney(String fullInvestMoney) {
		this.fullInvestMoney = fullInvestMoney;
	}
	
	@ExcelField(title="委托方", align=2, sort=14)
	public String getClientId() {
		return clientId;
	}

	public void setClientId(String clientId) {
		this.clientId = clientId;
	}
	
	@ExcelField(title="建设方", align=2, sort=15)
	public String getBuildId() {
		return buildId;
	}

	public void setBuildId(String buildId) {
		this.buildId = buildId;
	}
	
	@ExcelField(title="项目分类", align=2, sort=16)
	public String getFullProjectType() {
		return fullProjectType;
	}

	public void setFullProjectType(String fullProjectType) {
		this.fullProjectType = fullProjectType;
	}
	
//	@ExcelField(title="工程所在地", align=2, sort=17)
//	public String getFullProjectAddress() {
//		return fullProjectAddress;
//	}
//
//	public void setFullProjectAddress(String fullProjectAddress) {
//		this.fullProjectAddress = fullProjectAddress;
//	}
	
	@ExcelField(title="工程性质", align=2, sort=18)
	public String getFullProjectProperty() {
		return fullProjectProperty;
	}

	public void setFullProjectProperty(String fullProjectProperty) {
		this.fullProjectProperty = fullProjectProperty;
	}
	
	@ExcelField(title="工程规模", align=2, sort=19)
	public String getFullProjectScale() {
		return fullProjectScale;
	}

	public void setFullProjectScale(String fullProjectScale) {
		this.fullProjectScale = fullProjectScale;
	}
	
	@ExcelField(title="计量单位", dictType="full_count_unit", align=2, sort=20)
	public String getFullCountUnit() {
		return fullCountUnit;
	}

	public void setFullCountUnit(String fullCountUnit) {
		this.fullCountUnit = fullCountUnit;
	}
	
	@ExcelField(title="项目特性", align=2, sort=21)
	public String getFullProjectFeature() {
		return fullProjectFeature;
	}

	public void setFullProjectFeature(String fullProjectFeature) {
		this.fullProjectFeature = fullProjectFeature;
	}

	public Office getHostCompany() {
		return hostCompany;
	}

	public void setHostCompany(Office hostCompany) {
		this.hostCompany = hostCompany;
	}

	public Office getFollowCompany() {
		return followCompany;
	}

	public void setFollowCompany(Office followCompany) {
		this.followCompany = followCompany;
	}

	public List<User> getHostMasterList() {
		return hostMasterList;
	}

	public void setHostMasterList(List<User> hostMasterList) {
		this.hostMasterList = hostMasterList;
	}

	public List<User> getFollowMasterList() {
		return followMasterList;
	}

	public void setFollowMasterList(List<User> followMasterList) {
		this.followMasterList = followMasterList;
	}

	public List<User> getHostMemberList() {
		return hostMemberList;
	}

	public void setHostMemberList(List<User> hostMemberList) {
		this.hostMemberList = hostMemberList;
	}

	public List<User> getFollowMemberList() {
		return followMemberList;
	}

	public void setFollowMemberList(List<User> followMemberList) {
		this.followMemberList = followMemberList;
	}

	@ExcelField(title="洽谈开始时间", align=2, sort=28)
	public Date getTalkStartTime() {
		return talkStartTime;
	}

	public void setTalkStartTime(Date talkStartTime) {
		this.talkStartTime = talkStartTime;
	}
	
	@ExcelField(title="洽谈结束时间", align=2, sort=29)
	public Date getTalkEndTime() {
		return talkEndTime;
	}

	public void setTalkEndTime(Date talkEndTime) {
		this.talkEndTime = talkEndTime;
	}
	
	@ExcelField(title="咨询费用支付方式", dictType="ask_pay_mode", align=2, sort=30)
	public String getAskPayMode() {
		return askPayMode;
	}

	public void setAskPayMode(String askPayMode) {
		this.askPayMode = askPayMode;
	}
	
	@ExcelField(title="标准说明", align=2, sort=31)
	public String getStandardExplain() {
		return standardExplain;
	}

	public void setStandardExplain(String standardExplain) {
		this.standardExplain = standardExplain;
	}
	
	@ExcelField(title="固定价", align=2, sort=32)
	public String getFixedPrice() {
		return fixedPrice;
	}

	public void setFixedPrice(String fixedPrice) {
		this.fixedPrice = fixedPrice;
	}
	
	@ExcelField(title="业主要求", align=2, sort=33)
	public String getClientRequire() {
		return clientRequire;
	}

	public void setClientRequire(String clientRequire) {
		this.clientRequire = clientRequire;
	}

	public WorkFullConstruct getConstructId() {
		return constructId;
	}

	public void setConstructId(WorkFullConstruct constructId) {
		this.constructId = constructId;
	}

	public WorkFullSurvey getSurveyId() {
		return surveyId;
	}

	public void setSurveyId(WorkFullSurvey surveyId) {
		this.surveyId = surveyId;
	}

	public WorkFullDesign getDesignId() {
		return designId;
	}

	public void setDesignId(WorkFullDesign designId) {
		this.designId = designId;
	}

	public String getHostMaster() {
		return hostMaster;
	}

	public void setHostMaster(String hostMaster) {
		this.hostMaster = hostMaster;
	}

	public String getFollowMaster() {
		return followMaster;
	}

	public void setFollowMaster(String followMaster) {
		this.followMaster = followMaster;
	}

	public String getHostMember() {
		return hostMember;
	}

	public void setHostMember(String hostMember) {
		this.hostMember = hostMember;
	}

	public String getFollowMember() {
		return followMember;
	}

	public void setFollowMember(String followMember) {
		this.followMember = followMember;
	}

	public WorkContractInfo getWorkContractInfo() {
		return workContractInfo;
	}

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

	public String getHostMasterName() {
		return hostMasterName;
	}

	public void setHostMasterName(String hostMasterName) {
		this.hostMasterName = hostMasterName;
	}

	public String getFollowMasterName() {
		return followMasterName;
	}

	public void setFollowMasterName(String followMasterName) {
		this.followMasterName = followMasterName;
	}

	public String getHostMemberName() {
		return hostMemberName;
	}

	public void setHostMemberName(String hostMemberName) {
		this.hostMemberName = hostMemberName;
	}

	public String getFollowMemberName() {
		return followMemberName;
	}

	public void setFollowMemberName(String followMemberName) {
		this.followMemberName = followMemberName;
	}

	public WorkClientInfo getWorkClientInfo() {
		return workClientInfo;
	}

	public void setWorkClientInfo(WorkClientInfo workClientInfo) {
		this.workClientInfo = workClientInfo;
	}

	public WorkClientInfo getWorkBuildInfo() {
		return workBuildInfo;
	}

	public void setWorkBuildInfo(WorkClientInfo workBuildInfo) {
		this.workBuildInfo = workBuildInfo;
	}

	public String getCiName() {
		return ciName;
	}

	public void setCiName(String ciName) {
		this.ciName = ciName;
	}

	public String getFullProjectStatus() {
		return fullProjectStatus;
	}

	public void setFullProjectStatus(String fullProjectStatus) {
		this.fullProjectStatus = fullProjectStatus;
	}

	public String getCompanyId() {
		return companyId;
	}

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

	@ExcelField(title="主办公司项目负责人", align=2, sort=13)
	public String getHostMasterIds() {
		return Collections3.extractToString(hostMasterList, "id", ",") ;
	}

	public void setHostMasterIds(String hostMaster) {
		this.hostMasterList = Lists.newArrayList();
		for (String id : StringUtils.split(hostMaster, ",")){
			this.hostMasterList.add(new User(id));
		}
	}

	public String getQueryCon() {
		return queryCon;
	}

	public void setQueryCon(String queryCon) {
		this.queryCon = queryCon;
	}

	public String getQuery2() {
		return query2;
	}

	public void setQuery2(String query2) {
		this.query2 = query2;
	}

//	public List<WorkClientAttachment> getWorkClientAttachmentList() {
//		return workClientAttachmentList;
//	}
//
//	public void setWorkClientAttachmentList(List<WorkClientAttachment> workClientAttachmentList) {
//		this.workClientAttachmentList = workClientAttachmentList;
//	}

	public WorkFullRecord getWorkFullRecord() {
		return workFullRecord;
	}

	public void setWorkFullRecord(WorkFullRecord workFullRecord) {
		this.workFullRecord = workFullRecord;
	}

	public String getOfficeId() {
		return officeId;
	}

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

	/**
	 * 主办公司项目负责人
	 * @return
	 */
	public String getHostMasterNames() {
		return Collections3.extractToString(hostMasterList, "name", ",") ;
	}
	/**
	 * 主办公司项目负责人
	 * @return
	 */
	public void setHostMasterNames(String hostMaster) {
		// 什么也不做
	}

	@ExcelField(title="协办公司项目负责人", align=2, sort=13)
	public String getFollowMasterIds() {
		return Collections3.extractToString(followMasterList, "id", ",") ;
	}

	public void setFollowMasterIds(String followMaster) {
		this.followMasterList = Lists.newArrayList();
		for (String id : StringUtils.split(followMaster, ",")){
			this.followMasterList.add(new User(id));
		}
	}
	/**
	 * 协办公司项目负责人
	 * @return
	 */
	public String getFollowMasterNames() {
		return Collections3.extractToString(followMasterList, "name", ",") ;
	}
	/**
	 * 协办公司项目负责人
	 * @return
	 */
	public void setFollowMasterNames(String followMaster) {
		// 什么也不做
	}

	@ExcelField(title="主办公司项目成员", align=2, sort=13)
	public String getHostMemberIds() {
		return Collections3.extractToString(hostMemberList, "id", ",") ;
	}

	public void setHostMemberIds(String hostMember) {
		this.hostMemberList = Lists.newArrayList();
		for (String id : StringUtils.split(hostMember, ",")){
			this.hostMemberList.add(new User(id));
		}
	}
	/**
	 * 主办公司项目负责人
	 * @return
	 */
	public String getHostMemberNames() {
		return Collections3.extractToString(hostMemberList, "name", ",") ;
	}
	/**
	 * 主办公司项目负责人
	 * @return
	 */
	public void setHostMemberNames(String hostMember) {
		// 什么也不做
	}


	@ExcelField(title="协办公司项目成员", align=2, sort=13)
	public String getFollowMemberIds() {
		return Collections3.extractToString(followMemberList, "id", ",") ;
	}

	public void setFollowMemberIds(String followMember) {
		this.followMemberList = Lists.newArrayList();
		for (String id : StringUtils.split(followMember, ",")){
			this.followMemberList.add(new User(id));
		}
	}
	/**
	 * 主办公司项目负责人
	 * @return
	 */
	public String getFollowMemberNames() {
		return Collections3.extractToString(followMemberList, "name", ",") ;
	}
	/**
	 * 主办公司项目负责人
	 * @return
	 */
	public void setFollowMemberNames(String followMember) {
		// 什么也不做
	}

	public Area getArea() {
		return area;
	}

	public void setArea(Area area) {
		this.area = area;
	}

	public WorkProjectCompletionInfo getWorkProjectCompletion() {
		return workProjectCompletion;
	}

	public void setWorkProjectCompletion(WorkProjectCompletionInfo workProjectCompletion) {
		this.workProjectCompletion = workProjectCompletion;
	}

	public String getMasterId() {
		return masterId;
	}

	public void setMasterId(String masterId) {
		this.masterId = masterId;
	}

	public String getIsTotal() {
		return isTotal;
	}

	public void setIsTotal(String isTotal) {
		this.isTotal = isTotal;
	}

	public String getTotalFullName() {
		return totalFullName;
	}

	public void setTotalFullName(String totalFullName) {
		this.totalFullName = totalFullName;
	}

	public String getTotalFullId() {
		return totalFullId;
	}

	public void setTotalFullId(String totalFullId) {
		this.totalFullId = totalFullId;
	}

	public String getTotalFullNumber() {
		return totalFullNumber;
	}

	public void setTotalFullNumber(String totalFullNumber) {
		this.totalFullNumber = totalFullNumber;
	}

	public String getTotalFullIds() {
		return totalFullIds;
	}

	public void setTotalFullIds(String totalFullIds) {
		this.totalFullIds = totalFullIds;
	}

	public String getCommonFlag() {
		return commonFlag;
	}

	public void setCommonFlag(String commonFlag) {
		this.commonFlag = commonFlag;
	}

	public String getIsTotalName() {
		return isTotalName;
	}

	public void setIsTotalName(String isTotalName) {
		this.isTotalName = isTotalName;
	}

	public Integer getSort() {
		return sort;
	}

	public void setSort(Integer sort) {
		this.sort = sort;
	}

	public String getProjectId() {
		return projectId;
	}

	public void setProjectId(String projectId) {
		this.projectId = projectId;
	}
}