Commit b118fe20 by zhangxingmin

push

parent 8dcb3a2e
......@@ -87,15 +87,6 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
fieldValueBizIds.add(dto.getFieldValueBizId());
}
}
// 对于fieldValueBizId为空的情况,但value字段可能包含业务ID
else if (StringUtils.isNotBlank(dto.getValue())) {
String value = dto.getValue();
// 尝试从value字段解析可能的业务ID
List<String> possibleBizIds = parsePossibleBizIdsFromValue(value);
if (!possibleBizIds.isEmpty()) {
fieldValueBizIds.addAll(possibleBizIds);
}
}
if (!fieldValueBizIds.isEmpty()) {
allFieldValueBizIds.addAll(fieldValueBizIds);
......@@ -154,9 +145,23 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
Map<String, String> finalFieldValueBizIdToNameMap = fieldValueBizIdToNameMap;
List<String> valueNames = valueBizIds.stream()
.map(fieldValueBizId -> {
// 首先尝试从字段值服务查询名称
String name = finalFieldValueBizIdToNameMap.get(fieldValueBizId);
// 如果查询不到名称,使用业务ID本身
return StringUtils.isNotBlank(name) ? name : fieldValueBizId;
// 如果查询不到名称,使用value字段的值
// 这里使用一个简单的判断:如果value字段看起来像是业务ID,则使用业务ID本身
// 否则使用value字段
if (StringUtils.isBlank(name)) {
// 判断value字段是否看起来像是业务ID
if (isLikelyBusinessId(dto.getValue())) {
// 如果是业务ID,使用业务ID本身
return fieldValueBizId;
} else {
// 如果不是业务ID,使用value字段的值
return dto.getValue();
}
}
return name;
})
.collect(Collectors.toList());
settingDto.setValueNames(StringUtils.join(valueNames, ";"));
......@@ -184,40 +189,10 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
}
/**
* 从value字段解析可能的业务ID
* 这个方法尝试识别value字段中是否包含业务ID
*/
private List<String> parsePossibleBizIdsFromValue(String value) {
List<String> bizIds = new ArrayList<>();
if (StringUtils.isBlank(value)) {
return bizIds;
}
// 如果value包含分号,按分号分割
if (value.contains(";")) {
String[] parts = value.split(";");
for (String part : parts) {
String trimmedPart = part.trim();
// 如果部分看起来像是业务ID(包含下划线且长度较长)
if (isLikelyBizId(trimmedPart)) {
bizIds.add(trimmedPart);
}
}
}
// 如果不包含分号,检查整个value
else if (isLikelyBizId(value)) {
bizIds.add(value);
}
return bizIds;
}
/**
* 判断一个字符串是否可能是业务ID
* 这是一个保守的判断,只检查基本特征
*/
private boolean isLikelyBizId(String str) {
private boolean isLikelyBusinessId(String str) {
if (StringUtils.isBlank(str)) {
return false;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment