feat: 金蝶票池选票仅出可用票并改造有界循环补页游标分页

- 选票过滤:剩余可用金额availableAmount>0且金额使用状态amountUseStatus=0(未使用),保存落镜像前按同口径复核,防选票到保存之间票被他人使用造成超用
- 单据使用状态不再作为前端条件,后端固定下推未用(expenseStatus=1)
- 分页改造:单请求最多3次远程调用循环补页凑满一页,返回nextCursor(远程页码:已消费过滤行数)供下一页续扫,防过滤后翻页漏行重行,游标解析失败降级页码锚定
- 新增剩余可用金额availableTaxAmount展示字段(金蝶可用税额口径,不改可认领金额的价税合计口径)
This commit is contained in:
刘泉佳
2026-09-23 15:06:07 +08:00
parent 8c52d47258
commit c91ab359ba
5 changed files with 167 additions and 56 deletions
@@ -73,12 +73,6 @@ public class KingdeeInvoicePoolQueryDTO implements Serializable {
@Schema(description = "开票日期止 yyyy-MM-dd")
private String invoiceDateEnd;
/**
* 发票类型编码(票易通字典,如 26/27)
*/
@Schema(description = "发票类型编码(票易通字典,如 26/27)")
private String invoiceType;
/**
* 销方税号,精确
*/
@@ -92,8 +86,14 @@ public class KingdeeInvoicePoolQueryDTO implements Serializable {
private String buyerTaxNo;
/**
* 单据使用状态[1未用,30在用,60已用,65已入账],空不限(A801-1 原生条件)
* 发票类型编码(票易通字典,如 26/27)
*/
@Schema(description = "单据使用状态[1未用,30在用,60已用,65已入账]")
private String expenseStatus;
@Schema(description = "发票类型编码(票易通字典,如 26/27)")
private String invoiceType;
/**
* 续扫游标:下一页翻页时原样回传上页返回的 nextCursor,空表示按页码锚定重新扫描
*/
@Schema(description = "续扫游标(下一页请求回传上页 nextCursor)")
private String cursor;
}
@@ -56,7 +56,11 @@ public class KingdeeInvoicePoolPageVO implements Serializable {
@Schema(description = "每页条数")
private Long size;
/** 是否还有下一页(服务端多取 1 条探测) */
/** 是否还有下一页(服务端有界补页扫描判断) */
@Schema(description = "是否还有下一页")
private Boolean hasMore;
/** 下一页续扫游标("远程页码:已消费过滤行数"),null 表示没有更多;翻下一页时原样回传 */
@Schema(description = "下一页续扫游标,null 表示没有更多")
private String nextCursor;
}
@@ -139,6 +139,10 @@ public class KingdeeInvoicePoolVO implements Serializable {
@Schema(description = "可认领金额")
private BigDecimal availableInvoiceAmount;
/** 剩余可用金额(金蝶可用税额口径,与可认领金额的价税合计口径不同) */
@Schema(description = "剩余可用金额")
private BigDecimal availableTaxAmount;
/** 默认认领金额,口径同发票金额 */
@Schema(description = "默认认领金额")
private BigDecimal matchedAmount;