From 2943a7c320cc33625258eebe6456e3bd97974c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Mon, 2 Nov 2026 19:53:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=98=E6=AC=BE=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8=E6=8C=87=E5=AE=9A=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=82=AC=E6=B5=AE=E5=B1=95=E7=A4=BA=E5=A4=B1=E8=B4=A5=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/vo/PaymentApplicationVO.java | 2 ++ .../impl/PaymentApplicationServiceImpl.java | 20 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/vo/PaymentApplicationVO.java b/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/vo/PaymentApplicationVO.java index 3e7f0690..2f2c481b 100644 --- a/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/vo/PaymentApplicationVO.java +++ b/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/vo/PaymentApplicationVO.java @@ -52,6 +52,8 @@ public class PaymentApplicationVO extends PaymentApplication implements KingdeeU @TableField(exist = false) private Integer kingdeeTryCount; /** 已指定应付聚合态(assigned全部已指定/failed存在指定失败/unspecified存在未指定),空展示- */ @TableField(exist = false) private String kingdeeAssignStatus; + /** 指定失败原因(存在指定失败时聚合各票原因,悬浮展示) */ + @TableField(exist = false) private String kingdeeAssignFailReason; /** 金蝶解锁终态标识(unlocked 锁记录回填):解锁时间非空即代表该单曾被金蝶解锁/删单,供页面展示明显标识 */ @TableField(exist = false) private LocalDateTime kingdeeUnlockTime; /** 金蝶侧解锁操作人(回调报文 operator) */ diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java index 91c5bb33..a9ff891b 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java @@ -268,18 +268,28 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl receipt, (left, right) -> left)); for (PaymentApplicationVO vo : rows) { - List statuses = receiptIdsBySettlement.getOrDefault(vo.getSettlementId(), List.of()).stream() - .map(receiptById::get).filter(Objects::nonNull) + List claimed = receiptIdsBySettlement.getOrDefault(vo.getSettlementId(), List.of()).stream() + .map(receiptById::get).filter(Objects::nonNull).toList(); + if (claimed.isEmpty()) { + continue; + } + List statuses = claimed.stream() .map(receipt -> Func.toStrWithEmpty(receipt.getKingdeePushStatus(), KingdeeBfiConstant.RECEIVED_PUSH_UNSYNCED)) .toList(); - if (statuses.isEmpty()) { - continue; - } String status = statuses.contains(KingdeeBfiConstant.RECEIVED_PUSH_FAILED) ? "failed" : statuses.stream().allMatch(KingdeeBfiConstant.RECEIVED_PUSH_ASSIGNED::equals) ? "assigned" : "unspecified"; vo.setKingdeeAssignStatus(status); + // 指定失败行聚合各票失败原因,供悬浮展示 + if ("failed".equals(status)) { + vo.setKingdeeAssignFailReason(claimed.stream() + .filter(receipt -> KingdeeBfiConstant.RECEIVED_PUSH_FAILED.equals( + Func.toStrWithEmpty(receipt.getKingdeePushStatus(), KingdeeBfiConstant.RECEIVED_PUSH_UNSYNCED))) + .map(receipt -> "发票" + Func.toStrWithEmpty(receipt.getInvoiceNo(), String.valueOf(receipt.getId())) + + ":" + Func.toStrWithEmpty(receipt.getKingdeePushMsg(), "推送失败")) + .collect(Collectors.joining(";"))); + } } }