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 问题;