refactor: 收款认领合规链复用履约计划与履约记录既有开关

- 移除独立 claim.sync-enabled 开关(HcsProperties.Claim 配置节与 Nacos 配置样例)
- 认领链门禁改为复用既有开关:exe-stage.sync-enabled 门禁 C103-9 更新履约计划与 C107-1 认领记录(与合同链履约计划同步同开关);perf-record.sync-enabled 门禁 C108-1 履约流水(与付款链履约记录同步同开关)
- 同步更新业务流程梳理文档的开关说明与启用条件
This commit is contained in:
刘泉佳
2026-10-22 19:35:12 +08:00
parent f38ab3896f
commit 0c9f9dcb8b
5 changed files with 30 additions and 36 deletions
@@ -73,7 +73,9 @@ import java.util.stream.Collectors;
/**
* HCS 收款认领链推送编排支撑组件(C103-9 更新履约计划 + C107-1 认领记录 + C108-1 履约流水)
* <p>
* 触发点:金蝶认领推送(A301-3)成功之后(手动按钮与定时任务共用钩子),开关 thirdParty.hcs.claim.sync-enabled。
* 触发点:金蝶认领推送(A301-3)成功之后(手动按钮与定时任务共用钩子)。
* 开关复用既有配置(不单独新增):exe-stage.sync-enabled 门禁 C103-9/C107-1(与合同链履约计划同步同开关),
* perf-record.sync-enabled 门禁 C108-1(与付款链履约记录同步同开关)。
* 编排顺序:先 C103-9(认领金额累加到收款履约计划行并重推,C107-1/C108-1 引用其返回的阶段ID),
* 再按「认领主单 × 合同」推 C107-1(合规流水ID 经 C104-2 按明细流水号定位),最后按合同推 C108-1 履约流水。
* 合同未推送合规(hcs_fd_id 空)时仅累加计划行金额,随合同链路首推。
@@ -104,12 +106,14 @@ public class HcsClaimSyncSupport {
/**
* 金蝶认领推送成功后推送合同合规(C103-9 → C107-1 → C108-1)
* <p>
* 开关关闭或推送异常均静默返回,不影响金蝶认领推送主流程与事务。
* 复用既有开关:exe-stage.sync-enabled(履约计划同步)门禁 C103-9/C107-1,
* perf-record.sync-enabled(履约记录同步)门禁 C108-1;开关关闭或推送异常均静默返回,
* 不影响金蝶认领推送主流程与事务。
*
* @param flowId 收款流水ID
*/
public void pushClaimToHcs(Long flowId) {
if (!hcsProperties.getClaim().isSyncEnabled()) {
if (!hcsProperties.getExeStage().isSyncEnabled()) {
return;
}
try {
@@ -208,7 +212,12 @@ public class HcsClaimSyncSupport {
pushClaimRecord(flow, claimsById.get(claimEntry.getKey()), contractManage, stageRow, claimEntry.getValue(), hcsCollectionFlowId);
}
}
// ③ C108-1 履约流水:按合同一条,须已推送合规且存在已同步收款计划行(fd_plan_id 必填)
// ③ C108-1 履约流水:按合同一条(开关 perf-record.sync-enabled,与付款链履约记录同步同开关),
// 须已推送合规且存在已同步收款计划行(fd_plan_id 必填)
if (!hcsProperties.getPerfRecord().isSyncEnabled()) {
log.info("HCS履约流水推送跳过:履约记录同步开关未开启 contractNo={}", contractManage.getContractNo());
return;
}
if (StringUtil.isBlank(contractManage.getHcsFdId())) {
log.info("HCS履约流水推送跳过:合同尚未推送合规 contractNo={}", contractManage.getContractNo());
return;