From c83596a5e07ab2243408b9e4be982af58e6aa759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Sat, 13 Jun 2026 13:30:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E5=95=86=E4=B8=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/MdmMerchantSyncFilter.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/thirdparty/MdmMerchantSyncFilter.java diff --git a/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/thirdparty/MdmMerchantSyncFilter.java b/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/thirdparty/MdmMerchantSyncFilter.java new file mode 100644 index 000000000..96645e9f0 --- /dev/null +++ b/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/thirdparty/MdmMerchantSyncFilter.java @@ -0,0 +1,71 @@ +package com.mhd.common.core.domain.thirdparty; + +import com.mhd.common.core.utils.StringUtils; + +/** + * MDM 客商应用侧过滤(MDM 查询条件 DESC24 在对方接口侧未严格生效,需本地过滤) + */ +public final class MdmMerchantSyncFilter { + + private static final String MDM_FLAG_YES = "1"; + + private MdmMerchantSyncFilter() { + } + + public enum SkipReason { + EMPTY_CODE, + NOT_CUSTOMER, + ORG_MISMATCH, + DISABLED, + MISSING_NAME + } + + public static boolean belongsToOrg(String recordDesc24, String orgNcCode) { + if (StringUtils.isEmpty(orgNcCode)) { + return true; + } + return orgNcCode.equals(trim(recordDesc24)); + } + + public static boolean isCustomer(MdmMerchantRecordDTO record) { + return record != null && MDM_FLAG_YES.equals(trim(record.getDesc3())); + } + + public static boolean isDisabled(MdmMerchantRecordDTO record) { + if (record == null || StringUtils.isEmpty(record.getDesc30())) { + return false; + } + String status = record.getDesc30().trim(); + return "否".equals(status) || "停用".equals(status) || "0".equals(status) || "3".equals(status); + } + + /** + * 判断是否应同步到委托方列表 + */ + public static boolean shouldSync(MdmMerchantRecordDTO record, String orgNcCode) { + return resolveSkipReason(record, orgNcCode) == null; + } + + public static SkipReason resolveSkipReason(MdmMerchantRecordDTO record, String orgNcCode) { + if (record == null || StringUtils.isEmpty(record.getCode())) { + return SkipReason.EMPTY_CODE; + } + if (!isCustomer(record)) { + return SkipReason.NOT_CUSTOMER; + } + if (!belongsToOrg(record.getDesc24(), orgNcCode)) { + return SkipReason.ORG_MISMATCH; + } + if (StringUtils.isEmpty(trim(record.getDesc1()))) { + return SkipReason.MISSING_NAME; + } + if (isDisabled(record)) { + return SkipReason.DISABLED; + } + return null; + } + + private static String trim(String value) { + return value == null ? "" : value.trim(); + } +}