package org.jeecg.modules.projectManagement.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.modules.basedata.entity.FdCustomerContacts;
import org.jeecg.modules.system.entity.SysAnnouncementSend;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;

import javax.validation.constraints.NotEmpty;

/**
 * @Description: 项目报价表
 * @author： jeecg-boot
 * @date：   2019-05-20
 * @version： V1.0
 */
@Data
@TableName("fd_project_quotation")
public class FdProjectQuotation implements Serializable {
    private static final long serialVersionUID = 1L;
    
	/**主键*/
	@TableId(type = IdType.UUID)
	private java.lang.String id;
	/**报价单号*/
	@Excel(name = "报价单号", width = 15)
	// @NotEmpty(message = "报价单号不能为空")
	private java.lang.String code;
	/**项目名称*/
	@Excel(name = "项目名称", width = 15)
	// @NotEmpty(message = "项目名称不能为空")
	private java.lang.String name;
	/**申办方*/
	@Excel(name = "申办方", width = 15)
	// @NotEmpty(message = "申办方不能为空")
	private java.lang.String customerName;
	/**报价日期*/
    @Excel(name = "报价日期", width = 20, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
	// @NotEmpty(message = "报价日期不能为空")
	private java.util.Date quotationDate;
	/**失效日期*/
    @Excel(name = "失效日期", width = 20, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
	// @NotEmpty(message = "失效日期不能为空")
	private java.util.Date validDate;
	/**合同类型，可多选*/
	@Excel(name = "合同类型，可多选", width = 15)
	// @NotEmpty(message = "合同类型不能为空")
	private java.lang.String contractType;

	// @TableField(exist = false)
	private java.lang.String contractTypeName;
	/**申报*/
	@Excel(name = "申报", width = 15)
	private java.lang.String submission;
	/**税率*/
	@Excel(name = "税率", width = 15)
	// @NotEmpty(message = "税率不能为空")
	private java.lang.String taxRate;
	/**客户地址*/
	@Excel(name = "客户地址", width = 15)
	// @NotEmpty(message = "客户地址不能为空")
	private java.lang.String customerAddress;
	/**描述*/
	@Excel(name = "描述", width = 15)
	// @NotEmpty(message = "项目描述不能为空")
	private java.lang.String description;
	/**基质类型*/
	@Excel(name = "基质类型", width = 15)
	// @NotEmpty(message = "基质类型不能为空")
	private java.lang.String matrixType;

	//基质类型名称
	@TableField(exist = false)
	private java.lang.String matrixTypeName;
	/**项目经理id*/
	@Excel(name = "项目经理id(BD)", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String projectManager;
	//项目经理名称
	@TableField(exist = false)
	private String projectManagerName;
	/**商务经理id*/
	@Excel(name = "商务经理id(暂未用)", width = 15)
	// @NotEmpty(message = "商务经理id不能为空")
	private java.lang.String businessManager;
	//商务经理名称
		@TableField(exist = false)
	private String businessManagerName;
	/**总监id*/
	@Excel(name = "总监id", width = 15)
	// @NotEmpty(message = "总监id不能为空")
	private java.lang.String director;
	//总监名称
		@TableField(exist = false)
	private java.lang.String directorName;
	/**总经理id*/
	@Excel(name = "总经理id", width = 15)
	// @NotEmpty(message = "总经理id不能为空")
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String generalManager;
	//总经理名称
		@TableField(exist = false)
	private java.lang.String generalManagerName;
	/**备注*/
	@Excel(name = "备注", width = 15)
	private java.lang.String memo;
	/**状态0未审核1审核2关闭3已转合同*/
	@Excel(name = "状态0未审核1审核2关闭3已转合同", width = 15)
	private java.lang.String status;
	/**是否启用0正常1停用*/
	@Excel(name = "是否启用0正常1停用", width = 15)
	private java.lang.String enable;
	/**删除标记0正常1删除*/
	@Excel(name = "删除标记0正常1删除", width = 15)
	private java.lang.String delFlag;
	/**创建人*/
	@Excel(name = "创建人", width = 15)
	private java.lang.String createBy;
	/**创建时间*/
	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date createTime;
	/**最后修改人*/
	@Excel(name = "最后修改人", width = 15)
	private java.lang.String updateBy;
	/**最后修改时间*/
	@Excel(name = "最后修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date updateTime;
	/**自定义字段1*/
	@Excel(name = "自定义字段1", width = 15)
	private java.lang.String def1;
	/**自定义字段2*/
	@Excel(name = "自定义字段2", width = 15)
	private java.lang.String def2;
	/**自定义字段3*/
	@Excel(name = "自定义字段3", width = 15)
	private java.lang.String def3;
	/**自定义字段4*/
	@Excel(name = "自定义字段4", width = 15)
	private java.lang.String def4;
	/**自定义字段5*/
	@Excel(name = "自定义字段5", width = 15)
	private java.lang.String def5;
	/**生物分析实验室地点*/
	@Excel(name = "生物分析实验室地点", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String biologicalAnalysisLaboratory;
	/**医院名单*/
	@Excel(name = "医院ids", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String hospitalList;
	/**生物分析实验室地点名称*/
	@Excel(name = "生物分析实验室地点名称", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String biologicalAnalysisLaboratoryName;
	/**医院名单名称*/
	@Excel(name = "医院名单名称", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String hospitalListName;

	/**检测指标*/
	@Excel(name = "检测指标", width = 15)
	private String detectionIndicators;

	/**临床部分审核id*/
	@Excel(name = "临床部分审核id", width = 15)
	// @NotEmpty(message = "临床部分审核人员不能为空")
	@TableField(strategy = FieldStrategy.IGNORED)
	private String clinicalSectionId;

	/**临床部分审核名称*/
	@Excel(name = "临床部分审核名称", width = 15)
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private String clinicalSectionName;

	/**临床部分默认审核内容*/
	@Excel(name = "临床部分默认审核内容", width = 15)
	private String clinicalSectionMemo;

	/**临床部分审核状态*/
	@Excel(name = "临床部分审核状态", width = 15)
	private String isClinicalSectionExamine;

	/**中心价格审核人员id*/
	@Excel(name = "中心价格审核人员id", width = 15)
	// @NotEmpty(message = "中心价格审核人员不能为空")
	@TableField(strategy = FieldStrategy.IGNORED)
	private String centralPriceId;

	/**中心价格审核人员名称*/
	@Excel(name = "中心价格审核人员名称", width = 15)
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private String centralPriceName;

	/**中心价格默认审核内容*/
	@Excel(name = "中心价格默认审核内容", width = 15)
	private String centralPriceMemo;

	/**中心加哥审核状态0未审核1审核*/
	@Excel(name = "中心加哥审核状态0未审核1审核", width = 15)
	private String isCentralPriceExamine;

	/**数据统计审核人员id*/
	@Excel(name = "数据统计审核人员id", width = 15)
	// @NotEmpty(message = "数据统计审核人员不能为空")
	@TableField(strategy = FieldStrategy.IGNORED)
	private String dataStatisticsId;

	/**数据统计审核人员名称*/
	@Excel(name = "数据统计审核人员名称", width = 15)
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private String dataStatisticsName;

	/**数据统计默认审核内容*/
	@Excel(name = "数据统计默认审核内容", width = 15)
	private String dataStatisticsMemo;

	/**数据统计审核状态0未审核1审核*/
	@Excel(name = "数据统计审核状态0未审核1审核", width = 15)
	private String isDataStatisticsExamine;

	/**pk计算审核人员id*/
	@Excel(name = "pk计算审核人员id", width = 15)
	// @NotEmpty(message = "pk计算审核人员不能为空")
	@TableField(strategy = FieldStrategy.IGNORED)
	private String pkComputingId;

	/**pk计算审核人员名称*/
	@Excel(name = "pk计算审核人员名称", width = 15)
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private String pkComputingName;

	/**pk计算默认审核内容*/
	@Excel(name = "pk计算默认审核内容", width = 15)
	private String pkComputingMemo;

	/**pk计算审核状态0未审核1审核*/
	@Excel(name = "pk计算审核状态0未审核1审核", width = 15)
	private String isPkComputingExamine;

	/**生物分析审核人员id*/
	@Excel(name = "生物分析审核人员id", width = 15)
	// @NotEmpty(message = "生物分析审核人员不能为空")
	@TableField(strategy = FieldStrategy.IGNORED)
	private String bioanalysisId;

	/**生物分析审核人员名称*/
	@Excel(name = "生物分析审核人员名称", width = 15)
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private String bioanalysisName;

	/**生物分析默认审核内容*/
	@Excel(name = "生物分析默认审核内容", width = 15)
	private String bioanalysisMemo;

	/**生物分析审核状态0未审核1审核*/
	@Excel(name = "生物分析审核状态0未审核1审核", width = 15)
	private String isBioanalysisExamine;

	@Excel(name = "化合物")
	@TableField(exist = false)
	private java.lang.String compound;

	@Excel(name = "联系人")
	@TableField(exist = false)
	private java.lang.String contactPsn;

	@Excel(name = "联系人电话")
	@TableField(exist = false)
	private java.lang.String contactTel;

	@Excel(name = "联系人邮件")
	@TableField(exist = false)
	private java.lang.String contactEmail;

	@Excel(name = "是否默认 ")
	@TableField(exist = false)
	private java.lang.String isDefault;

	@Excel(name = "联系人备注 ")
	@TableField(exist = false)
	private java.lang.String Notes;

	@Excel(name = "方法号 ")
	@TableField(exist = false)
	private java.lang.String methodCode;

	@Excel(name = "项目确认号 ")
	@TableField(exist = false)
	private java.lang.String confirmCode;

	@Excel(name = "方法验证号 ")
	@TableField(exist = false)
	private java.lang.String validationCode;

	@Excel(name = "样本号 ")
	@TableField(exist = false)
	private java.lang.String sampleCode;

	//申报名称
	private String submissionName;

	//类型:1项目报价2大分子报价
	private String type;

	//客户档案id
	private String pkCustomerId;

	//空腹总计（费用单）
	private String fastingSubtotal;

	//餐后总计（费用单）
	private String postMealSubtotals;

	//总计（费用单）
	private String costTotal;

	//总计（大分子费用单）
	private String maCostTotal;
	//最终申办方名称
	private String sponsorName;

	@Excel(name = "项目报价选择的模板对照表 ")
	@TableField(exist = false)
	private List<FdProjectQuotationTemplate> quotationTemplateList;

	@Excel(name = "项目报价评论明细表 ")
	@TableField(exist = false)
	private List<FdProjectQuotationComments> quotationCommentsList;


	//客户档案联系人集合
	@TableField(exist = false)
	private List<FdCustomerContacts> customerContactsList;

	//化合物集合
	@TableField(exist = false)
	private List<FdProjectQuotationCompound> quotationCompoundList;

	//采样集合
	@TableField(exist = false)
	private List<FdProjectQuotationDetail> quotationDetailList;

	//客户联系人集合
	@TableField(exist = false)
	private List<FdProjectQuotationContacts> quotationContactsList;

	//报价模板集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplateItem> quotationTemplateItemList;

	//报价费用集合
	@TableField(exist = false)
	private List<fdProjectQuotationFee> fdProjectQuotationFeeList;

	//上传文件集合
	@TableField(exist = false)
	private List<FdProjectQuotationUpload> fdProjectQuotationUploadList;

	//新增选择的模板集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplateAdd> quotationTemplateListAdd;

	//商务经理描述
	// @TableField(exist = false)
	private String businessManagerMemo;

	//总监描述
	// @TableField(exist = false)
	private String directorMemo;

	//总经理描述
	// @TableField(exist = false)
	private String generalManagerMemo;

	//商务经理是否审核0未审核1审核
	private String isBusinessExamine;

	//总监是否审核0未审核1审核
	private String isDirectorExamine;

	//总经理是否审核0未审核1审核
	private String isGeneralExamine;

	//报价类型
	// @NotEmpty(message = "报价类型不能为空")
	private String quotationType;

	//报价类型名称
	private String quotationTypeName;

	//总金额
	private String totalAmount;

	//化合物名称
	private String compoundName;

	//币别类型id（数据字典）
	@TableField(strategy = FieldStrategy.IGNORED)
	private String currencyType;

	//币别类型名称
	@TableField(strategy = FieldStrategy.IGNORED)
	private String currencyTypeName;

	//币别类型英文名称
	private String currencyTypeEgName;

	//币别类型中文名称
	private String currencyTypeChName;

	/**报价总数*/
	@TableField(exist = false)
	private String translate;
	/**占比*/
	@TableField(exist = false)
	private String proportion;
	/**签约数*/
	@TableField(exist = false)
	private String signing;
	/**结束日期*/
	@TableField(exist = false)
	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date endDate;
	/**小月*/
	@TableField(exist = false)
	private Integer smallMonth;
	/**大月*/
	@TableField(exist = false)
	private Integer largeMonth;

	//最后审核人id
	private String finalAuditorId;
	/**开始*/
	@TableField(exist = false)
	private String begin;
	/**结束*/
	@TableField(exist = false)
	private String over;

	//制单人名称
	@TableField(exist = false)
	private String createByName;

	//导出文件名
	@TableField(exist = false)
	private String exportName;

	//客户简称
	@TableField(exist = false)
	private String shortName;

	//待审核人
	@TableField(exist = false)
	private String pendingAuditorNames;

	//年份
	@TableField(exist = false)
	private String year;
	//药品名
	@TableField(exist = false)
	private String drugName;

	//药品名
	@TableField(exist = false)
	private String clinicalCode;

	//最后审核人名称
	private String finalAuditorName;

	//客户缩写
	private String abbreviation;

	//明细小计合并列
	private Integer itemColspanSub;

	//是否上传附件
	private String isUploadEnclosure;

	//费用1标题名(费用单)
	private String feeCategory1Title;

	//费用2标题名（费用单）
	private String feeCategory2Title;

	//语言类型0中文1中英文2英文
	private String languageType;
	//语言类型
	private String languageTypeName;

	//关联的主报价号
	private String relationCode;

	//关联状态
	private Integer relationStart;


	//合同id
	@TableField(exist = false)
	private String contractId;

	//合同类型名称能
	// private String contractTypeName;

	//cro模板类型集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplate> croTemplateList;

	//cro相关模板类型集合
	// private String croRelevantTemplate;

	//临床模板类型集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplate> clinTemplateList;

	//生物分析模板类型集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplate> bioTemplateList;

	//生物分析耗材模板类型集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplate> bioConsumablesTemplateList;

	//大分子模板类型集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplate> macromoleculeTemplateList;

	//cro模板明细集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplateItem> croTemplateItemList;

	//临床模板明细集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplateItem> clinTemplateItemList;

	//生物分析模板明细集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplateItem> bioTemplateItemList;

	//生物分析耗材模板明细集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplateItem> bioConsumablesTemplateItemList;

	//大分子模板明细集合
	@TableField(exist = false)
	private List<FdProjectQuotationTemplateItem> macromoleculeTemplateItemList;

	//通知人员集合
	@TableField(exist = false)
	private List<SysAnnouncementSend> sysAnnouncementSendList;

	//报价报表查询条件使用
	//实验室地点ids
	@TableField(exist = false)
	private List<String> biologicalAnalysisLaboratoryIds;

	//临床中心
	@TableField(exist = false)
	private List<String> hospitalListIds;

	//BDids
	@TableField(exist = false)
	private List<String> projectManagerIds;

	//报价类型
	@TableField(exist = false)
	private List<String> quotationTypeIds;

	//报价人员
	@TableField(exist = false)
	private List<String> createByIds;

	//合同类型
	@TableField(exist = false)
	private List<String> contractTypeIds;

	//状态
	@TableField(exist = false)
	private List<String> statusIds;

}
