diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/HcsSyncController.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/HcsSyncController.java index dd48c78c..ef580dba 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/HcsSyncController.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/HcsSyncController.java @@ -34,7 +34,6 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.secure.annotation.PreAuth; -import org.springblade.core.secure.constant.AuthConstant; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.StringUtil; @@ -258,14 +257,14 @@ public class HcsSyncController { } /** - * 合同特批结果回传接收(合规系统 contractLegal/result 推送,替代未建设的 B103,公开端点 + 原文留痕) + * 合同特批结果回传接收(合规系统 contractLegal/result 推送,替代未建设的 B103,原文留痕) *

+ * 免登免授权:blade.secure skip-url + auth permitAll 放行(doc/nacos/blade.yaml); * iPaaS 网关注册映射:/gwzh/HTHG/contractLegal/result → /hcs/contractLegal/result; * 报文 {sourceSystem, requestId=TMS合同ID, status=APPROVED/REJECTED, reason}, * approved 恢复流程展示,rejected 联动合同审批驳回。 */ @PostMapping("/contractLegal/result") - @PreAuth(AuthConstant.PERMIT_ALL) @ApiOperationSupport(order = 15) @Operation(summary = "合同特批结果回传接收", description = "合规系统推送合同特批结果,按合同ID定位并联动特批状态,原文留痕") public R contractLegalResult(@RequestBody(required = false) HcsLegalResultDTO param) { @@ -273,13 +272,13 @@ public class HcsSyncController { } /** - * 付款特批结果回传接收(合规系统 paymentLegal/result 推送,公开端点) + * 付款特批结果回传接收(合规系统 paymentLegal/result 推送) *

+ * 免登免授权同合同接口(blade.secure 放行); * iPaaS 网关注册映射:/gwzh/HTHG/paymentLegal/result → /hcs/paymentLegal/result; * 报文同合同接口(requestId=TMS付款申请ID),付款特批结果不联动付款审批状态(§4.4)。 */ @PostMapping("/paymentLegal/result") - @PreAuth(AuthConstant.PERMIT_ALL) @ApiOperationSupport(order = 16) @Operation(summary = "付款特批结果回传接收", description = "合规系统推送付款特批结果,按付款申请ID定位并回写特批状态") public R paymentLegalResult(@RequestBody(required = false) HcsLegalResultDTO param) { diff --git a/doc/docs/hcs合同/2026-09-27-桂物合同合规系统HCS接入技术设计.md b/doc/docs/hcs合同/2026-09-27-桂物合同合规系统HCS接入技术设计.md index dde633b5..a37ddc36 100644 --- a/doc/docs/hcs合同/2026-09-27-桂物合同合规系统HCS接入技术设计.md +++ b/doc/docs/hcs合同/2026-09-27-桂物合同合规系统HCS接入技术设计.md @@ -415,7 +415,7 @@ thirdParty: | # | 事项 | 影响 | |---|---|---| -| U1 | **特批流程结果回传方式**:v4 无查询/回调接口 → **已决(2026-10-12)**:合规经 `contractLegal/result`(合同)/`paymentLegal/result`(付款)主动推送 TMS | 推送接收端点已实现(PERMIT_ALL);人工确认保留等效兜底 | +| U1 | **特批流程结果回传方式**:v4 无查询/回调接口 → **已决(2026-10-12)**:合规经 `contractLegal/result`(合同)/`paymentLegal/result`(付款)主动推送 TMS | 推送接收端点已实现(blade.secure 放行,免登免授权);人工确认保留等效兜底 | | U2 | 组织/人员引用体系:HCS `{fdId,fdName}` 的 fdId 与 TMS 部门ID 不同源;登录名是否同源(见原文登录名截图) | 立项/合同操作人字段解析方式 | | U3 | 字典值映射:fd_settlement_type、fd_invoice_type、付款用途/性质/类型、CONTRACT_STATUS 是否必传 | 各映射配置 | | U4 | C103-3/C102-3/C111-1 conditions 是否支持 fdNumber/fd_num/fdKingdeeId 精确查询;HCS 是否按 fd_kingdee_id 幂等 | 判重与防重方案 | diff --git a/doc/docs/hcs合同/2026-09-28-HCS接入实施状态与确认清单.md b/doc/docs/hcs合同/2026-09-28-HCS接入实施状态与确认清单.md index 31285bef..c838e533 100644 --- a/doc/docs/hcs合同/2026-09-28-HCS接入实施状态与确认清单.md +++ b/doc/docs/hcs合同/2026-09-28-HCS接入实施状态与确认清单.md @@ -62,8 +62,8 @@ | `POST /hcs/sync/{bizType}/{id}` | 单条重推(bizType:project / contract / payment / invoice-application / invoice-receipt),重置 unsynced+清零计数后立即推送 | | `POST /hcs/sync/{bizType}` | 批量推送一轮(复用扫描逻辑) | | `POST /hcs/spec-pay/confirm?id=&result=approved|rejected` | 特批结果人工确认(仅 processing 可确认) | -| `POST /hcs/contractLegal/result` | 合同特批结果回传接收(合规推送,PERMIT_ALL,2026-10-12 替代 B103) | -| `POST /hcs/paymentLegal/result` | 付款特批结果回传接收(合规推送,PERMIT_ALL) | +| `POST /hcs/contractLegal/result` | 合同特批结果回传接收(合规推送,blade.secure 放行,2026-10-12 替代 B103) | +| `POST /hcs/paymentLegal/result` | 付款特批结果回传接收(合规推送,blade.secure 放行) | | `POST /hcs/master-data/refresh` | 刷新主数据缓存并校验模板映射 | | `GET /hcs/recon/project?projectCode=` | 项目立项对账(C102-3) | | `GET /hcs/recon/contract?contractNo=` | 合同对账(C103-3) | diff --git a/doc/docs/hcs合同/2026-10-09-项目立项与合同HCS前端接入设计.md b/doc/docs/hcs合同/2026-10-09-项目立项与合同HCS前端接入设计.md index b23a0d7a..22796a11 100644 --- a/doc/docs/hcs合同/2026-10-09-项目立项与合同HCS前端接入设计.md +++ b/doc/docs/hcs合同/2026-10-09-项目立项与合同HCS前端接入设计.md @@ -113,7 +113,7 @@ POST /hcs/contract/spec-apply (body:{ contractId, attachments: [{fdId, → C103-8 v4 未含报文,联调前按上述预估实现并加 TODO 标注(§7-U1) POST /hcs/contractLegal/result (合规系统推送特批结果,2026-10-12 替代未建设的 B103) - 公开端点(@PreAuth(AuthConstant.PERMIT_ALL)),iPaaS 网关注册映射 /gwzh/HTHG/contractLegal/result → 本端点 + 免登免授权端点(blade.secure skip-url + auth permitAll 放行),iPaaS 网关注册映射 /gwzh/HTHG/contractLegal/result → 本端点 body(HcsLegalResultDTO):{ sourceSystem="WLTMS", requestId=TMS合同ID, status=APPROVED|REJECTED, reason } 处理:按 requestId 定位合同 → status 大小写不敏感识别 → 回写 hcs_spec_status + 原文(含 reason)留痕 blade_hcs_check_log → approved 恢复 currentNode="审批通过"(C103-1 已起草,无需再推送);rejected 联动审批驳回,reason 随原文见 hcs_spec_msg diff --git a/doc/docs/hcs合同/2026-10-12-合同特批与结算付款特批流程梳理.md b/doc/docs/hcs合同/2026-10-12-合同特批与结算付款特批流程梳理.md index 9f2f67c5..828d22b4 100644 --- a/doc/docs/hcs合同/2026-10-12-合同特批与结算付款特批流程梳理.md +++ b/doc/docs/hcs合同/2026-10-12-合同特批与结算付款特批流程梳理.md @@ -108,7 +108,7 @@ none(默认) ──触发──▶ need(挂起"特批审核")──发 | 路径 | 接口 | 实现 | | --- | --- | --- | -| 合规推送 | `POST /hcs/contractLegal/result`(`HcsSyncController`,`@PreAuth(PERMIT_ALL)`,网关注册 `/gwzh/HTHG/contractLegal/result`) | `handleLegalResult`:`requestId`=合同ID(selectById)定位 → `status=APPROVED/REJECTED` 大小写不敏感识别(其他值仅留痕)→ 原文(含 reason)留痕,报文模型 `HcsLegalResultDTO` | +| 合规推送 | `POST /hcs/contractLegal/result`(`HcsSyncController`,blade.secure 放行,网关注册 `/gwzh/HTHG/contractLegal/result`) | `handleLegalResult`:`requestId`=合同ID(selectById)定位 → `status=APPROVED/REJECTED` 大小写不敏感识别(其他值仅留痕)→ 原文(含 reason)留痕,报文模型 `HcsLegalResultDTO` | | 人工确认 | `POST /hcs/contract/spec/confirm`(:251-257) | `confirmSpecResult`(:139-157,仅 processing 可确认) | 联动 `syncContractOnSpecResult`(:312-320): @@ -229,7 +229,7 @@ none(默认) ──触发──▶ need(挂起"特批审核")──发 特批结果由合规系统审批完成后主动推送(2026-10-12 起,替代原计划的 B103,§9-U1 已闭环): -- `POST /hcs/paymentLegal/result`(`HcsSyncController`,`@PreAuth(PERMIT_ALL)`,网关注册 `/gwzh/HTHG/paymentLegal/result`)→ `HcsPaymentSyncSupport#handleLegalResult`:`requestId`=付款申请ID 定位,`status=APPROVED/REJECTED` 回写 `hcs_spec_status`,不联动付款审批状态; +- `POST /hcs/paymentLegal/result`(`HcsSyncController`,blade.secure 放行,网关注册 `/gwzh/HTHG/paymentLegal/result`)→ `HcsPaymentSyncSupport#handleLegalResult`:`requestId`=付款申请ID 定位,`status=APPROVED/REJECTED` 回写 `hcs_spec_status`,不联动付款审批状态; - 等效兜底:页面人工确认 `POST /hcs/spec-pay/confirm`(仅 `processing` 可确认,置 `approved/rejected`); - **付款特批结果不联动付款审批状态**(与合同特批的 `syncContractOnSpecResult` 不同,无驳回联动)。 @@ -241,7 +241,7 @@ none(默认) ──触发──▶ need(挂起"特批审核")──发 | --- | --- | --- | | 定时扫描 | `HcsPushTask#pushHcsContract`(默认 `0 1/5 * * * ?`) | `HcsPushTask#pushHcsPayment`(默认 `0 2/5 * * * ?`);Redis 任务锁 TTL 240s(:92)、分钟位错峰(:75-77) | | 即时推送 | `HcsImmediatePushSupport#pushContractAfterCommit`(afterCommit 异步,开关默认 false,单条锁 TTL 120s) | 无 | -| 结果推送接收 | `POST /hcs/contractLegal/result`(PERMIT_ALL,requestId=合同ID,原文留痕+联动审批状态) | `POST /hcs/paymentLegal/result`(PERMIT_ALL,requestId=付款申请ID,回写特批状态) | +| 结果推送接收 | `POST /hcs/contractLegal/result`(blade.secure 放行,requestId=合同ID,原文留痕+联动审批状态) | `POST /hcs/paymentLegal/result`(blade.secure 放行,requestId=付款申请ID,回写特批状态) | | 人工确认 | `POST /hcs/contract/spec/confirm` | `POST /hcs/spec-pay/confirm` | | 手动发起/重推 | `POST /hcs/contract/spec-apply`(:226)、`POST /hcs/sync/contract/{id}`(:110) | `POST /hcs/sync/payment/{id}`(:111)、`POST /hcs/sync/payment`(:129) | diff --git a/doc/nacos/blade.yaml b/doc/nacos/blade.yaml index d73eb7db..dedb8470 100644 --- a/doc/nacos/blade.yaml +++ b/doc/nacos/blade.yaml @@ -231,6 +231,11 @@ blade: - /feign/client/businessProcess/getProcessInfo - /feign/client/customerArchive/syncProcessNode - /feign/client/mkProcess/** + # HCS 合同/付款特批结果回传:合规系统经 iPaaS 网关无令牌调用,免登免授权 + - /blade-transport/hcs/contractLegal/result + - /hcs/contractLegal/result + - /blade-transport/hcs/paymentLegal/result + - /hcs/paymentLegal/result #授权认证配置 auth: - method: ALL @@ -251,6 +256,19 @@ blade: - method: POST pattern: /dashboard/submit expression: "hasAnyRole('administrator', 'admin', 'user')" + # HCS 合同/付款特批结果回传:合规系统经 iPaaS 网关无令牌调用,免登免授权 + - method: POST + pattern: /blade-transport/hcs/contractLegal/result + expression: "permitAll()" + - method: POST + pattern: /hcs/contractLegal/result + expression: "permitAll()" + - method: POST + pattern: /blade-transport/hcs/paymentLegal/result + expression: "permitAll()" + - method: POST + pattern: /hcs/paymentLegal/result + expression: "permitAll()" #基础认证配置 basic: - method: ALL