From d4749927527c2de5819eb56891b056c1a1c45e7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=8C=E5=85=88=E8=88=9C?= <2499071264@qq.com> Date: Thu, 12 Nov 2026 18:48:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BA=BA=E5=91=98=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B2=BB=E7=90=86=E8=BF=81=E7=A7=BB=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=965?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PersonApiConfigServiceImpl.java | 13 +++++++------ .../impl/PersonGovernanceSyncServiceImpl.java | 8 ++++---- .../platform/personGovernance/apiConfig/form.html | 6 +++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/budwk/app/zhgh/personGovernance/apiConfig/service/impl/PersonApiConfigServiceImpl.java b/src/main/java/com/budwk/app/zhgh/personGovernance/apiConfig/service/impl/PersonApiConfigServiceImpl.java index aadf3ad..471d4c6 100644 --- a/src/main/java/com/budwk/app/zhgh/personGovernance/apiConfig/service/impl/PersonApiConfigServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/personGovernance/apiConfig/service/impl/PersonApiConfigServiceImpl.java @@ -168,16 +168,17 @@ public class PersonApiConfigServiceImpl extends BaseServiceImpl // 历史配置未设置同步类型时保留全部追加行为;去重模式必须有唯一的有效业务标识。 if (Strings.isBlank(config.getSyncMode())) config.setSyncMode("APPEND"); Assert.isTrue(List.of("APPEND", "UPSERT", "INSERT_NEW").contains(config.getSyncMode()), "同步类型不正确"); - if (!"APPEND".equals(config.getSyncMode())) { + boolean unitTarget = "sys_unit".equalsIgnoreCase(config.getTargetTable()); + if (unitTarget || !"APPEND".equals(config.getSyncMode())) { Assert.isTrue(mappings.stream().filter(v -> Boolean.TRUE.equals(v.getIdentityFlag())).count() == 1 && identity != null && Strings.isNotBlank(identity.getSourceField()) && Strings.isNotBlank(identity.getTargetField()) && !"pullTime".equals(identity.getTargetField()) && (!"id".equals(identity.getTargetField()) || isUnitConfig(config)), "请选择一个有效的业务唯一标识映射"); } - if ("sys_unit".equalsIgnoreCase(config.getTargetTable())) { - Assert.isTrue(isUnitConfig(config) && "UPSERT".equals(config.getSyncMode()) - && "id".equals(config.getIdentityField()), "单位API配置必须使用存在即修改模式,并将来源单位编码映射到id作为唯一标识"); + if (unitTarget) { + Assert.isTrue(isUnitConfig(config) && "id".equals(config.getIdentityField()), + "单位API配置必须将来源单位编码映射到id作为唯一标识"); Assert.isTrue(mappings.stream().anyMatch(mapping -> "name".equals(mapping.getTargetField()) && hasMappingValue(mapping, defaults)), "单位API配置必须映射单位名称name"); } @@ -355,7 +356,7 @@ public class PersonApiConfigServiceImpl extends BaseServiceImpl .addv("dicts", dictionaries) .addv("unitConfigs", dao().query(PersonApiConfig.class, Cnd.where("sourceType", "=", "HTTP_API").and("targetTable", "=", "sys_unit") - .and("syncMode", "=", "UPSERT").and("identityField", "=", "id") + .and("identityField", "=", "id") .and(Cnd.exps("delFlag", "=", false).or("delFlag", "is", null)).asc("configName")).stream() .map(item -> NutMap.NEW().addv("id", item.getId()).addv("configName", item.getConfigName())).toList()); } @@ -385,7 +386,7 @@ public class PersonApiConfigServiceImpl extends BaseServiceImpl PersonApiConfig unitConfig = fetch(options.getUnitConfigId()); Assert.isTrue(!"sys_unit".equalsIgnoreCase(config.getTargetTable()) && unitConfig != null && !Boolean.TRUE.equals(unitConfig.getDelFlag()) && isUnitConfig(unitConfig) - && "UPSERT".equals(unitConfig.getSyncMode()) && "id".equals(unitConfig.getIdentityField()), + && "id".equals(unitConfig.getIdentityField()), "请选择有效的单位API配置"); } Assert.notNull(options.getRules(), "字段配置不能为空"); diff --git a/src/main/java/com/budwk/app/zhgh/personGovernance/apiConfig/service/impl/PersonGovernanceSyncServiceImpl.java b/src/main/java/com/budwk/app/zhgh/personGovernance/apiConfig/service/impl/PersonGovernanceSyncServiceImpl.java index 54cfe96..27238b2 100644 --- a/src/main/java/com/budwk/app/zhgh/personGovernance/apiConfig/service/impl/PersonGovernanceSyncServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/personGovernance/apiConfig/service/impl/PersonGovernanceSyncServiceImpl.java @@ -386,8 +386,8 @@ public class PersonGovernanceSyncServiceImpl implements PersonGovernanceSyncServ Assert.isTrue(fields.containsKey("id") && (unitTarget || userTarget || fields.containsKey("pullTime")), "目标中间表必须包含id和pullTime字段"); if (unitTarget) { - Assert.isTrue("HTTP_API".equals(config.getSourceType()) && "UPSERT".equals(config.getSyncMode()) - && "id".equals(config.getIdentityField()), "单位API必须按来源单位id新增或更新"); + Assert.isTrue("HTTP_API".equals(config.getSourceType()) && "id".equals(config.getIdentityField()), + "单位API配置必须将来源单位编码映射到id作为唯一标识"); Assert.isTrue(mappings.stream().anyMatch(mapping -> "name".equals(mapping.getTargetField()) && (Strings.isNotBlank(mapping.getSourceField()) || fieldDefaults.containsKey("name"))), "单位API配置必须映射单位名称name"); @@ -403,7 +403,7 @@ public class PersonGovernanceSyncServiceImpl implements PersonGovernanceSyncServ Assert.isTrue(targets.add(mapping.getTargetField()), "系统字段不能重复映射:" + mapping.getTargetField()); } String mode = syncMode(config); - if (!"APPEND".equals(mode)) { + if (unitTarget || !"APPEND".equals(mode)) { Assert.hasText(config.getIdentityField(), "去重同步必须配置唯一标识"); Assert.isTrue(targets.contains(config.getIdentityField()) && !"pullTime".equals(config.getIdentityField()) @@ -481,7 +481,7 @@ public class PersonGovernanceSyncServiceImpl implements PersonGovernanceSyncServ throw new IllegalArgumentException("字段类型转换失败:" + mapping.getSourceField() + " -> " + mapping.getTargetField()); } } - if (!"APPEND".equals(mode)) { + if (unitTarget || !"APPEND".equals(mode)) { Object identity = values.get(config.getIdentityField()); Assert.isTrue(identity != null && Strings.isNotBlank(String.valueOf(identity)), "唯一标识不能为空:" + config.getIdentityField()); } diff --git a/src/main/resources/views/platform/personGovernance/apiConfig/form.html b/src/main/resources/views/platform/personGovernance/apiConfig/form.html index 222c987..c2e6895 100644 --- a/src/main/resources/views/platform/personGovernance/apiConfig/form.html +++ b/src/main/resources/views/platform/personGovernance/apiConfig/form.html @@ -1182,9 +1182,9 @@ this.notifyWarning('请选择单位API配置') return } - if (unitTarget && (this.form.sourceType !== 'HTTP_API' || this.form.syncMode !== 'UPSERT' - || !this.identityRow || this.identityRow.targetField !== 'id')) { - this.notifyWarning('单位API配置请选择全量同步(存在即修改),并将单位编码映射到 id 作为唯一标识') + if (unitTarget && (this.form.sourceType !== 'HTTP_API' || !this.isIdentityMapping(this.identityRow) + || this.identityRow.targetField !== 'id')) { + this.notifyWarning('单位API配置请将单位编码映射到 id,并设为唯一标识') this.$set(this, 'activeTab', 'mapping') return }