package com.jeeplus.finance.projectReport.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeeplus.core.query.Query;
import com.jeeplus.core.service.dto.BaseDTO;
import com.jeeplus.finance.common.flowable.dto.CommitParamDTO;
import com.jeeplus.finance.projectReport.service.dto.ProjectReportWorkAttachmentDTO;
import com.jeeplus.sys.domain.WorkAttachmentInfo;
import lombok.Data;

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

/**
 * @author: 徐滕
 * @version: 2022-11-11 15:42
 */
@Data
public class CwProjectReportData extends BaseDTO {

    //报告号申请流程的  流程id，及流程状态  及 取号类型  及  非正常取号原因
    @TableField(exist = false)
    private String applyProcId;
    @TableField(exist = false)
    private String applyProcDefId;
    @TableField(exist = false)
    @Excel(name = "报告号申请状态",width = 20,orderNum = "16")
    private String applyStatus;
    @TableField(exist = false)
    private String takeNumberType;
    @TableField(exist = false)
    private String improperTakeCause;


    //报告号申请流程的  流程id，及流程状态  及 取号类型  及  非正常取号原因
    @TableField(exist = false)
    private String applyReviewProcId;
    @TableField(exist = false)
    private String applyReviewProcDefId;
    @TableField(exist = false)
    private String applyReviewStatus;

    /**
     * 报告号复核流程taskId
     */
    private String reviewTaskNumberId;



    /**
     * 区分新旧数据
     */
    private String newType;
    @TableField(exist = false)
    private String procInsReview;

    /**
     * 报告主办人
     */
    private String reportSponsor;

//    private String createBy;

    @TableField(exist = false)
    private String createById;

    @TableField(exist = false)
    private String projectInfoId;



    //单据编号（字典值）
    public static final String BIZ_CODE = "13";
    /**
     * 单据编号
     */
    @Excel(name = "单据编号",width = 20,orderNum = "1")
    private String documentNo;
    /**
     * 项目名称
     */
    @Query(tableColumn = "b.project_name")
    @Excel(name = "项目名称",width = 40,orderNum = "3")
    private String projectName;
    /**
     * 项目编号
     */
    @Query(tableColumn = "b.project_number")
    @Excel(name = "项目编号",width = 20,orderNum = "2")
    private String projectNumber;
    /**
     * 项目id
     */
    private String projectId;
    /**
     * 报告所属部门
     */
    private String officeId;


    @TableField(exist = false)
    @Excel(name = "报告所属部门",width = 20,orderNum = "10")
    private String departmentName; //部门名称
    /**
     * 项目经理
     */
    @Excel(name = "项目经理1",width = 12,orderNum = "11")
    private String projectMasterName;

    /**
     * 项目经理2
     */

    private String realHeaderName;

    /**
     * 项目经理2id
     */
    private String projectMasterId2;

    private String projectMasterId1;

    /**
     * 项目经理id
     */
    @TableField(exist = false)
    private String projectMasterId;
    /**
     * 签字注师1
     */
    private String signatureAnnotator1;
    /**
     * 签字注师2
     */
    private String signatureAnnotator2;
    /**
     * 盖章类型
     */
    private String signatureType;

    /**
     * 流程id
     */
    private String procInsId;

    private String processDefinitionId;

    /**
     * 创建人
     */
    @TableField(exist = false)
    @Excel(name = "创建人",width = 12,orderNum = "13")
    private String userName; //用户名

    /**
     * 创建时间
     */
    @Excel(name = "创建时间", exportFormat="yyyy-MM-dd",width = 16,orderNum = "14")
    private Date createTime;

    /**
     * 状态
     */
    private String status;

    //新建行数据
    @TableField(exist = false)
    List<CwProjectInfoData> cwProjectInfoList;

    //新建行历史数据
    @TableField(exist = false)
    List<CwProjectInfoData> cwWorkClientContactDTOList;

    @TableField(exist = false)
    private String[] contractDates;

    @TableField(exist = false)
    private String[] createDates;

    /**
     * 签章documentId
     */
    private String signatureDocumentId;

    /**
     * 签章contractId
     */
    private String signatureContractId;

    /**
     * 流程通过所需参数DTO
     */
    private CommitParamDTO<CwProjectReportData> CommitParamDTO;

    /**
     * 公章流程procInsId
     */
    private String procInsId1;

