diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsPaymentSyncSupport.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsPaymentSyncSupport.java index 0b486e78..3fe88486 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsPaymentSyncSupport.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsPaymentSyncSupport.java @@ -50,7 +50,7 @@ import java.util.List; /** * HCS 付款链推送编排支撑组件(结算付款特批 C106-3/4 + 履约计划重推 C103-9 + 履约记录 C108-1/2 + 特批结果推送接收,设计文档 §5.0/§5.3/§5.5/§5.6) *
- * 编排顺序:特批(提交时高风险/黑名单须特批附件或额度超额标记 need 时发起)→ 履约计划重推(付款审批款项金额累加行)→ 履约记录(金蝶实际付款后新建/分期推进更新)。 + * 编排顺序:特批(提交时高风险/黑名单须特批附件或额度超额标记 need 时发起)→ 金蝶实际付款门禁(未付款时履约计划与履约记录均不推送)→ 履约计划重推(付款审批累加款项金额行,金蝶付款后随链重推)→ 履约记录(金蝶实际付款后新建/分期推进更新)。 * 特批通过后不推履约数据:履约计划与履约记录统一在各业务环节推送(付款=金蝶实际付款后,收款/开票/收票各自环节)。 * 特批审核期间(need/pushing/processing)仅发起/等待 C106,不推送履约计划与履约记录;驳回不产生履约数据。 * 特批流程ID 与履约记录ID 在各自 Support 内即时持久化;整体同步状态(hcs_sync_status)由本组件统一回写。 @@ -78,7 +78,7 @@ public class HcsPaymentSyncSupport { private final ApplicationEventPublisher eventPublisher; /** - * 推送付款申请到 HCS:特批(need 时发起 C106-3 后挂起)→ 履约计划重推(C103-9 款项金额累加行)→ 履约记录(金蝶实际付款后新建/更新)→ 回填整体同步状态 + * 推送付款申请到 HCS:特批(need 时发起 C106-3 后挂起)→ 金蝶实际付款门禁(未付款时整体跳过,付款回写后重新置待同步触发推送)→ 履约计划重推(C103-9 款项金额累加行)→ 履约记录(C108-1 新建/C108-2 更新)→ 回填整体同步状态 * * @param payment 付款申请单(approvalStatus=approved) * @return 推送结果描述 @@ -104,8 +104,16 @@ public class HcsPaymentSyncSupport { markSynced(payment, message); return message; } - // ② 履约计划重推(C103-9 行级更新):付款审批通过累加款项金额置 row_op=update 的计划行, - // 凭已存合规阶段ID 重推;独立于履约记录开关,推送失败抛出由付款链置 failed 重试兜底 + // ② 金蝶实际付款门禁:履约计划与履约记录均待金蝶实际付款后推送(需求口径:金蝶付款成功后再推给合同系统)—— + // 审批通过仅本地累加计划金额置待同步,此处不重推;未付款时整体照常回写, + // 付款回写推进(applyPayApplyResult)重新置待同步后由扫描任务触发本推送 + if (payment.getPaidAmount() == null || payment.getPaidAmount().signum() <= 0) { + String message = "金蝶未实际付款,待付款后推送履约计划与履约记录"; + markSynced(payment, message); + return message; + } + // ③ 履约计划重推(C103-9 行级更新):付款审批通过累加款项金额置 row_op=update 的计划行, + // 凭已存合规阶段ID 重推;推送失败抛出由付款链置 failed 重试兜底 if (hcsProperties.getExeStage().isSyncEnabled()) { String stageResult = this.pushExeStageUpdate(payment); if (StringUtil.isNotBlank(stageResult)) { @@ -115,24 +123,11 @@ public class HcsPaymentSyncSupport { result.append(stageResult); } } - // ③ 履约记录:金蝶实际付款后推送(需求口径:金蝶实际付款了再推给合同系统)—— - // 首次回写实际付款走 C108-1 新建,分期付款推进(paidAmount 变化置待同步)走 C108-2 更新; - // 未实际付款时跳过(整体状态照常回写,付款回写时重新置待同步触发推送) + // ④ 履约记录:首次回写实际付款走 C108-1 新建,分期付款推进(paidAmount 变化置待同步)走 C108-2 更新 if (!hcsProperties.getPerfRecord().isSyncEnabled()) { markSynced(payment, result.toString()); return result.toString(); } - if (payment.getPaidAmount() == null || payment.getPaidAmount().signum() <= 0) { - if (result.length() > 0) { - result.append(";"); - } - result.append("金蝶未实际付款,待付款后推送履约记录"); - markSynced(payment, result.toString()); - return result.toString(); - } - if (result.length() > 0) { - result.append(";"); - } result.append(hcsPerfRecordSyncSupport.pushPerfRecord(payment)); markSynced(payment, result.toString()); return result.toString();