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

import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.common.collect.Lists;
import com.jeeplus.core.domain.BaseEntity;

import com.jeeplus.finance.workClientInfo.domain.WorkClientLinkman;

import com.jeeplus.sys.domain.Area;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 项目登记Entity
 * @author ppt
 * @version 2018-05-02
 */
@Data
public class RuralProjectRecordsVo extends BaseEntity {

	private Integer reminderCount; //提醒次数
	private Date approvalTime;	//审核通过时间
	private Date remindTime;	//提醒时间
	private Date paperFilingAuditPassDate;	//A类纸质归档审核时间
	private Date filingBatchAuditPassDate;	//B类纸质归档审核时间
	private Date accomplishDate;	//上报审核时间
	private Date firstAuditDate;	//质量复核首次审核通过时间
	private String hiatus;	//短期/永久（0:短期，1:永久）
	private String pmdrCompanyId;
	private String pmdrCreateBy;
	private String pmdrReportId; //资料缺失说明所需
	private String noArchivedDays; //电子未归档天数
	private String paperNoArchivedDays; //纸质未归档天数
	private String twoAuditPassDate; //签发审批通过日期

	private static final long serialVersionUID = 1L;
	@NotNull(message = "合同信息不能为空")
	private WorkContractInfoVo workContractInfo;		// 合同id
	private String projectId;		// 项目编号
	@NotBlank(message = "项目名称不能为空")
	private String projectName;		// 项目名称
	private String scaleType;		// 规模类型
	private String scaleUnit;		// 规模单位
	private Double scaleQuantity;		// 规模数量
	private Area area;		// 项目所在地
	private String projectSite;		// 建设地点
	private String province;  //项目所在省
	private String city;  //项目所在市
	private String county;//项目所在区
	private String projectStructure;   //工程结构
	private String onGroundNum;    //地上层数
	private String underGroundNum;    //地下层数
	private String buildingScale;    //建筑规模
	private String measuringUnit;     //规模单位
	private String projectUse;        //工程用途
	private Double installFees;      //安装造价
	private Double buildingFees;      //土建造价
	private Double buildingPercent;    //土建百分比
	private Double installPercent;     //安装百分比
	private Double unitFees;     //单位造价
	private Double buildingUnitFees;  //土建单位造价
	private Double installUnitFees;    //安装单位造价
	private Double totalFees;        //总合同额
	private Double estimateTotalFees;  //预估总投资额

//	private ProjectReportData reportData;//报告

	private String projectReportNumber; //报告号
	private String recodeNum; //归档申请编号

	private Integer projectReportStatus; //报告状态
	private Integer projectReportStatusTwo; //报告流程2状态
	private Integer projectReportRecordStatus; //归档状态
	private Integer defectRecordStatus; //归档资料缺失说明状态
	private String pmdrProcessInstanceId; //归档资料缺失说明流程id
	private String pmdrId; //归档资料缺失说明id
	private Integer projectRecordStatus; //归档状态(向目标)
	private Integer overRecordStatus; //超期状态（电子归档）（0：未超期，1：已超期）(纸质归档)
	private Integer downProjectReportRecordStatus; //线下归档状态
	private String downArchiveStatus; //线下归档状态

	private String prrProcessInstanceId; //线上归档流程号
	private String prrdProcessInstanceId; //线下归档流程号
	private String reportedProcessInstanceId;//上报流程号

	private String ppfProcessInstanceId; //纸质归档流程号
	private String paperFilingStatus; //纸质归档状态
	private String ppfId; //纸质归档Id

	private String projectType; //类型 1.工程咨询 2.造价审核
	private String constructionUnit; //施工单位
	private String constructionLinkman; //施工方联系人

	private String prrId;
	private String prdId;
	private String prdtId;
	private String prdtProcessinstanceId;
	private String prrdId;
	private String projectReportName;
	private String officeName;
	private String flagAdmin;
	private String reportedState;   //上报状态
	private String reportedStateNoDays; //超期未上报天数
	private String syncStatus;   //同步状态
	private String reportStatus;   //上报状态
	private String view;
	private Integer overDueStatus; //超期状态（0：未超期，1：已超期）
	private List<String> typeList;
	private String flagArchive;  //归档员判定
	private String projectProperties;//投资性质
	private List<String> permissionOfficeIdList;	//查询部门权限列表
	private String projectMaterialStorageStatus; //项目材料状态  0 为无文件 1为有文件 2为已处理



	@NotNull(message = "委托方联系人不能为空")
	private List<WorkClientLinkman> workClientLinkmanList;		// 委托方联系人
	private List<WorkClientLinkman> workConstructionLinkmanList;		// 施工方及联系人
	//@NotBlank(message = "工程概况不能为空")
	private String projectDesc;		// 工程概况

	private Date startDate;   //工作开始时间
	private Date endingDate;  //工作结束时间

	private String leaderNameStr;
	private String leaderId;
	private String leaderIds;
	private String memberNameStr;
	private String memberIds;

	private String processInstanceId;

	private Integer projectStatus;//项目状态

	private String auditType;

