Commit 8dcb3a2e by zhangxingmin

push

parent f8d3c7be
......@@ -77,7 +77,7 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
AttributeSetting dto = attributeSettingList.get(i);
List<String> fieldValueBizIds = new ArrayList<>();
// 只使用fieldValueBizId字段来收集业务ID
// 收集fieldValueBizId中的业务ID
if (StringUtils.isNotBlank(dto.getFieldValueBizId())) {
if (dto.getFieldValueBizId().contains(";")) {
// 多选情况,多个字段值业务ID用分号分隔
......@@ -87,9 +87,15 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
fieldValueBizIds.add(dto.getFieldValueBizId());
}
}
// 注意:这里不再尝试从value字段解析业务ID
// 因为从你的JSON数据看,fieldValueBizId为空但value包含业务ID的情况
// 应该被视为数据问题,需要在保存时解决
// 对于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);
......@@ -149,9 +155,8 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
List<String> valueNames = valueBizIds.stream()
.map(fieldValueBizId -> {
String name = finalFieldValueBizIdToNameMap.get(fieldValueBizId);
// 如果查询不到名称,则使用原始值(value字段)
// 注意:这里假设value字段存储的是实际的值,而不是业务ID
return StringUtils.isNotBlank(name) ? name : dto.getValue();
// 如果查询不到名称,使用业务ID本身
return StringUtils.isNotBlank(name) ? name : fieldValueBizId;
})
.collect(Collectors.toList());
settingDto.setValueNames(StringUtils.join(valueNames, ";"));
......@@ -177,4 +182,48 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
}
return apiAttributeSettingDtoList;
}
/**
* 从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) {
if (StringUtils.isBlank(str)) {
return false;
}
// 业务ID通常包含下划线,且长度较长
// 这是一个简单的判断,可以根据实际情况调整
return str.contains("_") && str.length() > 10;
}
}
\ No newline at end of file
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