package com.yunyan.business.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yunyan.common.annotation.Excel;

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


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

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

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

    @Deprecated
    /** excel值的 JSON字符串的第二部分表格数据 */
    @ApiModelProperty(value = "excel值的 JSON字符串的第二部分表格数据")
    private String jsonTableContent;

    /** JSON字符串.  填写数据, 比对数据 字段名: 字段值 */
    @Deprecated
    @ApiModelProperty(value = "JSON字符串.  填写数据, 比对数据 字段名: 字段值")
    private String jsonFillContent;

    /** 本年excel值的 JSON字符串的表格数据 */
    @Deprecated
    @ApiModelProperty(value = "不保存读取, 本年excel值的 JSON字符串的表格数据, 只保存路径")
    private String jsonYearContent;

    /** 前一年excel值的 JSON字符串的表格数据 */
    @Deprecated
    @ApiModelProperty(value = "不保存 前一年excel值的 JSON字符串的表格数据, 改成只保存前一年数据文件的 url")
    private String jsonLastYearContent;

    /** excel文件名/标题 */
    @ApiModelProperty(value = "excel文件名/标题")
    private String excelTitle;

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

    /** excel的保存url位置 */
    @ApiModelProperty(value = "excel的保存url位置")
    private String excelUrl;

    @ApiModelProperty(value = "excel文件上年的的保存url位置")
    private String excelUrlLast;

    /** 用户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;

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

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

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

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

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

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

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

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

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

    /** (废弃)单位公开不一致性原因 */
    @ApiModelProperty(value = "(废弃)单位公开不一致性原因")
    private String publicInconsistentReason;

    /** 创建时间/填报时间 */
    @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.INSERT)
    @ApiModelProperty(value = "创建者")
    private String createBy;

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

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

    /** 审核者 */
    @ApiModelProperty(value = "审核者")
    private String auditBy;

    @Deprecated
    /**审核的状态: 0-未审核, 1-申请审核, 2-一审通过, 3-一审拒绝, 4-二审通过, 5-二审拒绝 */
    @ApiModelProperty(value = "(去掉)审核的状态: 0-未审核, 1-申请审核, 2-一审通过, 3-一审拒绝, 4-二审通过, 5-二审拒绝", hidden = true)
    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;

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

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

    /** 逻辑删除(1-删除，0-未删) */
            //逻辑删除（就是在delete字段做标记，不是真正意义上的删除）
    @JsonIgnore
    @TableLogic(value = "0",delval = "1")
    @TableField(select = false)
    @ApiModelProperty(value = "逻辑删除(1-删除，0-未删)", hidden = true)
    private Integer deleted;

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

    /** 区划名称 */
    @TableField(select = false)
    @ApiModelProperty(value = "区划名称")
    private String area;

    @ApiModelProperty(value = "导出文档的内容 json")
    private String jsonFileContent;

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

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

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

    @ApiModelProperty(value = "敏感词检测状态: 0-默认未检测通过, 1-检测通过 ")
    private Integer checkAlertStatus;

}