    /**
     * 公章流程processDefinitionId
     */
    private String processDefinitionId1;

    private String status1;

    /**
     * 公章流程表id
     */
    private String sid1;

    /**
     * 公章+执业章流程procInsId
     */
    private String procInsId2;

    /**
     * 公章+执业章流程processDefinitionId
     */
    private String processDefinitionId2;

    /**
     * 公章+执业章流程status
     */
    private String status2;

    /**
     * 公章+执业章流程表id
     */
    private String sid2;

    /**
     * 实体章流程procInsId
     */
    private String procInsIds3;

    /**
     * 实体章流程processDefinitionId
     */
    private String processDefinitionId3;

    /**
     * 实体章流程status
     */
    private String status3;

    /**
     * 实体章流程表id
     */
    private String sid3;

    /**
     * 电子签章文件地址
     */
    private String signatureUrl;

    /**
     * 报告实际制作人
     */
    private String realCreate;

    /**
     * 审计收费（元）
     */
    @Excel(name = "审计收费（元）",width = 12,orderNum = "9")
    private String auditFees;

    /**
     * 为签章附件信息
     */
    List<ProjectReportWorkAttachmentDTO> cwFileInfoList;

    /**
     * 附件信息
     */
    List<WorkAttachmentInfo> cwFileInfoList2;

    /**
     * 附件信息 - 报告号申请流程
     */
    List<WorkAttachmentInfo> cwFileInfoList3;

    /**
     * 已签章附件信息
     */
    List<ProjectReportWorkAttachmentDTO> signatureFileList;

    /**
     * 报告名称
     */
    @Excel(name = "报告名称",width = 40,orderNum = "4")
    private String reportName;
    /**
     * 被服务单位名称
     */
    @TableField(exist = false)
    @Excel(name = "客户名称",width = 40,orderNum = "5")
    private String servedUnitName;

    /**
     * 报告日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    @Excel(name = "报告日期",width = 25,orderNum = "17",exportFormat = "yyyy-MM-dd")
    private Date reportDate;

    /**
     * 报告类型
     */
    @TableField(exist = false)
    private String reportType;

    /**
     * 意见类型
     */
    @TableField(exist = false)
    private String opinionType;

    /**
     * 盖章状态
     */
    @TableField(exist = false)
    private String sealType;

    /**
     * 被服务单位id
     */
    private String servedUnitId;

    /**
     * 报告流水号
     */
    private String reportNumber;
    /**
     * 报告文号
     */
    @Excel(name = "报告文号",width = 12,orderNum = "6")
    private String reportNo;

    private String[] contractAmounts;

    /**
     * 报告复核流程id
     */
    private String procInsId3;

    /**
     * 报告复核流程状态
     */
    /**
     * 公章流程status
     */
    @Excel(name = "复核签章状态",width = 20,orderNum = "15")
    private String reviewStatus;

    /**
     * 质量复核审核通过时间
     */
    private Date auditTime;

    /**
     *  重复质量复核判定条件
     */
    private Boolean repetitionReviewFlag = false;

    /**
     *业务类型
     */
    private String businessType;

    /**
     *审计业务类型
     */
    private String auditBusinessType;

    /**
     *公司注册地址
     */
    private String registerAddress;

    /**
     *业务所在地
     */
    private String businessLocation;

    /**
     *是否数据证券业务
     */
    private String securityBusiness;

    /**
     * 复核信息表
     */
    private List<CwProofreadDetail> details;

    /*
    计算机文号
     */
    private String computerNo;

    /**
     * 本报告共印份数
     */
    private String allPrintNum;

    /**
     * 发出份数
     */
    private String issueNum;

    /**
     * 存档份数
     */
    private String placeOnFileNum;

    /**
     * 打印人签名
     */
    private String printedBy;

    /**
     * 校对人签名
     */
    private String checkAutograph;

    /**
     * 财务-报告表id
     */
    private String reportId;

    /**
     * 报告类型及标题
     */
    private String reportTitleType;

    /**
     * 一级复核需提请关注或修改的事项
     */
    private String needUpdate1;

    /**
     * 二级复核需提请关注或修改的事项
     */
    private String needUpdate2;

    /**
     * 三级复核需提请关注或修改的事项
     */
    private String needUpdate3;

    /**
     * 一级复核备注
     */
    private String remark1;

