package com.zksy.data.domain.po;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.zksy.data.domain.po.BasePo;
import com.zksy.data.utils.CustomDateDeserializer;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data  // Lombok 的 Data 注解自动生成 getter, setter, toString 等方法
@TableName(value = "xcr_invoice_issuance")  // MyBatis-Plus 的 TableName 注解指定对应的数据库表名
public class XcrInvoiceIssuance extends BasePo implements Serializable {

    @TableField("FPKJXXUUID")
    @JsonProperty("FPKJXXUUID")
    private String FPKJXXUUID;  // 代开序号 主键

    @TableField("YSYSKMXUUID")
    @JsonProperty("YSYSKMXUUID")
    private String YSYSKMXUUID;  // 税款序号 主键

    @TableField("TRANO")
    @JsonProperty("TRANO")
    private String TRANO;  // 交易流水号 主键

    @TableField("RECID")
    @JsonProperty("RECID")
    private String RECID;  // 记录日志表主键

    @TableField("TAXORGCODE")
    @JsonProperty("TAXORGCODE")
    private String TAXORGCODE;  // 征收机关代码

    @TableField("PAYBNKNO")
    @JsonProperty("PAYBNKNO")
    private String PAYBNKNO;  // 付款行行号

    @TableField("ORIMSGNO")
    @JsonProperty("ORIMSGNO")
    private String ORIMSGNO;  // 原报文编号

    @TableField("TRAAMT")
    @JsonProperty("TRAAMT")
    private BigDecimal TRAAMT;  // 交易金额

    @TableField("PAYEROPBKNO")
    @JsonProperty("PAYEROPBKNO")
    private String PAYEROPBKNO;  // 付款开户行行号

    @TableField("PAYEROPBKNAME")
    @JsonProperty("PAYEROPBKNAME")
    private String PAYEROPBKNAME;  // 付款开户行名称

    @TableField("HANDORGNAME")
    @JsonProperty("HANDORGNAME")
    private String HANDORGNAME;  // 缴款单位名称

    @TableField("PAYACCT")
    @JsonProperty("PAYACCT")
    private String PAYACCT;  // 付款账户

    @TableField("TAXVOUNO")
    @JsonProperty("TAXVOUNO")
    private String TAXVOUNO;  // 税票号码

    @TableField("BILLDATE")
    @JsonProperty("BILLDATE")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date BILLDATE;  // 开票日期

    @TableField("TAXPAYCODE")
    @JsonProperty("TAXPAYCODE")
    private String TAXPAYCODE;  // 纳税人编码

    @TableField("TAXPAYNAME")
    @JsonProperty("TAXPAYNAME")
    private String TAXPAYNAME;  // 纳税人名称

    @TableField("BUDGETTYPE")
    @JsonProperty("BUDGETTYPE")
    private String BUDGETTYPE;  // 预算种类

    @TableField("TRIMSIGN")
    @JsonProperty("TRIMSIGN")
    private String TRIMSIGN;  // 整理期标志

    @TableField("CORPCODE")
    @JsonProperty("CORPCODE")
    private String CORPCODE;  // 企业代码

    @TableField("CORPNAME")
    @JsonProperty("CORPNAME")
    private String CORPNAME;  // 企业名称

    @TableField("CORPTYPE")
    @JsonProperty("CORPTYPE")
    private String CORPTYPE;  // 企业注册类型

    @TableField("BUDGETSUBJECTCODE")
    @JsonProperty("BUDGETSUBJECTCODE")
    private String BUDGETSUBJECTCODE;  // 预算科目代码

    @TableField("BUDGETSUBJECTNAME")
    @JsonProperty("BUDGETSUBJECTNAME")
    private String BUDGETSUBJECTNAME;  // 预算科目名称

    @TableField("LIMITDATE")
    @JsonProperty("LIMITDATE")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date LIMITDATE;  // 限缴日期

    @TableField("TAXTYPECODE")
    @JsonProperty("TAXTYPECODE")
    private String TAXTYPECODE;  // 税种代码

    @TableField("TAXTYPENAME")
    @JsonProperty("TAXTYPENAME")
    private String TAXTYPENAME;  // 税种名称

    @TableField("BUDGETLEVELCODE")
    @JsonProperty("BUDGETLEVELCODE")
    private String BUDGETLEVELCODE;  // 预算级次代码

    @TableField("BUDGETLEVELNAME")
    @JsonProperty("BUDGETLEVELNAME")
    private String BUDGETLEVELNAME;  // 预算级次名称

    @TableField("TAXSTARTDATE")
    @JsonProperty("TAXSTARTDATE")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date TAXSTARTDATE;  // 税款所属日期起

    @TableField("TAXENDDATE")
    @JsonProperty("TAXENDDATE")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date TAXENDDATE;  // 税款所属日期止

    @TableField("VICESIGN")
    @JsonProperty("VICESIGN")
    private String VICESIGN;  // 辅助标志

    @TableField("TAXTYPE")
    @JsonProperty("TAXTYPE")
    private String TAXTYPE;  // 税款类型

    @TableField("REMARK")
    @JsonProperty("REMARK")
    private String REMARK;  // 备注

    @TableField("REMARK1")
    @JsonProperty("REMARK1")
    private String REMARK1;  // 备注1

    @TableField("NSRDLJ")
    @JsonProperty("NSRDLJ")
    private String NSRDLJ;  // 纳税人代理键

    @TableField("OPSTAT")
    @JsonProperty("OPSTAT")
    private String OPSTAT;  // 处理状态

    @JsonProperty("APPLYDATE")
    @TableField(exist = false)
    private String APPLYDATE;  // 申请日期

    @TableField("ENTERINGTIME")
    @JsonProperty("ENTERINGTIME")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date ENTERINGTIME;  // 数据接入日期

    @TableField("APPLYDATE")
    private Date a;
}