feat: 金蝶黑名单查询支持number企业税号数组入参,客商提审按发票信息纳税人识别号过滤校验

This commit is contained in:
刘泉佳
2026-10-08 18:25:58 +08:00
parent a6af9a2ccd
commit 8f60bd5597
4 changed files with 33 additions and 10 deletions
@@ -1052,21 +1052,29 @@ public class CustomerArchiveServiceImpl extends BaseServiceImpl<CustomerArchiveM
/**
* 国资委黑名单校验(A801-5):客商提审进入准入审批前实时查询金蝶黑名单,
* 按统一社会信用代码精确匹配;命中禁止交易类(A)硬拦截,
* 以客商发票信息中的纳税人识别号(number)作为查询条件按税号精确匹配;命中禁止交易类(A)硬拦截,
* 风险警示类(B)默认放行告警、可经 {@code thirdparty.bfi.blacklist.blockRiskWarning} 配置拦截,
* 其他类别放行告警;金蝶黑名单查询异常时向上抛出,阻断提审
*
* @param customer 客商
*/
private void validateBlacklist(CustomerArchiveVO customer) {
String creditCode = customer.getUnifiedCreditCode();
if (Func.isEmpty(creditCode)) {
List<CustomerInvoiceInfoVO> invoices = customer.getInvoices();
if (Func.isEmpty(invoices)) {
return;
}
List<BfiBlacklistVO> blacklist = bfiService.queryBlacklist("1");
String code = creditCode.trim().toUpperCase();
List<String> taxNos = invoices.stream()
.map(CustomerInvoiceInfoVO::getTaxNo)
.filter(Func::isNotEmpty)
.map(taxNo -> taxNo.trim().toUpperCase())
.distinct()
.toList();
if (Func.isEmpty(taxNos)) {
return;
}
List<BfiBlacklistVO> blacklist = bfiService.queryBlacklist("1", taxNos);
BfiBlacklistVO hit = blacklist.stream()
.filter(item -> Func.isNotEmpty(item.getNumber()) && code.equals(item.getNumber().trim().toUpperCase()))
.filter(item -> Func.isNotEmpty(item.getNumber()) && taxNos.contains(item.getNumber().trim().toUpperCase()))
.findFirst()
.orElse(null);
if (hit == null) {
@@ -1079,8 +1087,8 @@ public class CustomerArchiveServiceImpl extends BaseServiceImpl<CustomerArchiveM
throw new ServiceException(String.format("客商【%s】在国资委黑名单中(失信类别:%s,列入事由:%s),不允许提交准入审批",
customer.getFullName(), category, hit.getAwrpTextareafield()));
}
log.warn("客商命中金蝶黑名单风险警示类,放行,fullName={},unifiedCreditCode={},失信类别={},列入事由={}",
customer.getFullName(), creditCode, category, hit.getAwrpTextareafield());
log.warn("客商命中金蝶黑名单风险警示类,放行,fullName={},taxNos={},失信类别={},列入事由={}",
customer.getFullName(), taxNos, category, hit.getAwrpTextareafield());
}
private void validateUnique(CustomerArchiveVO customer) {