    /**
     * 二级复核备注
     */
    private String remark2;

    /**
     * 三级复核备注
     */
    private String remark3;

    /**
     * 财务-报告编号
     */
    private String reportReviewNo;

    /**
     * 下一个节点审核人信息
     */
    List<ReviewUser> reviewBys;

    private String reviewBy;

    /**
     * 项目经理2id
     */
    private String projectMaster2Id;

    /**
     * 项目经理2name
     */
    @Excel(name = "项目经理2",width = 12,orderNum = "12")
    private String projectMaster2Name;

    /**
     * 复核流程taskId
     */
    private String revTaskId;

    /**
     * 报告号申请流程taskId
     */
    private String revTaskId2;

    /**
     * 签章-电子章  流程taskId
     */
    private String signTaskId1;

    /**
     * 签章-公章+执业章  流程taskId
     */
    private String signTaskId2;

    /**
     * 签章-实体章  流程taskId
     */
    private String signTaskId3;

    /**
     * 数据审核人  报告复核
     */
    private List<String> auditUserIdsRev;

    /**
     * 数据审核人  签章-电子章
     */
    private List<String> auditUserIdsSign1;

    /**
     * 数据审核人  签章-公章+执业章
     */
    private List<String> auditUserIdsSign2;

    /**
     * 数据审核人  签章-实体章
     */
    private List<String> auditUserIdsSign3;

    /**
     * 所属行业
     */
    private String industry;

    /**
     * 业务对象
     */
    private String businessObjects;

    /**
     * 报备类型
     */
    private String filingType;

    /**
     * 合同名称
     */
    @Excel(name = "合同名称",width = 40,orderNum = "8")
    private String contractName;

    @TableField(exist = false)
    @Excel(name = "合同编号",width = 20,orderNum = "7")
    private String contractNo;

    /**
     * 签字注师审核状态
     */

    private String signatureAnnotatorStatus;

    /**
     * 修改原因
     */
    private String reason;

    /**
     * 修改签字注师流程id
     */
    private String procInsSigId;

    /**
     * 修改原因
     */
    private String sigReason;

    /**
     * 修改签字注师  流程taskId
     */
    private String taskSigId;

    //当前登录人角色是否是苏州报告签字盖章代办
    private String isXs;

    //撤回签章状态
    @TableField(exist = false)
    private String rebackStatus;
    @TableField(exist = false)
    private String procInsReId;
    @TableField(exist = false)
    private String procDefReId;
    @TableField(exist = false)
    private String revocationTaskId;
    //撤回签章原因
    @TableField(exist = false)
    private String rebackReason;
    //撤回签章id
    @TableField(exist = false)
    private String revocationId;

    /**
     * 发票编号
     */
    private String invoiceNumber;

    /**
     * 是否完成已开票(0:否,1:是,2:选择为1时审核通过后变为最终的结果)
     */
    private String isCompleteInvoice;

    /**
     * 签字注师1名字
     */
    @TableField(exist = false)
    private String signatureAnnotator1Name;
    /**
     * 签字注师2名字
     */
    @TableField(exist = false)
    private String signatureAnnotator2Name;
    /**
     * 实际创建人名字
     */
    @TableField(exist = false)
    private String realCreateName;

    private String isPreInvoice;

    /**
     * 项目分类
     */
    @Excel(name = "项目分类",width = 20,orderNum = "18")
    private String projectClassification;

    /**
     * 报备类型
     */
    @Excel(name = "报备类型",width = 20,orderNum = "19")
    private String projectType;

    /**
     * 报告日期
     */
    private String[] reportDates;

    /**
     * 审定金额(不含税)
     */
    @Excel(name = "审定金额(不含税/元)",width = 20,orderNum = "20")
    private String approvedNoIncludingTax;

    /**
     * 审定金额(含税)
     */
    @Excel(name = "审定金额(含税/元)",width = 20,orderNum = "21")
    private String approvedIncludingTax;

    /**
     * 银行函证发出数量
     */
    @Excel(name = "银行函证发出数量(份)",width = 20,orderNum = "22")
    private String bankLettersCount;

    /**
     * 其中采用数字函证发函数量
     */
    @Excel(name = "其中采用数字函证发函数量(份)",width = 28,orderNum = "23")
    private String digitalLetterCount;



}