	private String alterProcessId;
	private String userIds;
	private String delUserIds;
	private String userId;

	private String home;
	private Date beginDate;
	private Date endDate;
	private int membercount;
	private Integer startCount;    //开始数据
	private Integer endingCount;   //结束数据
	private String adventDate;   //超期时间
	private Date adventDateDate;   //超期时间
	private String reportedType;   //超期状态（0：未超期；1：已超期）
	private Date auditPassDate;   //报告审批日期

	private String TouZiXZ;    //投资性质
	private String HeTongLeiXing;   //合同类型
	private Date BaoGaoShuQianFaDate;  //出具报告日期
	private String ZiXunShouRu;   //咨询收入
	private String zaoJiaShiZhengHao;   //造价师注册证号
	private String attachmentProjectSort;   //项目类别
	private String attachmentProjectSortKey;   //项目类别
	private String checkProcessInstanceId;   //检查流程id
	private Integer checkStatus;   //检查状态
	private String bzshbUserId; //总审用户id
	private String checkUserId; //检查发起人用户id
	private String checkRemarks; //选查要求
	private String fileNum; //选查案卷号
	private String fileNumTow; //选查确认案卷号

	//归档批次信息
	private String filingBatchId; //归档批次Id
	private String filingBatch ;//档次批号
	private String filingName;
	private String filingProcessinstanceId;// 审批流程id
	private Integer filingStatus;//归档审批状态
	private Integer filingProjectStatus;//归档批次项目状态
	private String boxNum; //案卷号
	private String reBoxNum;//确认案卷号
	private String information; //归档批次信息
	private String url; //链接
	private String parentId; //父借点
	private Integer notifyFlag; //代办判定条件
	private String notifyId; //代办判定条件
	private Integer reportNotifyFlag; //新增报告代办判定条件
	private Integer reportAuditNotifyFlag; //新增报告代办(审批)判定条件
	private String reportNotifyId; //新增报告代办判定条件
	private Integer recordNotifyFlag; //归档报告代办判定条件
	private Integer recordAuditNotifyFlag; //归档报告代办(审批)判定条件
	private String recordNotifyId; //归档代办判定条件
	private Integer reportedNotifyFlag; //上报代办判定条件
	private Integer reportedAuditNotifyFlag; //上报代办判(审批)定条件
	private String reportedNotifyId; //上报代办判定条件
	private Integer checkNotifyFlag; //选查代办判定条件
	private String checkNotifyId; //选查代办判定条件
	private String actType; //流程节点
	private Integer newReportNotifyFlag; //新新增报告判定条件
	private Integer newReportAuditNotifyFlag; //新新增报告(审批)判定条件
	private String newReportNotifyId; //新新增报告判定条件

	private String projectMasterName;	//项目负责人名称
	private String projectMasterId;		//项目负责人id

	private String engineeringType;	//工程类型id
	private String engineeringName;	//工程类型名称
	private String submitMoney;		//送审金额
	private String submitMoneyStr;		//项目等级
	private String modifyFlag;		//修改判定参数
	private Integer newRecordNotifyFlag; //新归档代办判定条件
	private String newRecordNotifyId; //新归档代办判定条件
	private Integer newRecordAuditNotifyFlag; //新归档(审批)判定条件
	private String newReportedNotifyId; //新上报代办判定条件
	private Integer newReportedNotifyFlag; //新上报(审批)判定条件
	private Integer newReportTwoNotifyFlag; //报告签发代办判定条件
	private Integer newReportTwoAuditNotifyFlag; //报告签发(审批)判定条件
	private Integer newReportMaterialNotifyFlag; //缺失说明代办判定条件
	private Integer newReportMaterialAuditNotifyFlag; //缺失说明(审批)判定条件
	private Integer newRecordTwoNotifyFlag; //新归档代办判定条件
	private Integer newRecordTwoAuditNotifyFlag; //新归档(审批)判定条件
	private String paperProjectNotifyId; //纸质档代办判定条件
	private Integer paperProjectNotifyFlag; //纸质归档判定条件
	private Integer paperProjectAuditNotifyFlag; //纸质归档(审批)判定条件

	private Integer reportDataFlag; //报告号是否存在判定条件


	private Integer planCount;	//项目计划数量
	private BigDecimal submitScale;	//送审规模
	private Boolean createReportFlag;	//生成报告号判断条件
	private String emergencyProject;	//是否是紧急项目
	private String recordTypeStr;	//归档类型多选
	private List<String> recordTypeList;	//归档类型
	private String reportedTypeStr;	//上报类型多选
	private List<String> reportedTypeList;	//上报类型

	private String approvalFee;  //审定价
	private String reviewFee;  //送审价
	private String verifyFee;    //核增核减额
	private String verifyRate;    //核增核减率

	private String projectTypeStr;		//项目类型
	private String createByName;	// 登记人
	private String createByOffice;	// 登记人部门
	private String projectMasterOffice;	// 责任人部门
	private String projectinvoiceMoney;	// 项目汇总开票金额

