From cc54b4ca91785e5df6d30aa0e61889396c7a7799 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:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20BFI=20=E6=96=B0=E5=A2=9E=20A801-5=20?= =?UTF-8?q?=E9=BB=91=E5=90=8D=E5=8D=95=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - GET /ierp/kapi/v2/awrp/bdm/bdm_blacklist_config/blacklistquery,enable 使用状态参数,URL 经 thirdParty.bfi.blacklistQueryUrl 可配 - 返回字段保留金蝶原名(number 企业税号、awrp_combofield 失信类别 A 禁止交易类/B 风险警示类等) - 规格来源为接口文档 xlsx(apifox 无此接口,xlsx 示例为 A801-1 错拷不可信),契约形态按 GET+query param 实现,联调若为 rim 形态仅需调整 BfiServiceImpl 单方法 --- .../thirdparty/bfi/feign/IBfiClient.java | 13 +++ .../bfi/pojo/dto/BfiBlacklistQueryDTO.java | 49 ++++++++ .../bfi/pojo/vo/BfiBlacklistVO.java | 108 ++++++++++++++++++ .../thirdparty/bfi/service/IBfiService.java | 9 ++ .../bfi/service/impl/BfiServiceImpl.java | 14 +++ 5 files changed, 193 insertions(+) create mode 100644 blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/pojo/dto/BfiBlacklistQueryDTO.java create mode 100644 blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/pojo/vo/BfiBlacklistVO.java diff --git a/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/feign/IBfiClient.java b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/feign/IBfiClient.java index 304340b2..7f1d805d 100644 --- a/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/feign/IBfiClient.java +++ b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/feign/IBfiClient.java @@ -30,6 +30,7 @@ import org.springblade.thirdparty.bfi.config.BfiFeignClientConfig; import org.springblade.thirdparty.bfi.constant.BfiConstant; import org.springblade.thirdparty.bfi.pojo.dto.BfiApBillSaveBodyDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiArBillSaveBodyDTO; +import org.springblade.thirdparty.bfi.pojo.dto.BfiBlacklistQueryDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiClaimPushBodyDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiCustomerSaveBodyDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiInvoiceApplyOpenApiBodyDTO; @@ -48,6 +49,7 @@ import org.springblade.thirdparty.bfi.pojo.dto.BfiVerifyTokenDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiWithdrawTokenDTO; import org.springblade.thirdparty.bfi.pojo.vo.BfiApBillVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiArBillVO; +import org.springblade.thirdparty.bfi.pojo.vo.BfiBlacklistVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiAttachmentUploadVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiBillSaveResultVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiClaimAnnounceVO; @@ -111,6 +113,7 @@ public interface IBfiClient { String INVOICE_POOL_QUERY_URL = "${thirdParty.bfi.invoicePoolQueryUrl:/ierp/kapi/v2/awrp/rim/rim_invoice/query}"; String INVOICE_DOWNLOAD_URL = "${thirdParty.bfi.invoiceDownloadUrl:/ierp/kapi/v2/awrp/bosext/attachment/download}"; String ATTACHMENT_UPLOAD_URL = "${thirdParty.bfi.attachmentUploadUrl:/ierp/kapi/v2/frame/attachment/uploadFile}"; + String BLACKLIST_QUERY_URL = "${thirdParty.bfi.blacklistQueryUrl:/ierp/kapi/v2/awrp/bdm/bdm_blacklist_config/blacklistquery}"; /** * A100-1 获取令牌 @@ -149,6 +152,16 @@ public interface IBfiClient { @GetMapping(FOREX_QUERY_URL) BfiResultVO> forexQuery(@RequestHeader(BfiConstant.HEADER_ACCESS_TOKEN) String accessToken, @SpringQueryMap BfiExchangeRateQueryDTO param); + /** + * A801-5 黑名单查询 + * + * @param accessToken 访问令牌,通过 getToken 获取 + * @param param 请求参数 + * @return 黑名单列表 + */ + @GetMapping(BLACKLIST_QUERY_URL) + BfiResultVO> blacklistQuery(@RequestHeader(BfiConstant.HEADER_ACCESS_TOKEN) String accessToken, @SpringQueryMap BfiBlacklistQueryDTO param); + /** * A103-1 付款申请保存(根据星瀚应付下推付款申请) * diff --git a/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/pojo/dto/BfiBlacklistQueryDTO.java b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/pojo/dto/BfiBlacklistQueryDTO.java new file mode 100644 index 00000000..2dfb8bb6 --- /dev/null +++ b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/pojo/dto/BfiBlacklistQueryDTO.java @@ -0,0 +1,49 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.thirdparty.bfi.pojo.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 业财融合(BFI)A801-5 黑名单查询参数 + * + * @author Chill + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class BfiBlacklistQueryDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 使用状态[1:可用, 0:禁用] + */ + private String enable; +} diff --git a/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/pojo/vo/BfiBlacklistVO.java b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/pojo/vo/BfiBlacklistVO.java new file mode 100644 index 00000000..e8fe9d91 --- /dev/null +++ b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/pojo/vo/BfiBlacklistVO.java @@ -0,0 +1,108 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.thirdparty.bfi.pojo.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 业财融合(BFI)A801-5 黑名单查询返回结果 + * + * @author Chill + */ +@Data +public class BfiBlacklistVO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + /** + * id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + /** + * 企业税号 + */ + private String number; + /** + * 企业名称 + */ + private String name; + /** + * 数据状态[A:暂存, B:已提交, C:已审核] + */ + private String status; + /** + * 数据状态标题 + */ + @JsonProperty("status_title") + private String statusTitle; + /** + * 使用状态[0:禁用, 1:可用] + */ + private String enable; + /** + * 使用状态标题 + */ + @JsonProperty("enable_title") + private String enableTitle; + /** + * 创建时间 + */ + private String createtime; + /** + * 修改时间 + */ + private String modifytime; + /** + * 主数据内码 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long masterid; + /** + * 上报单位(部门) + */ + @JsonProperty("awrp_textfield1") + private String awrpTextfield1; + /** + * 失信类别[A:禁止交易类, B:风险警示类] + */ + private String awrpCombofield; + /** + * 失信类别标题 + */ + @JsonProperty("awrp_combofield_title") + private String awrpCombofieldTitle; + /** + * 列入事由 + */ + @JsonProperty("awrp_textareafield") + private String awrpTextareafield; +} diff --git a/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/service/IBfiService.java b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/service/IBfiService.java index 437074e3..687fb8ba 100644 --- a/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/service/IBfiService.java +++ b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/service/IBfiService.java @@ -51,6 +51,7 @@ import org.springblade.thirdparty.bfi.pojo.vo.BfiApBillVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiArBillVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiAttachmentUploadVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiBillSaveResultVO; +import org.springblade.thirdparty.bfi.pojo.vo.BfiBlacklistVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiClaimAnnounceVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiCustomerVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiExchangeRateVO; @@ -124,6 +125,14 @@ public interface IBfiService { */ List queryExchangeRate(LocalDate effectdate, LocalDate effectdateE); + /** + * A801-5 黑名单查询 + * + * @param enable 使用状态[1:可用, 0:禁用] + * @return 黑名单列表 + */ + List queryBlacklist(String enable); + /** * A103-1 付款申请保存(根据星瀚应付下推付款申请) * diff --git a/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/service/impl/BfiServiceImpl.java b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/service/impl/BfiServiceImpl.java index bb16c40f..db15dfd7 100644 --- a/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/service/impl/BfiServiceImpl.java +++ b/blade-third-party-api/blade-bfi-api/src/main/java/org/springblade/thirdparty/bfi/service/impl/BfiServiceImpl.java @@ -42,6 +42,7 @@ import org.springblade.thirdparty.bfi.pojo.dto.BfiApBillSaveDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiArBillQueryDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiArBillSaveBodyDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiArBillSaveDTO; +import org.springblade.thirdparty.bfi.pojo.dto.BfiBlacklistQueryDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiClaimAnnounceQueryDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiClaimPushBodyDTO; import org.springblade.thirdparty.bfi.pojo.dto.BfiClaimPushDTO; @@ -76,6 +77,7 @@ import org.springblade.thirdparty.bfi.pojo.vo.BfiApBillVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiArBillVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiAttachmentUploadVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiBillSaveResultVO; +import org.springblade.thirdparty.bfi.pojo.vo.BfiBlacklistVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiClaimAnnounceVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiCustomerVO; import org.springblade.thirdparty.bfi.pojo.vo.BfiExchangeRateVO; @@ -219,6 +221,18 @@ public class BfiServiceImpl implements IBfiService { return queryExchangeRate(effectdate.format(DATE_FORMATTER), effectdateE.format(DATE_FORMATTER)); } + @Override + public List queryBlacklist(String enable) { + if (StringUtil.isBlank(enable)) { + throw new BfiException("查询BFI黑名单失败,使用状态不能为空"); + } + BfiBlacklistQueryDTO param = new BfiBlacklistQueryDTO(); + param.setEnable(enable); + String accessToken = getAccessToken(); + BfiResultVO> result = commonCall("黑名单查询", () -> client.blacklistQuery(accessToken, param)); + return result.getData() != null ? result.getData() : List.of(); + } + @Override public BfiBillSaveResultVO pushPayApply(BfiPayApplyPushDTO param) { if (param == null || StringUtil.isBlank(param.getAwrpSrcCode()) || StringUtil.isBlank(param.getAwrpSrcSys())) {