package com.ozs.pm.doman.vo.responseVo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ozs.common.annotation.Excel;
import com.ozs.common.core.domain.BaseEntity;
import com.ozs.system.domain.SysFileInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;


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

/**
 * 采购需求对象 pm_demand
 *
 * @author ruoyi
 * @date 2023-01-16
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel("采购需求对象")
public class PmDemandResVo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    @ApiModelProperty("主键")
    private Long demandId;

    /** 计划ID */
    @Excel(name = "计划ID")
    @ApiModelProperty("计划ID")
    private Long planId;

    /** 采购单位（登录账号的单位） */
    @Excel(name = "采购单位（登录账号的单位）")
    @ApiModelProperty("采购单位")
    private Long purchaseDeptId;

    /** 采购单位（登录账号的单位名称） */
    @ApiModelProperty("采购单位（登录账号的单位名称）")
    private String purchaseDeptName;


    /** 项目名称 */
    @Excel(name = "项目名称")
    @ApiModelProperty("项目名称")
    private String projectName;

    /** 项目类型（0：装备类；1：物资类；2：服务类；3：工程类） */
    @Excel(name = "项目类型（0：装备类；1：物资类；2：服务类；3：工程类）")
    @ApiModelProperty("项目类型（0：装备类；1：物资类；2：服务类；3：工程类）")
    private String projectType;

    /** 项目类型名（0：装备类；1：物资类；2：服务类；3：工程类） */
    @Excel(name = "项目类型名（0：装备类；1：物资类；2：服务类；3：工程类）")
    @ApiModelProperty("项目类型名（0：装备类；1：物资类；2：服务类；3：工程类）")
    private String projectTypeName;

    /** 需求概况 */
    @Excel(name = "需求概况")
    @ApiModelProperty("需求概况")
    private String demandOverview;

    /** 概算金额(万元（保留小数点后两位） */
    @Excel(name = "概算金额(万元 保留小数点后两位")
    @ApiModelProperty("概算金额(万元（保留小数点后两位）")
    private Double evaluation;

    /** 是否为超限额计划(0:未超额，1:超额) */
    @Excel(name = "是否为超限额计划(0:未超额，1:超额)")
    @ApiModelProperty("是否为超限额计划(0:未超额，1:超额)")
    private Integer isExcess;

    /** "是否为超限额计划名(0:未超额，1:超额) */
    @Excel(name = "是否为超限额计划名(0:未超额，1:超额)")
    @ApiModelProperty("是否为超限额计划名(0:未超额，1:超额)")
    private String isExcessName;

    /** 采购服务站 */
    @Excel(name = "采购服务站")
    @ApiModelProperty("采购服务站")
    private String purchaseServices;

    /** 采购服务站名 */
    @Excel(name = "采购服务站名")
    @ApiModelProperty("采购服务站名")
    private String purchaseServicesName;

    /** 采购方式  (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价) */
    @Excel(name = "采购方式  (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价)")
    @ApiModelProperty("采购方式 (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价)")
    private String purchaseMode;

    /** 采购方式名  (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价) */
    @Excel(name = "采购方式名  (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价)")
    @ApiModelProperty("采购方式名 (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价)")
    private String purchaseModeName;

    /** 计划提报需求时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划提报需求时间")
    @ApiModelProperty("计划提报需求时间")
    private Date planDemandSubTime;

    /** 计划完成采购时间*/
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划完成采购时间")
    @ApiModelProperty("计划完成采购时间")
    private Date planPurchaseFinishTime;

    /** 计划交付时间- */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划交付时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("计划交付时间")
    private Date planDeliverTime;

    /** 项目属性（0:应急应战项目， 1:重大规划任务项目， 2:规划任务项目， 3:一般项目） */
    @Excel(name = "项目属性", readConverterExp = "0=:应急应战项目，,1=:重大规划任务项目，,2=:规划任务项目，,3=:一般项目")
    @ApiModelProperty("项目属性 0=:应急应战项目，,1=:重大规划任务项目，,2=:规划任务项目，,3=:一般项目")
    private String projectAttr;

    /** 项目属性名（0:应急应战项目， 1:重大规划任务项目， 2:规划任务项目， 3:一般项目） */
    @Excel(name = "项目属性名", readConverterExp = "0=:应急应战项目，,1=:重大规划任务项目，,2=:规划任务项目，,3=:一般项目")
    @ApiModelProperty("项目属性名 0=:应急应战项目，,1=:重大规划任务项目，,2=:规划任务项目，,3=:一般项目")
    private String projectAttrName;

    /** 计划调整情况及理由*/
    @Excel(name = "计划调整情况及理由")
    @ApiModelProperty("计划调整情况及理由")
    private String adjustReason;

    /** 备注 */
    @Excel(name = "备注")
    @ApiModelProperty("备注")
    private String remarks;

    /** 实际提报需求时间--->需求单位成功提报采购需求的日期（具体到日） */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际提报需求时间--->需求单位成功提报采购需求的日期（具体到日）")
    @ApiModelProperty("实际提报需求时间--->需求单位成功提报采购需求的日期（具体到日）")
    private Date realDemandCommitTime;

    /** 实际完成采购时间--->公示中标结果的日期，即填制中标信息的日期（具体到日） */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际完成采购时间--->公示中标结果的日期，即填制中标信息的日期（具体到日）")
    @ApiModelProperty("项目名称")
    private Date realPurchaseFinishTime;

    /** 实际交付（实施）时间--->供应商完成并交付后，使用单位收到标的日期，即填制建设文档的日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际交付（实施）时间--->供应商完成并交付后，使用单位收到标的日期，即填制建设文档的日期 ")
    @ApiModelProperty("实际交付（实施）时间--->供应商完成并交付后，使用单位收到标的日期，即填制建设文档的日期 ")
    private Date realDeliverTime;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("审核时间")
    private Date auditTime;

    /** 预警状态(0:正常，1:预警) */
    @Excel(name = "预警状态(0:正常，1:预警)")
    @ApiModelProperty("预警状态(0:正常，1:预警)")
    private String warnStatus;

    /** 预警状态名(0:正常，1:预警) */
    @Excel(name = "预警状态名(0:正常，1:预警)")
    @ApiModelProperty("预警状态名(0:正常，1:预警)")
    private String warnStatusName;

    /**
     * 项目状态(4:需求待填制，5:需求待提交，6:需求待审核，7:任务待下达，8:任务已下达，9:中标信息待填制，10:中标信息已填制，11:合同待填制，12:合同已填制，13:项目建设中，14:项目建设完成)
     */
    @Excel(name = "项目状态(4:需求待填制，5:需求待提交，6:需求待审核，7:任务待下达，8:任务已下达，9:中标信息待填制，10:中标信息已填制，11:合同待填制，12:合同已填制，13:项目建设中，14:项目建设完成)")
    @ApiModelProperty("项目状态(4:需求待填制，5:需求待提交，6:需求待审核，7:任务待下达，8:任务已下达，9:中标信息待填制，10:中标信息已填制，11:合同待填制，12:合同已填制，13:项目建设中，14:项目建设完成)")
    private String projectStatus;

    /** 项目状态名称 */
    @Excel(name = "项目状态名称")
    @ApiModelProperty("项目状态名称")
    private String projectStatusName;

    /** 退回原因 */
    @Excel(name = "退回原因")
    @ApiModelProperty("退回原因")
    private String refuseReason;

    /** 滞后原因 */
    @Excel(name = "滞后原因")
    @ApiModelProperty("滞后原因")
    private String delayReason;

    /** 调整建议 */
    @Excel(name = "调整建议")
    @ApiModelProperty("调整建议")
    private String adjustAdvice;

    /** 需求建档对象  */
    @ApiModelProperty("需求建档对象")
    private PmBookBuildingResVo pmBookBuildingResVo;

    /** 中标信息对象  */
    @ApiModelProperty("中标信息对象")
    private  PmPurchaseExecutionResVo pmPurchaseExecutionResVo;

    /** 合同信息对象  */
    @ApiModelProperty("合同信息对象")
    private  PmContractInfoResVo pmContractInfoResVo;

    /** 项目建设对象  */
    @ApiModelProperty("项目建设对象")
    private  PmProjectConstructionResVo pmProjectConstructionResVo;


    /**
     * 采购需求的已上传的关联附件信息
     */
    @ApiModelProperty("采购需求的已上传的关联附件信息")
    private List<SysFileInfo> demandFileInfos;


    /**
     * 采购需求审核的已上传的关联附件信息
     */
    @ApiModelProperty("采购需求审核的已上传的关联附件信息")
    private List<SysFileInfo> auditFileInfos;

    /**
     * 任务下达的已上传的关联附件信息
     */
    @ApiModelProperty("任务下达的已上传的关联附件信息")
    private List<SysFileInfo> taskReleaseFileInfos;

    /**
     * 待办事项提示信息
     */
    private String tipsMessage;
    /**
     * 项目是否滞后 1为滞后
     */
    private String isExceedProject;
    /**
     * 首页是否显示填写滞后原因
     */
    private String isWriteExceed;
    /**
     * 详情类型(1项目计划，2需求建档，3任务下达,4中标信息，5合同信息，6建设情况)
     */
    private String detailType;
    /**
     * 抽取专家名称
     */
    private String expertNameStr;
    /**
     * 抽取专家的采购品种
     */
    private String varietyPurchaseStr;
    /**
     * 抽取时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date accessTime;

    private Boolean flay;

    @ApiModelProperty("0：没有关联专家，1：有关联专家")
    private String hasExpert;
}