	private Date reportAuditDate;	//质量复核审批日期
	private Date reportTwoAuditDate;	//报告签发审批日期
	private String projectScale;		//项目规模


	private Integer projectRecordElseStatus; //归档状态(未超期、归档导出使用)
	private Integer projectRecordExceedStatus; //归档状态(超期、归档导出使用)
	private Integer projectRecordDispenseStatus; //无需上报状态(超期、归档导出使用)
	private Integer recordState; //是否超期归档状态
	private String completionStatus; //完成状态

	private String money; //收费金额
	private String prdAuditDate; //报告审批通过时间时间
	private String whetherReportNumber; //是否需要报告号
	private String signatureFlag; //审定单签章状态
	private String signatureContractId; //审定单签章contractId
	private String signatureUrl; //审定单签章url
	private String signatureFileName;		//签章文件名称
	private String operateFlag; //操作状态


	private Integer approvalSignatureStatus; //审定单申请状态
	private String approvalSignatureProcessInstanceId; //审定单申请流程id
	private Integer reportSignatureStatus; //报告签章申请状态
	private String reportSignatureProcessInstanceId; //报告签章申请流程id
	private String prsiId; //报告签章数据信息id
	private String signatureDownloadUrl; //报告签章文档下载链接


	private Integer reportSignatureFlag;		//是否报告签章(1为已签章)
	private String reportSignatureUrl;		//报告签章id
	private String reportSignatureDocumentId;		//签章documentid
	private String reportSignatureContractId;		//签章contractid
	private String reportSignatureInvalidDocumentId;		//无效的签章documentid
	private String reportSignatureFileName;		//签章文件名称
	private Date reportSignatureUploadDate;		//签章文件上传时间

	private Integer qualitySignatureFlag;		//是否质量复核签章(1为已签章)
	private String qualitySignatureDocumentId;		//质量复核签章documentid
	private String qualitySignatureContractId;		//质量复核签章contractid
	private String qualitySignatureInvalidDocumentId;		//质量复核无效的签章documentid
	private String qualitySignatureFileName;		//质量复核签章文件名称
	private Date qualitySignatureUploadDate;		//质量复核签章文件上传时间

	private String belongingDepartment;    //归属部门
	private String belongingDepartmentName;    //归属部门
	private String projectFilingBatchesId;


	private Integer reportSignatureUrlFlag;		//报告签章url状态
	private Integer approvalSignatureUrlFlag;		//审定单签章url状态

	private String caseType;      		    //是否为案例项目（0：不是  1：是）
	private String caseCreateBy;               //案例项目 创建人id
	private String caseStatus;				//案例项目的状态
	private String caseProcessId;			//案例项目的流程id
	private String ziXunBDE;			//上报中的咨询标的额
	private Date projectReportRecordAuditDate;  //电子归档审核时间
	private Date projectPaperAuditPassDate;  //A类项目纸质归档时间
	private Date projectFlingbatchRelationAuditPassDate;  //B类项目批量归档时间
	private Date projectRecordsReportedAuditPassDate;  //项目上报审核通过时间

	private String overPaperFilingStatus;  //纸质归档状态（0：未超期；1：已超期）
	private String batchArchiveStatus;  //批量归档状态（6：超期未归档；7：超期已归档）
	private String overBatchArchiveStatus;  //批量归档超期状态（0：未超期；1：已超期）

	private Date reportBeginDate;		//质量复核审核开始时间
	private Date reportEndDate;			//质量复核审核结束时间
	private Date reportTwoBeginDate;	//报告签发审核开始时间
	private Date reportTwoEndDate;		//报告签发审核结束时间
	private Date reportRecordBeginDate;	//电子归档审核开始时间
	private Date reportRecordEndDate;	//电子归档审核结束时间
	private Date paperRecordBeginDate;	//纸质归档审核开始时间
	private Date paperRecordEndDate;	//纸质归档审核结束时间
	private Date reportedBeginDate;		//上报审核开始时间
	private Date reportedEndDate;		//上报审核结束时间


	private String reportInternalAuditStatus;		//内审报告审核状态
	private String priaiId;		//内审报告id
	private String reportInternalAuditSignatureProcessInstanceId; //内审报告签章申请流程id

	private Integer reportInternalAuditSignatureFlag;		//是否内审报告签章(1为已签章)
	private String reportInternalAuditSignatureUrl;		//内审报告签章id
	private Integer reportInternalAuditSignatureUrlFlag;		//内审报告签章url状态
	private String reportInternalAuditSignatureDocumentId;		//内审报告签章documentid
	private String reportInternalAuditSignatureContractId;		//内审报告签章contractid
	private String reportInternalAuditSignatureInvalidDocumentId;		//内审报告无效的签章documentid
	private String reportInternalAuditSignatureFileName;		//内审报告签章文件名称
	private Date reportInternalAuditSignatureUploadDate;		//内审报告签章文件上传时间
	private String internalAuditFlag;		//内审报告判定条件
	private String beginSubmitScale;	//送审规模(开始)
	private String endSubmitScale;	//送审规模（结束）


	private List<String> civilProjectList = Lists.newArrayList();

}
