Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-product
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-product
Commits
8426ebab
Commit
8426ebab
authored
Jan 23, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
b118fe20
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
42 deletions
+67
-42
yd-product-api/src/main/java/com/yd/product/api/service/impl/ApiAttributeSettingServiceImpl.java
+67
-42
No files found.
yd-product-api/src/main/java/com/yd/product/api/service/impl/ApiAttributeSettingServiceImpl.java
View file @
8426ebab
...
@@ -69,28 +69,52 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
...
@@ -69,28 +69,52 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
.
build
());
.
build
());
if
(!
CollectionUtils
.
isEmpty
(
attributeSettingList
))
{
if
(!
CollectionUtils
.
isEmpty
(
attributeSettingList
))
{
//收集所有需要批量查询的字段值业务ID
// 存储每个属性设置的原始值和可能的业务ID
Map
<
String
,
List
<
String
>>
settingDtoToBizIdsMap
=
new
HashMap
<>();
Map
<
String
,
List
<
String
>>
settingDtoToOriginalValuesMap
=
new
HashMap
<>();
List
<
String
>
allFieldValueBizIds
=
new
ArrayList
<>();
List
<
String
>
allFieldValueBizIds
=
new
ArrayList
<>();
Map
<
String
,
List
<
String
>>
settingDtoToValueBizIdsMap
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
attributeSettingList
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
attributeSettingList
.
size
();
i
++)
{
AttributeSetting
dto
=
attributeSettingList
.
get
(
i
);
AttributeSetting
dto
=
attributeSettingList
.
get
(
i
);
List
<
String
>
fieldValueBizIds
=
new
ArrayList
<>();
List
<
String
>
bizIds
=
new
ArrayList
<>();
List
<
String
>
originalValues
=
new
ArrayList
<>();
// 处理原始值
if
(
StringUtils
.
isNotBlank
(
dto
.
getValue
()))
{
if
(
dto
.
getValue
().
contains
(
";"
))
{
// 多选情况
originalValues
.
addAll
(
Arrays
.
asList
(
dto
.
getValue
().
split
(
";"
)));
}
else
{
// 单选情况
originalValues
.
add
(
dto
.
getValue
());
}
}
// 收集fieldValueBizId中的业务ID
// 收集业务ID
// 1. 首先从fieldValueBizId字段收集
if
(
StringUtils
.
isNotBlank
(
dto
.
getFieldValueBizId
()))
{
if
(
StringUtils
.
isNotBlank
(
dto
.
getFieldValueBizId
()))
{
if
(
dto
.
getFieldValueBizId
().
contains
(
";"
))
{
if
(
dto
.
getFieldValueBizId
().
contains
(
";"
))
{
// 多选情况,多个字段值业务ID用分号分隔
bizIds
.
addAll
(
Arrays
.
asList
(
dto
.
getFieldValueBizId
().
split
(
";"
)));
fieldValueBizIds
.
addAll
(
Arrays
.
asList
(
dto
.
getFieldValueBizId
().
split
(
";"
)));
}
else
{
}
else
{
// 单选情况
bizIds
.
add
(
dto
.
getFieldValueBizId
());
fieldValueBizIds
.
add
(
dto
.
getFieldValueBizId
());
}
}
}
}
// 2. 如果fieldValueBizId为空,但originalValues看起来像是业务ID,也收集
else
if
(!
originalValues
.
isEmpty
())
{
// 检查所有原始值是否都像是业务ID
boolean
allValuesLookLikeBizIds
=
originalValues
.
stream
()
.
allMatch
(
this
::
isLikelyBizId
);
if
(
allValuesLookLikeBizIds
)
{
bizIds
.
addAll
(
originalValues
);
}
}
settingDtoToBizIdsMap
.
put
(
String
.
valueOf
(
i
),
bizIds
);
settingDtoToOriginalValuesMap
.
put
(
String
.
valueOf
(
i
),
originalValues
);
if
(!
fieldValueBizIds
.
isEmpty
())
{
if
(!
bizIds
.
isEmpty
())
{
allFieldValueBizIds
.
addAll
(
fieldValueBizIds
);
allFieldValueBizIds
.
addAll
(
bizIds
);
settingDtoToValueBizIdsMap
.
put
(
String
.
valueOf
(
i
),
fieldValueBizIds
);
}
}
}
}
...
@@ -139,46 +163,47 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
...
@@ -139,46 +163,47 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
ApiAttributeSettingDto
settingDto
=
new
ApiAttributeSettingDto
();
ApiAttributeSettingDto
settingDto
=
new
ApiAttributeSettingDto
();
BeanUtils
.
copyProperties
(
dto
,
settingDto
);
BeanUtils
.
copyProperties
(
dto
,
settingDto
);
List
<
String
>
valueBizIds
=
settingDtoToValueBizIdsMap
.
get
(
String
.
valueOf
(
i
));
List
<
String
>
bizIds
=
settingDtoToBizIdsMap
.
get
(
String
.
valueOf
(
i
));
if
(!
CollectionUtils
.
isEmpty
(
valueBizIds
))
{
List
<
String
>
originalValues
=
settingDtoToOriginalValuesMap
.
get
(
String
.
valueOf
(
i
));
// 构建字段值名称(多个值用分号分隔)
if
(!
bizIds
.
isEmpty
())
{
// 有业务ID的情况
Map
<
String
,
String
>
finalFieldValueBizIdToNameMap
=
fieldValueBizIdToNameMap
;
Map
<
String
,
String
>
finalFieldValueBizIdToNameMap
=
fieldValueBizIdToNameMap
;
List
<
String
>
valueNames
=
valueBizIds
.
stream
()
Map
<
String
,
String
>
finalFieldValueBizIdToCodeMap
=
fieldValueBizIdToCodeMap
;
.
map
(
fieldValueBizId
->
{
List
<
String
>
valueNames
=
bizIds
.
stream
()
.
map
(
bizId
->
{
// 首先尝试从字段值服务查询名称
// 首先尝试从字段值服务查询名称
String
name
=
finalFieldValueBizIdToNameMap
.
get
(
fieldValueBizId
);
String
name
=
finalFieldValueBizIdToNameMap
.
get
(
bizId
);
if
(
StringUtils
.
isNotBlank
(
name
))
{
// 如果查询不到名称,使用value字段的值
return
name
;
// 这里使用一个简单的判断:如果value字段看起来像是业务ID,则使用业务ID本身
// 否则使用value字段
if
(
StringUtils
.
isBlank
(
name
))
{
// 判断value字段是否看起来像是业务ID
if
(
isLikelyBusinessId
(
dto
.
getValue
()))
{
// 如果是业务ID,使用业务ID本身
return
fieldValueBizId
;
}
else
{
// 如果不是业务ID,使用value字段的值
return
dto
.
getValue
();
}
}
// 如果查询不到,使用原始值(如果原始值不是业务ID)或业务ID本身
// 这里需要找到对应的原始值
int
index
=
bizIds
.
indexOf
(
bizId
);
if
(
index
>=
0
&&
index
<
originalValues
.
size
())
{
String
originalValue
=
originalValues
.
get
(
index
);
// 如果原始值看起来像是业务ID,则使用业务ID本身
if
(
isLikelyBizId
(
originalValue
))
{
return
bizId
;
}
}
return
name
;
return
originalValue
;
}
return
bizId
;
})
})
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
settingDto
.
setValueNames
(
StringUtils
.
join
(
valueNames
,
";"
));
settingDto
.
setValueNames
(
StringUtils
.
join
(
valueNames
,
";"
));
// 构建字段值编码(多个值用分号分隔)
List
<
String
>
valueCodes
=
bizIds
.
stream
()
Map
<
String
,
String
>
finalFieldValueBizIdToCodeMap
=
fieldValueBizIdToCodeMap
;
.
map
(
bizId
->
{
List
<
String
>
valueCodes
=
valueBizIds
.
stream
()
String
code
=
finalFieldValueBizIdToCodeMap
.
get
(
bizId
);
.
map
(
fieldValueBizId
->
{
String
code
=
finalFieldValueBizIdToCodeMap
.
get
(
fieldValueBizId
);
// 如果查询不到字段值编码,就塞空字符串
return
StringUtils
.
isNotBlank
(
code
)
?
code
:
""
;
return
StringUtils
.
isNotBlank
(
code
)
?
code
:
""
;
})
})
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
settingDto
.
setValueCodes
(
StringUtils
.
join
(
valueCodes
,
";"
));
settingDto
.
setValueCodes
(
StringUtils
.
join
(
valueCodes
,
";"
));
}
else
{
}
else
if
(!
originalValues
.
isEmpty
())
{
//
如果没有字段值业务ID,则使用原始值
//
没有业务ID,但有原始值的情况
settingDto
.
setValueNames
(
dto
.
getValue
(
));
settingDto
.
setValueNames
(
StringUtils
.
join
(
originalValues
,
";"
));
settingDto
.
setValueCodes
(
""
);
settingDto
.
setValueCodes
(
""
);
}
}
...
@@ -190,15 +215,14 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
...
@@ -190,15 +215,14 @@ public class ApiAttributeSettingServiceImpl implements ApiAttributeSettingServic
/**
/**
* 判断一个字符串是否可能是业务ID
* 判断一个字符串是否可能是业务ID
* 这是一个保守的判断,只检查基本特征
*/
*/
private
boolean
isLikelyB
usiness
Id
(
String
str
)
{
private
boolean
isLikelyB
iz
Id
(
String
str
)
{
if
(
StringUtils
.
isBlank
(
str
))
{
if
(
StringUtils
.
isBlank
(
str
))
{
return
false
;
return
false
;
}
}
// 业务ID通常包含下划线,且长度较长
// 业务ID通常包含下划线,且长度较长
// 这是一个
简单的判断,可以根据实际情况调整
// 这是一个
保守的判断
return
str
.
contains
(
"_"
)
&&
str
.
length
()
>
10
;
return
str
.
contains
(
"_"
)
&&
str
.
length
()
>
10
;
}
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment