✨ 收票管理金蝶全票池同步:镜像表新增票池字段(幂等脚本)与实体字段备注
This commit is contained in:
+87
@@ -48,36 +48,123 @@ import java.time.LocalDate;
|
||||
@Schema(description = "收票登记")
|
||||
public class InvoiceReceipt extends TenantEntity {
|
||||
@Serial private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 关联金蝶票据池镜像主键(blade_kingdee_invoice_pool.id)
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long kingdeeInvoicePoolId;
|
||||
/**
|
||||
* 发票号码(同租户唯一,一张发票仅可登记一次)
|
||||
*/
|
||||
private String invoiceNo;
|
||||
/**
|
||||
* 开票日期
|
||||
*/
|
||||
private LocalDate invoiceDate;
|
||||
/**
|
||||
* 发票类型(如「数电发票(增值税专用发票)」)
|
||||
*/
|
||||
private String invoiceType;
|
||||
/**
|
||||
* 税率(百分数,13 表示 13%)
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
/**
|
||||
* 开票金额
|
||||
*/
|
||||
private BigDecimal invoiceAmount;
|
||||
/**
|
||||
* 税额
|
||||
*/
|
||||
private BigDecimal taxAmount;
|
||||
/**
|
||||
* 受票单位(购方)
|
||||
*/
|
||||
private String receiverName;
|
||||
/**
|
||||
* 开票单位(销方)
|
||||
*/
|
||||
private String issuerName;
|
||||
/**
|
||||
* 所属项目id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long projectId;
|
||||
/**
|
||||
* 所属项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
/**
|
||||
* 所属组织id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long deptId;
|
||||
/**
|
||||
* 所属组织名称
|
||||
*/
|
||||
private String deptName;
|
||||
/**
|
||||
* 付款方
|
||||
*/
|
||||
private String payerName;
|
||||
/**
|
||||
* 收款方
|
||||
*/
|
||||
private String payeeName;
|
||||
/**
|
||||
* 开票单位开户银行
|
||||
*/
|
||||
private String bankName;
|
||||
/**
|
||||
* 开票单位银行账号
|
||||
*/
|
||||
private String bankAccount;
|
||||
/**
|
||||
* 开票单位开户网点
|
||||
*/
|
||||
private String issuingBank;
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
private String phone;
|
||||
/**
|
||||
* 客户邮箱(分号分隔,最多 3 个)
|
||||
*/
|
||||
private String customerEmails;
|
||||
/**
|
||||
* 部门邮箱(分号分隔,最多 3 个)
|
||||
*/
|
||||
private String departmentEmails;
|
||||
/**
|
||||
* 审批状态(draft 草稿 / reviewing 审批中 / approved 审批通过 / returned 已驳回 / voided 已作废)
|
||||
*/
|
||||
private String approvalStatus;
|
||||
/**
|
||||
* 当前审批节点
|
||||
*/
|
||||
private String currentNode;
|
||||
/**
|
||||
* 当前处理人
|
||||
*/
|
||||
private String currentProcessor;
|
||||
/**
|
||||
* 金蝶单据号(绑定票池后取发票流水号 serialNo)
|
||||
*/
|
||||
private String kingdeeBillNo;
|
||||
/**
|
||||
* 金蝶同步状态(unsynced 未同步 / synced 已同步 / failed 同步失败)
|
||||
*/
|
||||
private String kingdeeStatus;
|
||||
/**
|
||||
* 附件信息JSON
|
||||
*/
|
||||
private String attachmentsJson;
|
||||
/**
|
||||
* 备注(最多 200 字)
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 作废原因
|
||||
*/
|
||||
private String voidReason;
|
||||
}
|
||||
|
||||
+70
@@ -47,22 +47,92 @@ import java.time.LocalDateTime;
|
||||
@Schema(description = "金蝶进项发票票据池镜像")
|
||||
public class KingdeeInvoicePool extends TenantEntity {
|
||||
@Serial private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 发票号码(同租户唯一,A801-1 invoiceNo,镜像 upsert 匹配键)
|
||||
*/
|
||||
private String invoiceNo;
|
||||
/**
|
||||
* 金蝶发票流水号(票池唯一标识,A801-1 serialNo)
|
||||
*/
|
||||
private String serialNo;
|
||||
/**
|
||||
* 开票日期
|
||||
*/
|
||||
private LocalDate invoiceDate;
|
||||
/**
|
||||
* 发票类型(票易通编码转名称后落库,如「数电发票(增值税专用发票)」)
|
||||
*/
|
||||
private String invoiceType;
|
||||
/**
|
||||
* 税率(百分数,13 表示 13%)
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
/**
|
||||
* 开票金额(A801-1 价税合计 totalAmount)
|
||||
*/
|
||||
private BigDecimal invoiceAmount;
|
||||
/**
|
||||
* 税额
|
||||
*/
|
||||
private BigDecimal taxAmount;
|
||||
/**
|
||||
* 受票单位(购方名称,A801-1 buyerName)
|
||||
*/
|
||||
private String receiverName;
|
||||
/**
|
||||
* 购方税号(A801-1 buyerTaxNo)
|
||||
*/
|
||||
private String buyerTaxNo;
|
||||
/**
|
||||
* 开票单位(销方名称,A801-1 salerName)
|
||||
*/
|
||||
private String issuerName;
|
||||
/**
|
||||
* 销方税号(A801-1 salerTaxNo)
|
||||
*/
|
||||
private String salerTaxNo;
|
||||
/**
|
||||
* 开票单位开户银行
|
||||
*/
|
||||
private String bankName;
|
||||
/**
|
||||
* 开票单位银行账号
|
||||
*/
|
||||
private String bankAccount;
|
||||
/**
|
||||
* 开票单位开户网点
|
||||
*/
|
||||
private String issuingBank;
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
private String phone;
|
||||
/**
|
||||
* 客户邮箱(分号分隔,最多 3 个)
|
||||
*/
|
||||
private String customerEmails;
|
||||
/**
|
||||
* 部门邮箱(分号分隔,最多 3 个)
|
||||
*/
|
||||
private String departmentEmails;
|
||||
/**
|
||||
* 金蝶单据号(票池发票取发票流水号 serialNo)
|
||||
*/
|
||||
private String kingdeeBillNo;
|
||||
/**
|
||||
* 金蝶同步状态(unsynced 未同步 / synced 已同步 / failed 同步失败)
|
||||
*/
|
||||
private String kingdeeStatus;
|
||||
/**
|
||||
* 查验状态(A801-1 checkStatus,0 未查验 / 1 通过 / 2 不通过)
|
||||
*/
|
||||
private String checkStatus;
|
||||
/**
|
||||
* 附件信息JSON(结构 {"source":"piaozone","path":"A801-2下载path","name":"文件名"})
|
||||
*/
|
||||
private String attachmentsJson;
|
||||
/**
|
||||
* 票池数据更新时间(A801-1 billCreateTime,镜像排序字段)
|
||||
*/
|
||||
private LocalDateTime sourceUpdatedTime;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
-- 收票管理:金蝶全票池发票同步(A801-1 查询 + 批量同步 + 定时绑定关联)
|
||||
-- 票据池镜像表新增金蝶票池字段:
|
||||
-- serial_no 发票流水号(票池唯一标识,A801-1 serialNo,同步回填 kingdee_bill_no)
|
||||
-- buyer_tax_no 购方税号(A801-1 buyerTaxNo)
|
||||
-- saler_tax_no 销方税号(A801-1 salerTaxNo)
|
||||
-- check_status 查验状态(A801-1 checkStatus,0 未查验 / 1 通过 / 2 不通过)
|
||||
-- 由手动批量同步与定时绑定任务按 tenant_id + invoice_no upsert 回填;
|
||||
-- 发票号码唯一索引 uk_kingdee_invoice_pool_no(tenant_id, invoice_no)建表时已存在,无需新增
|
||||
|
||||
-- 以下结构升级支持重复执行
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) = 0,
|
||||
'ALTER TABLE `blade_kingdee_invoice_pool` ADD COLUMN `serial_no` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶发票流水号(票池唯一标识)'' AFTER `invoice_no`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_kingdee_invoice_pool'
|
||||
AND COLUMN_NAME = 'serial_no'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) = 0,
|
||||
'ALTER TABLE `blade_kingdee_invoice_pool` ADD COLUMN `buyer_tax_no` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''购方税号'' AFTER `receiver_name`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_kingdee_invoice_pool'
|
||||
AND COLUMN_NAME = 'buyer_tax_no'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) = 0,
|
||||
'ALTER TABLE `blade_kingdee_invoice_pool` ADD COLUMN `saler_tax_no` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''销方税号'' AFTER `issuer_name`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_kingdee_invoice_pool'
|
||||
AND COLUMN_NAME = 'saler_tax_no'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) = 0,
|
||||
'ALTER TABLE `blade_kingdee_invoice_pool` ADD COLUMN `check_status` varchar(8) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''查验状态(0未查验/1通过/2不通过)'' AFTER `kingdee_status`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_kingdee_invoice_pool'
|
||||
AND COLUMN_NAME = 'check_status'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
Reference in New Issue
Block a user