fix: 人员数据治理迁移功能优化5
This commit is contained in:
+7
-6
@@ -168,16 +168,17 @@ public class PersonApiConfigServiceImpl extends BaseServiceImpl<PersonApiConfig>
|
|||||||
// 历史配置未设置同步类型时保留全部追加行为;去重模式必须有唯一的有效业务标识。
|
// 历史配置未设置同步类型时保留全部追加行为;去重模式必须有唯一的有效业务标识。
|
||||||
if (Strings.isBlank(config.getSyncMode())) config.setSyncMode("APPEND");
|
if (Strings.isBlank(config.getSyncMode())) config.setSyncMode("APPEND");
|
||||||
Assert.isTrue(List.of("APPEND", "UPSERT", "INSERT_NEW").contains(config.getSyncMode()), "同步类型不正确");
|
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
|
Assert.isTrue(mappings.stream().filter(v -> Boolean.TRUE.equals(v.getIdentityFlag())).count() == 1
|
||||||
&& identity != null && Strings.isNotBlank(identity.getSourceField())
|
&& identity != null && Strings.isNotBlank(identity.getSourceField())
|
||||||
&& Strings.isNotBlank(identity.getTargetField())
|
&& Strings.isNotBlank(identity.getTargetField())
|
||||||
&& !"pullTime".equals(identity.getTargetField())
|
&& !"pullTime".equals(identity.getTargetField())
|
||||||
&& (!"id".equals(identity.getTargetField()) || isUnitConfig(config)), "请选择一个有效的业务唯一标识映射");
|
&& (!"id".equals(identity.getTargetField()) || isUnitConfig(config)), "请选择一个有效的业务唯一标识映射");
|
||||||
}
|
}
|
||||||
if ("sys_unit".equalsIgnoreCase(config.getTargetTable())) {
|
if (unitTarget) {
|
||||||
Assert.isTrue(isUnitConfig(config) && "UPSERT".equals(config.getSyncMode())
|
Assert.isTrue(isUnitConfig(config) && "id".equals(config.getIdentityField()),
|
||||||
&& "id".equals(config.getIdentityField()), "单位API配置必须使用存在即修改模式,并将来源单位编码映射到id作为唯一标识");
|
"单位API配置必须将来源单位编码映射到id作为唯一标识");
|
||||||
Assert.isTrue(mappings.stream().anyMatch(mapping -> "name".equals(mapping.getTargetField())
|
Assert.isTrue(mappings.stream().anyMatch(mapping -> "name".equals(mapping.getTargetField())
|
||||||
&& hasMappingValue(mapping, defaults)), "单位API配置必须映射单位名称name");
|
&& hasMappingValue(mapping, defaults)), "单位API配置必须映射单位名称name");
|
||||||
}
|
}
|
||||||
@@ -355,7 +356,7 @@ public class PersonApiConfigServiceImpl extends BaseServiceImpl<PersonApiConfig>
|
|||||||
.addv("dicts", dictionaries)
|
.addv("dicts", dictionaries)
|
||||||
.addv("unitConfigs", dao().query(PersonApiConfig.class,
|
.addv("unitConfigs", dao().query(PersonApiConfig.class,
|
||||||
Cnd.where("sourceType", "=", "HTTP_API").and("targetTable", "=", "sys_unit")
|
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()
|
.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());
|
.map(item -> NutMap.NEW().addv("id", item.getId()).addv("configName", item.getConfigName())).toList());
|
||||||
}
|
}
|
||||||
@@ -385,7 +386,7 @@ public class PersonApiConfigServiceImpl extends BaseServiceImpl<PersonApiConfig>
|
|||||||
PersonApiConfig unitConfig = fetch(options.getUnitConfigId());
|
PersonApiConfig unitConfig = fetch(options.getUnitConfigId());
|
||||||
Assert.isTrue(!"sys_unit".equalsIgnoreCase(config.getTargetTable()) && unitConfig != null
|
Assert.isTrue(!"sys_unit".equalsIgnoreCase(config.getTargetTable()) && unitConfig != null
|
||||||
&& !Boolean.TRUE.equals(unitConfig.getDelFlag()) && isUnitConfig(unitConfig)
|
&& !Boolean.TRUE.equals(unitConfig.getDelFlag()) && isUnitConfig(unitConfig)
|
||||||
&& "UPSERT".equals(unitConfig.getSyncMode()) && "id".equals(unitConfig.getIdentityField()),
|
&& "id".equals(unitConfig.getIdentityField()),
|
||||||
"请选择有效的单位API配置");
|
"请选择有效的单位API配置");
|
||||||
}
|
}
|
||||||
Assert.notNull(options.getRules(), "字段配置不能为空");
|
Assert.notNull(options.getRules(), "字段配置不能为空");
|
||||||
|
|||||||
+4
-4
@@ -386,8 +386,8 @@ public class PersonGovernanceSyncServiceImpl implements PersonGovernanceSyncServ
|
|||||||
Assert.isTrue(fields.containsKey("id") && (unitTarget || userTarget || fields.containsKey("pullTime")),
|
Assert.isTrue(fields.containsKey("id") && (unitTarget || userTarget || fields.containsKey("pullTime")),
|
||||||
"目标中间表必须包含id和pullTime字段");
|
"目标中间表必须包含id和pullTime字段");
|
||||||
if (unitTarget) {
|
if (unitTarget) {
|
||||||
Assert.isTrue("HTTP_API".equals(config.getSourceType()) && "UPSERT".equals(config.getSyncMode())
|
Assert.isTrue("HTTP_API".equals(config.getSourceType()) && "id".equals(config.getIdentityField()),
|
||||||
&& "id".equals(config.getIdentityField()), "单位API必须按来源单位id新增或更新");
|
"单位API配置必须将来源单位编码映射到id作为唯一标识");
|
||||||
Assert.isTrue(mappings.stream().anyMatch(mapping -> "name".equals(mapping.getTargetField())
|
Assert.isTrue(mappings.stream().anyMatch(mapping -> "name".equals(mapping.getTargetField())
|
||||||
&& (Strings.isNotBlank(mapping.getSourceField()) || fieldDefaults.containsKey("name"))),
|
&& (Strings.isNotBlank(mapping.getSourceField()) || fieldDefaults.containsKey("name"))),
|
||||||
"单位API配置必须映射单位名称name");
|
"单位API配置必须映射单位名称name");
|
||||||
@@ -403,7 +403,7 @@ public class PersonGovernanceSyncServiceImpl implements PersonGovernanceSyncServ
|
|||||||
Assert.isTrue(targets.add(mapping.getTargetField()), "系统字段不能重复映射:" + mapping.getTargetField());
|
Assert.isTrue(targets.add(mapping.getTargetField()), "系统字段不能重复映射:" + mapping.getTargetField());
|
||||||
}
|
}
|
||||||
String mode = syncMode(config);
|
String mode = syncMode(config);
|
||||||
if (!"APPEND".equals(mode)) {
|
if (unitTarget || !"APPEND".equals(mode)) {
|
||||||
Assert.hasText(config.getIdentityField(), "去重同步必须配置唯一标识");
|
Assert.hasText(config.getIdentityField(), "去重同步必须配置唯一标识");
|
||||||
Assert.isTrue(targets.contains(config.getIdentityField())
|
Assert.isTrue(targets.contains(config.getIdentityField())
|
||||||
&& !"pullTime".equals(config.getIdentityField())
|
&& !"pullTime".equals(config.getIdentityField())
|
||||||
@@ -481,7 +481,7 @@ public class PersonGovernanceSyncServiceImpl implements PersonGovernanceSyncServ
|
|||||||
throw new IllegalArgumentException("字段类型转换失败:" + mapping.getSourceField() + " -> " + mapping.getTargetField());
|
throw new IllegalArgumentException("字段类型转换失败:" + mapping.getSourceField() + " -> " + mapping.getTargetField());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!"APPEND".equals(mode)) {
|
if (unitTarget || !"APPEND".equals(mode)) {
|
||||||
Object identity = values.get(config.getIdentityField());
|
Object identity = values.get(config.getIdentityField());
|
||||||
Assert.isTrue(identity != null && Strings.isNotBlank(String.valueOf(identity)), "唯一标识不能为空:" + config.getIdentityField());
|
Assert.isTrue(identity != null && Strings.isNotBlank(String.valueOf(identity)), "唯一标识不能为空:" + config.getIdentityField());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1182,9 +1182,9 @@
|
|||||||
this.notifyWarning('请选择单位API配置')
|
this.notifyWarning('请选择单位API配置')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (unitTarget && (this.form.sourceType !== 'HTTP_API' || this.form.syncMode !== 'UPSERT'
|
if (unitTarget && (this.form.sourceType !== 'HTTP_API' || !this.isIdentityMapping(this.identityRow)
|
||||||
|| !this.identityRow || this.identityRow.targetField !== 'id')) {
|
|| this.identityRow.targetField !== 'id')) {
|
||||||
this.notifyWarning('单位API配置请选择全量同步(存在即修改),并将单位编码映射到 id 作为唯一标识')
|
this.notifyWarning('单位API配置请将单位编码映射到 id,并设为唯一标识')
|
||||||
this.$set(this, 'activeTab', 'mapping')
|
this.$set(this, 'activeTab', 'mapping')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user