package com.yunyan.business.pojo.admin.vo;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yunyan.common.core.domain.BaseEntityVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;


/**
 * 报告数据对象 tb_final_data
 *
 * @author yunyan
 * @date 2023-07-27
 */
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@TableName(value = "tb_final_data")
public class FinalDataListVo extends BaseEntityVo
{
    private static final long serialVersionUID = 1L;

    /** ID主键 */
    @JsonSerialize(using= ToStringSerializer.class)
    @ApiModelProperty(value = "ID主键")
    private Long id;

    /** 类型: 1-决算, 2-预算, 默认1 */
    @ApiModelProperty(value = "类型: 1-决算, 2-预算, 默认1")
    private Integer type;

    /** 用户ID */
    @ApiModelProperty(value = "用户ID")
    private Long userId;

    /** 部门id/单位 */
    @ApiModelProperty(value = "部门id/单位")
    private Long deptId;

    /** 年份(如2023) */
    @ApiModelProperty(value = "年份(如2023)")
    private String year;

    /** 上级机构id/单位 */
    @ApiModelProperty(value = "上级机构id/单位")
    private Long parentDeptId;

    /** 批复时间(yyyy-MM-dd 取数据管理的填报开始时间) */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "批复时间(yyyy-MM-dd 取数据管理的填报开始时间)")
    private Date fillBeginTime;

    /** 截止填报时间(yyyy-MM-dd 取数据管理的填报截止时间) */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "截止填报时间(yyyy-MM-dd 取数据管理的填报截止时间)")
    private Date fillEndTime;

    /** 是否公开, 1-是，0-非 */
    @ApiModelProperty(value = "是否公开, 1-是，0-非")
    private Integer publicStatus;

    /** 公开时间(录入网址的时间) */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "公开时间(录入网址的时间)")
    private Date publicTime;

    /** 单位公开一致性: 1-是，0-非 */
    @ApiModelProperty(value = "单位公开一致性: 1-是，0-非")
    private Integer publicConsistent;

    /** 单位公开网址 */
    @ApiModelProperty(value = "单位公开网址")
    private String publicSite;

    /** 单位公开下载链接 */
    @ApiModelProperty(value = "单位公开下载链接")
    private String publicDownloadUrl;

    /** 状态: 0-默认 */
    @ApiModelProperty(value = "状态: 0-默认, 1-本年数据采集, 2-去年数据采集, 4-填报中, 6-申请审核中, 8-单位内审通过(一审) , 9-单位内审驳回(一审) , 10-财政审核通过(二审) , 11- 财政审核驳回(二审), 14-已生成报告, 16-已填公开网址")
    private Integer status;

    /** (废弃)时间合规性: 1-是，0-非 */
    @ApiModelProperty(value = "(废弃)时间合规性: 1-是，0-非")
    private Long timeComplianceStatus;

    /** (废弃)下载报告时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "(废弃)下载报告时间")
    private Date downloadTime;

    /** (废弃)网址录入时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "(废弃)网址录入时间")
    private Date siteRecordTime;

    /** 创建时间/填报时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建时间/填报时间")
    private Date createTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.UPDATE)
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    /** 更新者 */
    @TableField(fill = FieldFill.UPDATE)
    @ApiModelProperty(value = "更新者")
    private String updateBy;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "审核时间")
    private Date auditTime;

    /**审核的状态: 0-未审核, 1-申请审核, 2-一审通过, 3-一审拒绝, 4-二审通过, 5-二审拒绝 */
    @ApiModelProperty(value = "审核的状态: 0-未审核, 1-申请审核, 2-一审通过, 3-一审拒绝, 4-二审通过, 5-二审拒绝")
    private Integer auditStatus;

    /** 最近生成PDF的时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "最近生成PDF的时间")
    private Date generateTime;

    /** 最近生成PDF的操作者 */
    @ApiModelProperty(value = "最近生成PDF的操作者")
    private String generateBy;

    /** 最近生成PDF的状态: 0-未生成, 1-成功, 2-失败 */
    @ApiModelProperty(value = "最近生成PDF的状态: 0-未生成, 1-成功, 2-失败")
    private Integer generateStatus;

    /** PDF的保存url */
    @ApiModelProperty(value = "PDF的保存url")
    private String pdfUrl;

    @ApiModelProperty(value = "审核驳回的原因(非必填， 驳回时填写)")
    private String auditRemark;

    @ApiModelProperty(value = "财政审核驳回的原因(非必填， 驳回时填写)")
    private String twoAuditRemark;

    @ApiModelProperty(value = "excel中的编制单位")
    private String excelDeptName;

    //关联

    @ApiModelProperty(value = "部门名")
    private String deptName;

    @ApiModelProperty(value = "上级机构")
    private String parentDeptName;

    @ApiModelProperty(value = "归属区域")
    private String area;

    /** 机构编码 */
    @ApiModelProperty(value = "机构编码")
    private String deptCode;

    @ApiModelProperty(value = "区域编码")
    private String areaCode;

    @ApiModelProperty(value = "是否符合填报日期, 0-不符合填报日期，1-符合日期(>0的符合)")
    private Integer fillDateNum;

    @ApiModelProperty(value = "公开网址有效性： 1-有效, 0-无效")
    private Integer publicSiteAccess;

    @ApiModelProperty(value = "公开下载链接的有效性: 1-有效, 0-无效")
    private Integer publicDownloadUrlAccess;

    @ApiModelProperty(value = "单位级别: 0-总级，1-财政局, 2-一级，3-二级, 默认3")
    private Integer deptLevel;

    @ApiModelProperty(value = "信息平台网址(百色使用)")
    private String infoSite;

    @ApiModelProperty(value = "模板导出的类型")
    private String templateExportType;

    @ApiModelProperty(value = "附件状态: 1-有附件下载, 0-没附件下载")
    private Integer attachStatus;

    @ApiModelProperty(value = "附件的数量,当大于0时, 显示下载的按钮")
    private Long reportFileNum;

}
