fix: 收款结算单列表不聚合已指定应付状态

This commit is contained in:
刘泉佳
2026-11-04 11:02:36 +08:00
parent aff59e8541
commit fbee521ff4
@@ -231,20 +231,24 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl<FormalSettlemen
}
/**
* 填充已指定应付聚合态:按本页结算单一次批量查认领关系与收票登记,避免 N+1。
* 填充已指定应付聚合态(仅付款结算单):按本页结算单一次批量查认领关系与收票登记,避免 N+1。
* 聚合规则:任一指定失败 → failed;全部已指定 → assigned;其余(有认领但未指定/未推送)→ unspecified;
* 无认领收票或全部认领票无效不填充,前端展示"-"
*
* @param rows 本页 VO 列表
*/
private void fillKingdeeAssignStatus(List<FormalSettlementVO> rows) {
if (Func.isEmpty(rows)) {
// 已指定应付仅付款结算单(先票后款 A302-6)有,收款结算单不参与聚合,避免无意义查询与字段下发
List<FormalSettlementVO> payableRows = rows.stream()
.filter(row -> "payable".equals(row.getSettlementType()))
.toList();
if (Func.isEmpty(payableRows)) {
return;
}
List<InvoiceReceiptSettlement> relations = invoiceReceiptSettlementMapper.selectList(
Wrappers.<InvoiceReceiptSettlement>lambdaQuery()
.in(InvoiceReceiptSettlement::getFormalSettlementId,
rows.stream().map(FormalSettlementVO::getId).filter(Objects::nonNull).toList()));
payableRows.stream().map(FormalSettlementVO::getId).filter(Objects::nonNull).toList()));
if (relations.isEmpty()) {
return;
}
@@ -263,7 +267,7 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl<FormalSettlemen
receiptsBySettlement.computeIfAbsent(relation.getFormalSettlementId(), key -> new ArrayList<>())
.add(receipt);
}
for (FormalSettlementVO vo : rows) {
for (FormalSettlementVO vo : payableRows) {
List<InvoiceReceipt> claimed = receiptsBySettlement.get(vo.getId());
if (Func.isEmpty(claimed)) {
continue;