⚡ A801-1 全票池发票查询改为 pageNo/pageSize 透传分页

- IBfiService.queryInvoicePool 改为单页查询返回 BfiPageVO,BfiServiceImpl 移除 queryAllPages 全量翻页
- 正式结算单认领查询透传 current/size,多取 1 条探测 hasMore 并合成 total,前端 R<IPage> 契约不变
- 移除内存作废过滤(rim 无对应查询条件,透传分页下会产生页内空洞)
- 同步更新 BfiUtil 技术文档 A801-1 说明与使用方清单
This commit is contained in:
刘泉佳
2026-09-20 21:08:42 +08:00
parent f9433cbc78
commit 7ec3b2adbc
5 changed files with 47 additions and 40 deletions
@@ -278,12 +278,12 @@ public interface IBfiService {
BfiBillSaveResultVO pushClaimResult(BfiClaimPushDTO param);
/**
* A801-1 查询全票池发票数据(自动翻页汇总全量)
* A801-1 查询全票池发票数据(单页查询)
*
* @param param 查询参数,messageType/messageId 由服务端填充;data.pageSize 必填,作为单页大小与翻页终止依据
* @return 票池发票数据全量列表
* @param param 查询参数,messageType/messageId 由服务端填充;queryParam.pageNo/pageSize 必填
* @return 当前页票池发票数据,rim 契约不返回总数与末页标识
*/
List<BfiInvoicePoolVO> queryInvoicePool(BfiInvoicePoolQueryDTO param);
BfiPageVO<BfiInvoicePoolVO> queryInvoicePool(BfiInvoicePoolQueryDTO param);
/**
* A801-2 进项发票下载(文件下载)
@@ -484,30 +484,28 @@ public class BfiServiceImpl implements IBfiService {
}
@Override
public List<BfiInvoicePoolVO> queryInvoicePool(BfiInvoicePoolQueryDTO param) {
public BfiPageVO<BfiInvoicePoolVO> queryInvoicePool(BfiInvoicePoolQueryDTO param) {
if (param == null || param.getQueryParam() == null) {
throw new BfiException("查询BFI全票池发票失败,查询参数不能为空");
}
param.setMessageType(BfiConstant.MESSAGE_TYPE_INVOICE_QUERY);
// A801-1 rim 契约仅返回当前页数据且无总数,统一通过通用翻页工具取全量,由调用方自行分页
BfiInvoicePoolQueryDataDTO data = param.getQueryParam();
if (data.getPageNo() == null || data.getPageSize() == null) {
throw new BfiException("查询BFI全票池发票失败,pageNo与pageSize不能为空");
}
param.setMessageType(BfiConstant.MESSAGE_TYPE_INVOICE_QUERY);
// rim 契约要求每次请求携带唯一 messageId
param.setMessageId(UUID.randomUUID().toString());
long start = System.currentTimeMillis();
log.info("调用BFI接口 全票池发票查询开始 pageSize:{}", data.getPageSize());
List<BfiInvoicePoolVO> invoices = BfiUtil.queryAllPages(pageNo -> {
// 翻页工具逐页注入页码;rim 契约要求每次请求携带唯一 messageId
data.setPageNo(pageNo);
param.setMessageId(UUID.randomUUID().toString());
BfiResultVO<List<BfiInvoicePoolVO>> result = commonRimCall("全票池发票查询",
() -> client.invoicePoolQuery(getAccessToken(), param));
List<BfiInvoicePoolVO> rows = result.getData() != null ? result.getData() : List.of();
// rim 契约无 lastPage,包装为 BfiPageVO 借助"数据不满一页即末页"规则终止翻页
BfiPageVO<BfiInvoicePoolVO> page = new BfiPageVO<>();
page.setRows(rows);
page.setPageSize(data.getPageSize());
return page;
});
log.info("调用BFI接口 全票池发票查询结束 耗时:{}ms,全量 {} 条", System.currentTimeMillis() - start, invoices.size());
return invoices;
log.info("调用BFI接口 全票池发票查询开始 pageNo:{},pageSize:{}", data.getPageNo(), data.getPageSize());
BfiResultVO<List<BfiInvoicePoolVO>> result = commonRimCall("全票池发票查询",
() -> client.invoicePoolQuery(getAccessToken(), param));
List<BfiInvoicePoolVO> rows = result.getData() != null ? result.getData() : List.of();
BfiPageVO<BfiInvoicePoolVO> page = new BfiPageVO<>();
page.setPageNo(data.getPageNo());
page.setPageSize(data.getPageSize());
page.setRows(rows);
log.info("调用BFI接口 全票池发票查询结束 耗时:{}ms,本页 {} 条", System.currentTimeMillis() - start, rows.size());
return page;
}
@Override