From 5371d618f13108d498159399e25f6d565b4d5e08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Thu, 15 Oct 2026 19:41:58 +0800 Subject: [PATCH] =?UTF-8?q?:feat:=20=E9=A1=B9=E7=9B=AE=E7=AB=8B=E9=A1=B9?= =?UTF-8?q?=E4=B8=8E=E5=90=88=E5=90=8C=E6=96=B0=E5=A2=9E=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=8B=BE=E9=80=89=E6=89=B9=E9=87=8F=E6=8E=A8=E9=80=81=E5=90=88?= =?UTF-8?q?=E8=A7=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/HcsSyncController.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) 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 46956b8f..70fbbb66 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 @@ -68,6 +68,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -135,6 +136,41 @@ public class HcsSyncController { return R.data(result); } + /** + * 页面勾选批量重推(项目立项/合同列表勾选行后批量推送,逐条推送互不影响,单条失败计入失败明细) + */ + @PostMapping("/sync/{bizType}/batch") + @ApiOperationSupport(order = 17) + @Operation(summary = "按勾选ID批量推送/重推合规", description = "仅支持 project(项目立项)、contract(合同),逐条重置待同步后立即推送,单条失败不影响其余,返回成功数与失败明细") + public R repushBatch(@Parameter(description = "业务类型 project/contract", required = true) @PathVariable String bizType, + @Parameter(description = "单据ID列表", required = true) @RequestBody List ids) { + if (!List.of(HcsSyncConstant.BIZ_TYPE_PROJECT, HcsSyncConstant.BIZ_TYPE_CONTRACT).contains(bizType)) { + throw new IllegalArgumentException("不支持的HCS批量推送业务类型:" + bizType); + } + if (ids == null || ids.isEmpty()) { + return R.fail("请先勾选要推送的单据"); + } + int successCount = 0; + List failureList = new ArrayList<>(); + for (Long id : ids) { + try { + if (HcsSyncConstant.BIZ_TYPE_PROJECT.equals(bizType)) { + hcsProjectSyncSupport.repushProject(id); + } else { + hcsContractSyncSupport.repushContract(id); + } + successCount++; + } catch (Exception exception) { + failureList.add(id + ":" + exception.getMessage()); + } + } + String summary = "批量推送完成:成功 " + successCount + " 条,失败 " + failureList.size() + " 条"; + if (!failureList.isEmpty()) { + summary += ";失败明细:" + String.join(";", failureList); + } + return R.data(summary); + } + /** * 特批结果人工确认(§9-U1 过渡兜底:与合规 paymentLegal/result 回调等效,均联动付款审批状态) */