From 1443c75b564d65e5bc1c7071c12fbf1419b4a57d 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, 9 Nov 2026 11:36:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DMK=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=AE=A2=E5=95=86=E5=AE=A1=E6=89=B9=E9=80=9A=E8=BF=87=E5=90=8E?= =?UTF-8?q?=E6=9C=AA=E8=87=AA=E5=8A=A8=E6=8E=A8=E9=80=81=E9=87=91=E8=9D=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 开启MK字典后客商审批走流程回调 approveFromProcess,仅落审批状态不推送金蝶; 新增 syncKingdeeAfterApproval:两个 MK 消息入口审批通过后即时推送, 单飞锁防双入口并发双推,失败仅落推送失败状态不影响审批结果(与页面 /approve 口径一致)。 --- .../transport/mk/MkProcessBizHandlers.java | 7 ++++++- .../service/ICustomerArchiveService.java | 8 ++++++++ .../CustomerArchivePublicProcessService.java | 2 ++ .../impl/CustomerArchiveServiceImpl.java | 20 +++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/mk/MkProcessBizHandlers.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/mk/MkProcessBizHandlers.java index 296dfbfc..89ad383f 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/mk/MkProcessBizHandlers.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/mk/MkProcessBizHandlers.java @@ -68,7 +68,12 @@ public final class MkProcessBizHandlers { @Override public boolean approveFromProcess(Long id, String processorName) { - return service.approveFromProcess(id, processorName); + boolean approved = service.approveFromProcess(id, processorName); + // 审批事务已提交,即时推送金蝶;失败不影响审批结果(与页面 /approve 口径一致) + if (approved) { + service.syncKingdeeAfterApproval(id); + } + return approved; } @Override diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ICustomerArchiveService.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ICustomerArchiveService.java index eda5109f..42f948bc 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ICustomerArchiveService.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ICustomerArchiveService.java @@ -197,6 +197,14 @@ public interface ICustomerArchiveService extends BaseService { */ CustomerArchive syncKingdee(Long id); + /** + * MK 流程审核通过后即时推送金蝶:单飞锁防双入口消息并发双推,内部吞异常仅记日志; + * 推送失败落 failed 状态供页面展示与手动重推,不影响已生效的审批结果(与页面 /approve 口径一致) + * + * @param id 主键 + */ + void syncKingdeeAfterApproval(Long id); + /** * A901-1 按统一社会信用代码查询金蝶供应商编码(新增客商填写信用代码后即时回显用),查不到返回 null * diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchivePublicProcessService.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchivePublicProcessService.java index 81a00f48..2adca667 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchivePublicProcessService.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchivePublicProcessService.java @@ -127,6 +127,8 @@ public class CustomerArchivePublicProcessService { Long customerId = Long.valueOf(customerIdText); if (approved) { customerArchiveService.approveFromProcess(customerId, processorName); + // MK 流程审核通过即时推送金蝶;失败仅落推送失败状态,不影响审批结果(与页面 /approve 口径一致) + customerArchiveService.syncKingdeeAfterApproval(customerId); } else { customerArchiveService.rejectFromProcess(customerId, processorName); } diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java index 806f707f..96d999d5 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java @@ -236,6 +236,9 @@ public class CustomerArchiveServiceImpl extends BaseServiceImpl selectCustomerArchivePage(IPage page, CustomerArchiveVO customer) { List records = baseMapper.selectCustomerArchivePage(page, customer, currentScopeUserId()); @@ -591,6 +594,23 @@ public class CustomerArchiveServiceImpl extends BaseServiceImpl { + this.syncKingdee(id); + return "推送完成"; + }); + } catch (Exception exception) { + // 失败状态与原因已由 syncKingdee 独立事务落库供页面展示与重推,此处吞异常,不影响已生效的审批结果 + log.warn("客商审核通过即时推送金蝶失败 id={} error={}", id, exception.getMessage(), exception); + } + } + /** * 组装 A902-2 报文推送金蝶并回写协同状态;detail 由调用方准备, * 定时同步批量组装报文数据,避免逐条 detail 查询的 N+1 问题;