From 048bcaf8ad44a7f5d464dbb0bd8634da05aca0ff 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, 1 Oct 2026 23:47:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=A2=E5=95=86=E6=8F=90=E5=AE=A1?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E5=9B=BD=E8=B5=84=E5=A7=94=E9=BB=91=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E6=A0=A1=E9=AA=8C=EF=BC=88A801-5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - submitApproval 前置实时查询金蝶黑名单(enable=1),按统一社会信用代码大写精确匹配 - 禁止交易类(A)硬拦截报错并提示失信类别与列入事由;风险警示类(B)默认放行告警,thirdparty.bfi.blacklist.blockRiskWarning=true 时一并拦截 - 黑名单查询异常不阻断准入,记 error 日志放行(金蝶可用性口径待联调确认) --- .../impl/CustomerArchiveServiceImpl.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java index bcd2e346..eb2fe1fc 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java @@ -45,6 +45,7 @@ import org.springblade.thirdparty.bfi.pojo.dto.BfiCustomerQueryDTO; import org.springblade.thirdparty.bfi.pojo.vo.BfiBillSaveResultErrorVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiBillSaveResultItemVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiBillSaveResultVO; +import org.springblade.thirdparty.bfi.pojo.vo.BfiBlacklistVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiCustomerVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiPageVO; import org.springblade.thirdparty.bfi.service.IBfiService; @@ -229,6 +230,13 @@ public class CustomerArchiveServiceImpl extends BaseServiceImpl selectCustomerArchivePage(IPage page, CustomerArchiveVO customer) { List records = baseMapper.selectCustomerArchivePage(page, customer, currentScopeUserId()); @@ -303,6 +311,7 @@ public class CustomerArchiveServiceImpl extends BaseServiceImpl blacklist; + try { + blacklist = bfiService.queryBlacklist("1"); + } catch (Exception exception) { + log.error("查询金蝶黑名单失败,黑名单校验放行,fullName={},unifiedCreditCode={}", + customer.getFullName(), creditCode, exception); + return; + } + String code = creditCode.trim().toUpperCase(); + BfiBlacklistVO hit = blacklist.stream() + .filter(item -> Func.isNotEmpty(item.getNumber()) && code.equals(item.getNumber().trim().toUpperCase())) + .findFirst() + .orElse(null); + if (hit == null) { + return; + } + String category = Func.isEmpty(hit.getAwrpCombofieldTitle()) ? hit.getAwrpCombofield() : hit.getAwrpCombofieldTitle(); + boolean forbidden = "A".equals(hit.getAwrpCombofield()); + boolean riskWarning = "B".equals(hit.getAwrpCombofield()); + if (forbidden || (riskWarning && blacklistBlockRiskWarning)) { + throw new ServiceException(String.format("客商【%s】在国资委黑名单中(失信类别:%s,列入事由:%s),不允许提交准入审批", + customer.getFullName(), category, hit.getAwrpTextareafield())); + } + log.warn("客商命中金蝶黑名单风险警示类,放行,fullName={},unifiedCreditCode={},失信类别={},列入事由={}", + customer.getFullName(), creditCode, category, hit.getAwrpTextareafield()); + } + private void validateUnique(CustomerArchiveVO customer) { LambdaQueryWrapper unifiedCreditCodeQuery = Wrappers.lambdaQuery() .eq(CustomerArchive::getUnifiedCreditCode, customer.getUnifiedCreditCode())