package org.jeecg.modules.projectManagement.entity;

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

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
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-28
 * @version： V1.0
 */
@Data
@TableName("fd_project_file")
public class FdProjectFile implements Serializable {
    private static final long serialVersionUID = 1L;
    
	/**主键*/
	@TableId(type = IdType.UUID)
	private java.lang.String id;
	/**客户id/申办方id*/
	@Excel(name = "客户id/申办方id", width = 15)
	private java.lang.String customerId;
	/**客户名称/申办方名称*/
	@Excel(name = "客户名称/申办方名称", width = 15)
	private java.lang.String customerName;
	/**合同编号*/
	@Excel(name = "合同编号", width = 15)
	@TableField(exist = false)
	private java.lang.String contractCode;
	/**合同id*/
	@Excel(name = "合同id", width = 15)
	@NotEmpty(message = "请选择合同编号")
	private java.lang.String contractId;
	/**客户缩写*/
	@Excel(name = "客户缩写", width = 15)
	private java.lang.String abbreviation;
	/**合同方*/
	@Excel(name = "合同方", width = 15)
	private java.lang.String contractParty;
	/**临床方案号*/
	@Excel(name = "临床方案号", width = 15)
	private java.lang.String clinicalCode;
	/**合规性*/
	@Excel(name = "合规性", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String compliance;
	/**实验室地点*/
	@Excel(name = "实验室地点", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String labAddress;
	/**合同签订日期*/
	@Excel(name = "合同签订日期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
	private java.util.Date signDate;
	/**合同类型*/
	@Excel(name = "合同类型", width = 15)
	private java.lang.String contractType;
	/**项目名称*/
	@Excel(name = "项目名称", width = 15)
	@NotEmpty(message = "项目名称不能为空")
	private java.lang.String projectName;
	/**机制类型*/
	@Excel(name = "机制类型", width = 15)
	@NotEmpty(message = "基质类型不能为空")
	private java.lang.String matrixType;
	/**bd*/
	@Excel(name = "bd", width = 15)
	@NotEmpty(message = "商务经理不能为空")
	private java.lang.String bd;
	//bdId
	@TableField(exist = false)
	private java.lang.String bdId;
	/**临床负责人*/
	@Excel(name = "临床负责人", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String clinicalPi;
	//临床负责人id
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private java.lang.String clinicalPiId;
	//临床负责人id
	@TableField(exist = false)
	private java.lang.String clinicalPiName;


	/**临床pm*/
	@Excel(name = "临床pm", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String clinicalPm;
	//临床pmId
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private java.lang.String clinicalPmId;
	/**主要研究者*/
	@Excel(name = "主要研究者", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String investigator;
	//主要研究者id
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private java.lang.String investigatorId;
	//主要研究者id（生物分析负责人名称）
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private java.lang.String investigatorName;
	/**生物分析pm*/
	@Excel(name = "生物分析pm", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String bioanalyticalPm;
	//生物分析pmid
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private java.lang.String bioanalyticalPmId;
	/**生物分析助理*/
	@Excel(name = "生物分析助理", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String assistant;
	//生物分析助理id
	@TableField(exist = false,strategy = FieldStrategy.IGNORED)
	private java.lang.String assistantId;
	/**版本号*/
	@Excel(name = "版本号", width = 15)
	private java.lang.String version;
	/**删除标记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 hospitalName;
	/**医院档案外键*/
	@Excel(name = "医院档案外键", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String pkHospital;
    /**备注*/
    @Excel(name = "备注", width = 15)
    private java.lang.String memo;

	/**项目经理id*/
	@Excel(name = "项目经理id", width = 15)
	@NotEmpty(message = "项目经理不能为空")
    private String projectManagerId;

	/**状态0未启动1进行中2已完结3已交付4挂起*/
	@Excel(name = "状态", width = 15)
	@TableField(strategy = FieldStrategy.IGNORED)
	private java.lang.String status;

	//权限人员id
	private String personnelWithAuthorityIds;

	//客户代号
	private String clientCode;

	//合同基质类型ids
	private String contractMatrixTypeId;

	//药品名
	private String drugName;

	//生物分析idPM
	private String bioanalyticalIdPmm;

	//生物分析名称PM
	private String bioanalyticalNamePmm;

	//项目档案号
	private String projectFileNo;

	//甲方名称
	private String firstPartyName;

	//临床研究主要研究者
	private String clinicalResearch;

	/**报价类型*/
	private String quotationTypeId;
	/**报价类型*/
	private String quotationTypeName;

	//付款方
	@TableField(exist = false)
	private String payerName;

	/**申办方id*/
	@Excel(name = "申办方id", width = 15)
	@TableField(exist = false)
	private java.lang.String bidPartyId;

	/**申办方姓名*/
	@Excel(name = "申办方姓名", width = 15)
	@TableField(exist = false)
	private java.lang.String bidPartyName;

	//合同类型id
	@TableField(exist = false)
	private java.lang.String contractTypeId;

	//基质类型id
	@TableField(exist = false)
	private java.lang.String matrixTypeId;

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

	@Excel(name = "化合物")
	 @TableField(exist = false)
	private java.lang.String compoundNameQuotation;
	@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;

	//合同号--项目号
	@TableField(exist = false)
	private String contractAndFileCode;

	@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;
	@Excel(name = "实验室地点名称 ")
	@TableField(exist = false)
	private java.lang.String labAddressName;



	//化合物
	@TableField(exist = false)
	private List<FdProjectFileCompound> fdProjectFileCompoundList;

	//联系人
	@TableField(exist = false)
	private List<FdProjectFileContacts> fdProjectFileContactsList;

	//项目成员
	@TableField(exist = false)
	private List<FdProjectFileMembers> fdProjectFileMembersList;

	//生物分析方法号
	@TableField(exist = false)
	private List<FdProjectFileMethod> fdProjectFileMethodList;

	//生物分析方法确认项目号
	@TableField(exist = false)
	private List<FdProjectFileConfirm> fdProjectFileConfirmList;

	//生物分析方法验证号
	@TableField(exist = false)
	private List<FdProjectFileValidation> fdProjectFileValidationList;

	//生物分析样本分析号
	@TableField(exist = false)
	private List<FdProjectFileSample> fdProjectFileSampleList;

	//项目文件上传
	@TableField(exist = false)
	private List<FdProjectFileUpload> fdProjectFileUploadList;

	//申办方
	@TableField(exist = false)
	private List<FdProjectFileBidparty> fdProjectFileBidpartyList;

	//支付信息
	@TableField(exist = false)
	private List<FdProjectFileInvoice> fdProjectFileInvoiceList;

	//生物分析方法号
	private java.lang.String bioanalysisCode;
	//生物分析方法确认项目号
	private java.lang.String bioanalysisConfirmItemCode;
	//生物分析方法验证号
	private java.lang.String bioanalysisValidationCode;
	//生物分析样本分析号
	private java.lang.String biologicalAnalysisSampleAnalysisCode;

	/**合同方显示字段*/
	@TableField(exist = false)
	private java.lang.String contractPartyName;

	//合同付款节点
	@TableField(exist = false)
	private List<FdContractClause> fdContractClauseList;

	//客户档案信用期
	@TableField(exist = false)
	private String creditPeriod;

	//合同总金额
	@TableField(exist = false)
	private String totalAmount;

	//合同最终总金额
	@TableField(exist = false)
	private String finalTotalAmount;

	//币别id
	@TableField(exist = false)
	private String currencyType;

	//币别名称
	@TableField(exist = false)
	private String currencyTypeName;

	//状态集合
	@TableField(exist = false)
	private List<Map<String,Object>> statusList;

	//项目档案总数量
	@TableField(exist = false)
	private Integer sum;

	//项目描述
	@TableField(exist = false)
	private String contractDescription;

	//项目档案状态名称
	private String statusName;

	//项目档案排序
	@TableField(exist = false)
	private String sort;

	//报价id
	@TableField(exist = false)
	private String quotationId;
	//税率
	@TableField(exist = false)
	private String taxRate;

}
