From dbfeadde3a5c6d5854d492f7177d9a67a06f6697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Mon, 9 Nov 2026 16:01:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=A2=E5=95=86=E4=BF=A1=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=B8=BA=E7=A9=BA=E6=94=B9=E4=B8=BA=E6=8A=9B?= =?UTF-8?q?=E5=87=BA=E5=BC=82=E5=B8=B8=E9=98=BB=E6=96=AD=E9=A3=8E=E9=99=A9?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/hcs/HcsContractSyncSupport.java | 11 ++++---- .../support/hcs/HcsCreditCheckSupport.java | 26 +++++-------------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsContractSyncSupport.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsContractSyncSupport.java index ae242ba3..ed835ce4 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsContractSyncSupport.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsContractSyncSupport.java @@ -337,8 +337,8 @@ public class HcsContractSyncSupport { } /** - * 查询单方客商风险:按名称反查客商档案(§9-U6 编码体系联调确认),反查不到档案或信用代码为空记 skip 留痕不阻断; - * 内部组织客商默认无风险跳过(与展示/提交/付款链路口径一致,不调 C101-1) + * 查询单方客商风险:按名称反查客商档案(§9-U6 编码体系联调确认),反查不到档案记 skip 留痕不阻断; + * 内部组织客商默认无风险跳过(与展示/提交/付款链路口径一致,不调 C101-1);信用代码为空抛出业务异常阻断推送 */ private RiskResult queryRisk(ContractManage contractManage, String standing, String partyName) { CustomerArchive customerArchive = queryCustomerArchive(partyName); @@ -353,12 +353,11 @@ public class HcsContractSyncSupport { standing + "方[" + partyName + "]为内部组织客商,默认无风险跳过校验", null); return new RiskResult(false, null); } - // C101-1 改按统一社会信用代码查询:信用代码为空无法查询,跳过并留痕(同反查不到口径) + // C101-1 改按统一社会信用代码查询:信用代码为空无法查询,阻断推送 String creditCode = customerArchive.getUnifiedCreditCode(); if (StringUtil.isBlank(creditCode)) { - writeCheckLog(contractManage, HcsSyncConstant.CHECK_RESULT_SKIP, - standing + "方[" + partyName + "]信用代码为空,跳过风险校验", null); - return new RiskResult(false, null); + log.warn("HCS合同推送风险校验阻断:contractNo={},{}方信用代码为空", contractManage.getContractNo(), standing); + throw new ServiceException(standing + "方[" + partyName + "]统一社会信用代码为空,请先完善客商档案后再推送合同"); } HcsRiskQueryDTO param = new HcsRiskQueryDTO(); // 【必填】统一社会信用代码:按甲乙方名称反查 CustomerArchive(C101-1 改按信用代码查询) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsCreditCheckSupport.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsCreditCheckSupport.java index 5de6e5d4..f945f0e6 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsCreditCheckSupport.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsCreditCheckSupport.java @@ -133,13 +133,11 @@ public class HcsCreditCheckSupport { "收款方[" + payment.getPayeeName() + "]为内部组织客商,默认无风险跳过校验", null); return; } - // C101-1 改按统一社会信用代码查询:信用代码为空无法查询,跳过并留痕(同反查不到口径) + // C101-1 改按统一社会信用代码查询:信用代码为空无法查询,阻断提交 String creditCode = customerArchive.getUnifiedCreditCode(); if (StringUtil.isBlank(creditCode)) { - writeCheckLog(payment, HcsSyncConstant.CHECK_TYPE_RISK, HcsSyncConstant.CHECK_RESULT_SKIP, - "收款方[" + payment.getPayeeName() + "]信用代码为空,跳过风险校验", null); - log.warn("HCS付款提交风险校验跳过:paymentNo={},收款方信用代码为空", payment.getPaymentNo()); - return; + log.warn("HCS付款提交风险校验阻断:paymentNo={},收款方信用代码为空", payment.getPaymentNo()); + throw new ServiceException("收款方[" + payment.getPayeeName() + "]统一社会信用代码为空,请先完善客商档案后再提交"); } HcsRiskQueryDTO param = new HcsRiskQueryDTO(); // 【必填】统一社会信用代码:按收款方名称反查 CustomerArchive(C101-1 改按信用代码查询) @@ -285,7 +283,7 @@ public class HcsCreditCheckSupport { /** * C101-1 单客商远程查询并组装展示信息(不查档案、不写留痕,供单查与定时批量刷新复用); * riskTip 不在本方法组装,由调用方经 {@link #buildRiskDetail} 统一组装; - * C101-1 改按统一社会信用代码查询,信用代码为空时不调远程、按无风险数据返回 + * C101-1 改按统一社会信用代码查询,信用代码为空时抛出业务异常、不调远程 * * @param customerCode 客商编号(留痕与展示用) * @param creditCode 统一社会信用代码(C101-1 查询键) @@ -294,13 +292,8 @@ public class HcsCreditCheckSupport { */ private RelativeRiskResult fetchRelativeRisk(String customerCode, String creditCode, String customerName) { if (StringUtil.isBlank(creditCode)) { - log.warn("HCS客商风险查询跳过:customerCode={}, 信用代码为空", customerCode); - CustomerRiskVO emptyRisk = new CustomerRiskVO(); - emptyRisk.setCustomerCode(customerCode); - emptyRisk.setCustomerName(customerName); - emptyRisk.setCustomerKind("external"); - emptyRisk.setRisky(Boolean.FALSE); - return new RelativeRiskResult(emptyRisk, null); + log.warn("HCS客商风险查询阻断:customerCode={}, customerName={}, 信用代码为空", customerCode, customerName); + throw new ServiceException("客商[" + (StringUtil.isNotBlank(customerName) ? customerName : customerCode) + "]统一社会信用代码为空,请先完善客商档案"); } HcsRiskQueryDTO param = new HcsRiskQueryDTO(); // 【必填】统一社会信用代码(C101-1 改按信用代码查询,字段名 fdNumber 保持合规侧定义) @@ -535,12 +528,7 @@ public class HcsCreditCheckSupport { List batchCheckLogs = new ArrayList<>(); for (CustomerArchive customerArchive : batch) { try { - // C101-1 改按信用代码查询:信用代码为空的档案跳过刷新(不计入失败数) - if (Func.isEmpty(customerArchive.getUnifiedCreditCode())) { - log.warn("定时刷新客商风险跳过:customerCode={}, fullName={}, 信用代码为空", - customerArchive.getCustomerCode(), customerArchive.getFullName()); - continue; - } + // C101-1 按信用代码查询:信用代码为空在 fetchRelativeRisk 内抛出异常,由下方 catch 记为失败不中断批次 RelativeRiskResult fetch = this.fetchRelativeRisk(customerArchive.getCustomerCode(), customerArchive.getUnifiedCreditCode(), customerArchive.getFullName()); CustomerRiskVO risk = fetch.risk();