package com.jeeplus.finance.reimbursementApproval.approvalInfo.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeeplus.core.query.Query;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@TableName(value = "program_project_list_info")
public class ProgramProjectListInfo {

    /**
     * 实体主键
     */
    @TableId
    private String id;

    /**
     * 创建日期
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @Excel(name = "创建时间", width = 30, orderNum = "6")
    private Date createDate;

    /**
     * 创建人
     */
    @Query(tableColumn = "a.create_by")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 更新日期
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateDate;

    /**
     * 更新人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**
     * 逻辑删除标记
     */
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private Integer delFlag;

    private String contractId;

    /**
     * 合同名称
     */
    @Excel(name = "合同名称", width = 30, orderNum = "3")
    @Query(tableColumn = "a.contract_name")
    private String contractName;

    /**
     * 委托方
     */
    private String client;

    @Excel(name = "委托方", width = 30, orderNum = "5")
    @Query(tableColumn = "a.client_name")
    private String clientName;

    private String amount;

    private String contractType;

    /**
     * 项目名称
     */
    @Excel(name = "项目名称", width = 30, orderNum = "1")
    @Query(tableColumn = "a.name")
    private String name;

    /**
     * 项目编号
     */
    @Excel(name = "项目编号", width = 20, orderNum = "2")
    @Query(tableColumn = "a.no")
    private String no;

    private String projectType;

    /**
     * 项目立项号
     */
    private String approvalNo;

    private String company;

    private String projectMould;

    private String propertyHolder;

    private String propertyHolderName;

    private String location;

    private String isFirst;

    private String yearNum;

    private String checkYear;

    /**
     * 项目经理（项目责任人）
     */
    private String projectManager;

    @Excel(name = "项目经理", width = 20, orderNum = "4")
    @Query(tableColumn = "c.name")
    private String projectManagerName;

    private String reportType;

    private String industry;

    private String enterpriseType;

    private String riskLevel;

    private String projectSource;

    private BigDecimal estimate;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date planEndTime;

    private Integer useNum;

    private Integer appointment;

    private Double workHours;

    private String remarks;

    private String assessmentEnterprise;

    private String assessmentEnterpriseName;

    private String linkNum;

    private String relationship;

    private String assessmentWay;

    private String assessmentObjective;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date assessmentDate;

    private BigDecimal num;

    private String projectDevelopment;

    private String delegateProjectType;

    private String assessmentObject;

    private String assessmentRange;

    /**
     * 是否生成报告号
     */
    private String generateReportNumber;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date workBeginDate;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date workEndDate;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date reportingDate;

    private String isHave;

    private String isInfluence;

    private String mode;

    /**
     * 状态
     */
    @Excel(name = "状态", width = 20, orderNum = "7")
    @Query(tableColumn = "a.status")
    private String status;

    private String procInsId;

    private String processDefinitionId;

    /**
     * 创建时间
     */
    @TableField(exist = false)
    private String[] createDates;

    /**
     * 是否开票
     */
    @TableField(exist = false)
    private String isInvoice;

    /**
     * 项目报告号
     */
    @TableField(exist = false)
    private String reportNo;

    /**
     * 一级校审状态
     */
    @TableField(exist = false)
    private String status1;

    /**
     * 二级校审状态
     */
    @TableField(exist = false)
    private String status2;

    /**
     * 三级校审状态
     */
    @TableField(exist = false)
    private String status3;

    /**
     * 报告签发状态
     */
    @TableField(exist = false)
    private String issuedStatus;

    /**
     * 一级校审id
     */
    @TableField(exist = false)
    private String auditId1;

    /**
     * 二级校审id
     */
    @TableField(exist = false)
    private String auditId2;

    /**
     * 三级校审id
     */
    @TableField(exist = false)
    private String auditId3;

    /**
     * 报告签发id
     */
    @TableField(exist = false)
    private String issuedId;

    /**
     * 三级校审流程id
     */
    @TableField(exist = false)
    private String procInsId1;

    /**
     * 三级校审流程id
     */
    @TableField(exist = false)
    private String procInsId2;

    /**
     * 三级校审流程id
     */
    @TableField(exist = false)
    private String procInsId3;

    /**
     * 项目归档流程id
     */
    @TableField(exist = false)
    private String procInsIdArchive;

    /**
     * 项目归档id
     */
    @TableField(exist = false)
    private String archiveId;

    /**
     * 项目归档状态
     */
    @TableField(exist = false)
    private String archiveStatus;

    /**
     * 项目负责人id
     */
    @TableField(exist = false)
    private String OfficeId;

    /**
     * 报告签发流程id
     */
    @TableField(exist = false)
    private String procInsId4;

    /**
     * 审批通过时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date agreeTime;

    /**
     * 审批人
     */
    private String agreeUserId;

    /**
     * 合同编号
     */
    @TableField(exist = false)
    private String contractNo;

    /**
     * 所属菜单   是评估项目登记   还是  评估2022项目登记
     */
    private String tabType;

    /**
     * 项目登记  taskId
     */
    @TableField(exist = false)
    private String taskId;

    /**
     * 数据审核人  项目登记
     */
    @TableField(exist = false)
    private List<String> auditUserIds;

    /**
     * 一级校审  taskId
     */
    @TableField(exist = false)
    private String taskIdAudit1;

    /**
     * 二级校审  taskId
     */
    @TableField(exist = false)
    private String taskIdAudit2;

    /**
     * 三级校审  taskId
     */
    @TableField(exist = false)
    private String taskIdAudit3;

    /**
     * 数据审核人  一级校审
     */
    @TableField(exist = false)
    private List<String> auditUserIds1;

    /**
     * 数据审核人  二级校审
     */
    @TableField(exist = false)
    private List<String> auditUserIds2;

    /**
     * 数据审核人  三级校审
     */
    @TableField(exist = false)
    private List<String> auditUserIds3;

    /**
     * 签发  taskId
     */
    @TableField(exist = false)
    private String taskIdIssued;

    /**
     * 归档  taskId
     */
    @TableField(exist = false)
    private String taskIdArchive;

    /**
     * 数据审核人  签发
     */
    @TableField(exist = false)
    private List<String> auditUserIdsIssued;

    /**
     * 数据审核人  归档
     */
    @TableField(exist = false)
    private List<String> auditUserIdsArchive;

    /**
     * 是否展示关联发票的开票状态   1展示   其他不展示
     */
    @TableField(exist = false)
    private String showInvoiceFlag;

}
