Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zrch-risk-39
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
zrch-risk-39
Commits
6ef1753a
提交
6ef1753a
authored
4月 15, 2026
作者:
kxjia
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改bug
上级
85d38cf5
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
86 行增加
和
86 行删除
+86
-86
DictAspect.java
...ore/src/main/java/org/jeecg/common/aspect/DictAspect.java
+86
-86
没有找到文件。
zrch-risk-server-39/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/DictAspect.java
浏览文件 @
6ef1753a
...
...
@@ -94,111 +94,111 @@ public class DictAspect {
* @param result
*/
private
Object
parseDictText
(
Object
result
)
{
//if (result instanceof Result) {
if
(
true
)
{
if
(((
Result
)
result
).
getResult
()
instanceof
IPage
)
{
List
<
JSONObject
>
items
=
new
ArrayList
<>();
//step.1 筛选出加了 Dict 注解的字段列表
List
<
Field
>
dictFieldList
=
new
ArrayList
<>();
// 字典数据列表, key = 字典code,value=数据列表
Map
<
String
,
List
<
String
>>
dataListMap
=
new
HashMap
<>(
5
);
//取出结果集
List
<
Object
>
records
=((
IPage
)
((
Result
)
result
).
getResult
()).
getRecords
();
// 代码逻辑说明: 【VUEN-1230】 判断是否含有字典注解,没有注解返回-----
Boolean
hasDict
=
checkHasDict
(
records
);
if
(!
hasDict
){
return
result
;
}
log
.
debug
(
" __ 进入字典翻译切面 DictAspect —— "
);
for
(
Object
record
:
records
)
{
String
json
=
"{}"
;
try
{
//解决@JsonFormat注解解析不了的问题详见SysAnnouncement类的@JsonFormat
json
=
objectMapper
.
writeValueAsString
(
record
);
}
catch
(
JsonProcessingException
e
)
{
log
.
error
(
"json解析失败"
+
e
.
getMessage
(),
e
);
if
(
result
instanceof
Result
)
{
if
(
true
)
{
if
(((
Result
)
result
).
getResult
()
instanceof
IPage
)
{
List
<
JSONObject
>
items
=
new
ArrayList
<>();
//step.1 筛选出加了 Dict 注解的字段列表
List
<
Field
>
dictFieldList
=
new
ArrayList
<>();
// 字典数据列表, key = 字典code,value=数据列表
Map
<
String
,
List
<
String
>>
dataListMap
=
new
HashMap
<>(
5
);
//取出结果集
List
<
Object
>
records
=
((
IPage
)
((
Result
)
result
).
getResult
()).
getRecords
();
// 代码逻辑说明: 【VUEN-1230】 判断是否含有字典注解,没有注解返回-----
Boolean
hasDict
=
checkHasDict
(
records
);
if
(!
hasDict
)
{
return
result
;
}
// 代码逻辑说明: 【issues/3303】restcontroller返回json数据后key顺序错乱 -----
JSONObject
item
=
JSONObject
.
parseObject
(
json
,
Feature
.
OrderedField
);
//for (Field field : record.getClass().getDeclaredFields()) {
// 遍历所有字段,把字典Code取出来,放到 map 里
for
(
Field
field
:
oConvertUtils
.
getAllFields
(
record
))
{
String
value
=
item
.
getString
(
field
.
getName
());
if
(
oConvertUtils
.
isEmpty
(
value
))
{
continue
;
log
.
debug
(
" __ 进入字典翻译切面 DictAspect —— "
);
for
(
Object
record
:
records
)
{
String
json
=
"{}"
;
try
{
//解决@JsonFormat注解解析不了的问题详见SysAnnouncement类的@JsonFormat
json
=
objectMapper
.
writeValueAsString
(
record
);
}
catch
(
JsonProcessingException
e
)
{
log
.
error
(
"json解析失败"
+
e
.
getMessage
(),
e
);
}
if
(
field
.
getAnnotation
(
Dict
.
class
)
!=
null
)
{
if
(!
dictFieldList
.
contains
(
field
))
{
dictFieldList
.
add
(
field
);
// 代码逻辑说明: 【issues/3303】restcontroller返回json数据后key顺序错乱 -----
JSONObject
item
=
JSONObject
.
parseObject
(
json
,
Feature
.
OrderedField
);
//for (Field field : record.getClass().getDeclaredFields()) {
// 遍历所有字段,把字典Code取出来,放到 map 里
for
(
Field
field
:
oConvertUtils
.
getAllFields
(
record
))
{
String
value
=
item
.
getString
(
field
.
getName
());
if
(
oConvertUtils
.
isEmpty
(
value
))
{
continue
;
}
String
code
=
field
.
getAnnotation
(
Dict
.
class
).
dicCode
();
String
text
=
field
.
getAnnotation
(
Dict
.
class
).
dicText
();
String
table
=
field
.
getAnnotation
(
Dict
.
class
).
dictTable
();
// 代码逻辑说明: [issues/#5643]解决分布式下表字典跨库无法查询问题------------
String
dataSource
=
field
.
getAnnotation
(
Dict
.
class
).
ds
();
List
<
String
>
dataList
;
String
dictCode
=
code
;
if
(!
StringUtils
.
isEmpty
(
table
))
{
if
(
field
.
getAnnotation
(
Dict
.
class
)
!=
null
)
{
if
(!
dictFieldList
.
contains
(
field
))
{
dictFieldList
.
add
(
field
);
}
String
code
=
field
.
getAnnotation
(
Dict
.
class
).
dicCode
();
String
text
=
field
.
getAnnotation
(
Dict
.
class
).
dicText
();
String
table
=
field
.
getAnnotation
(
Dict
.
class
).
dictTable
();
// 代码逻辑说明: [issues/#5643]解决分布式下表字典跨库无法查询问题------------
dictCode
=
String
.
format
(
"%s,%s,%s,%s"
,
table
,
text
,
code
,
dataSource
);
String
dataSource
=
field
.
getAnnotation
(
Dict
.
class
).
ds
();
List
<
String
>
dataList
;
String
dictCode
=
code
;
if
(!
StringUtils
.
isEmpty
(
table
))
{
// 代码逻辑说明: [issues/#5643]解决分布式下表字典跨库无法查询问题------------
dictCode
=
String
.
format
(
"%s,%s,%s,%s"
,
table
,
text
,
code
,
dataSource
);
}
dataList
=
dataListMap
.
computeIfAbsent
(
dictCode
,
k
->
new
ArrayList
<>());
this
.
listAddAllDeduplicate
(
dataList
,
Arrays
.
asList
(
value
.
split
(
","
)));
}
dataList
=
dataListMap
.
computeIfAbsent
(
dictCode
,
k
->
new
ArrayList
<>());
this
.
listAddAllDeduplicate
(
dataList
,
Arrays
.
asList
(
value
.
split
(
","
)));
}
//date类型默认转换string格式化日期
//if (JAVA_UTIL_DATE.equals(field.getType().getName())&&field.getAnnotation(JsonFormat.class)==null&&item.get(field.getName())!=null){
//date类型默认转换string格式化日期
//if (JAVA_UTIL_DATE.equals(field.getType().getName())&&field.getAnnotation(JsonFormat.class)==null&&item.get(field.getName())!=null){
//SimpleDateFormat aDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// item.put(field.getName(), aDate.format(new Date((Long) item.get(field.getName()))));
//}
//}
}
items
.
add
(
item
);
}
items
.
add
(
item
);
}
//step.2 调用翻译方法,一次性翻译
Map
<
String
,
List
<
DictModel
>>
translText
=
this
.
translateAllDict
(
dataListMap
);
//step.2 调用翻译方法,一次性翻译
Map
<
String
,
List
<
DictModel
>>
translText
=
this
.
translateAllDict
(
dataListMap
);
//step.3 将翻译结果填充到返回结果里
for
(
JSONObject
record
:
items
)
{
for
(
Field
field
:
dictFieldList
)
{
String
code
=
field
.
getAnnotation
(
Dict
.
class
).
dicCode
();
String
text
=
field
.
getAnnotation
(
Dict
.
class
).
dicText
();
String
table
=
field
.
getAnnotation
(
Dict
.
class
).
dictTable
();
// 自定义的字典表数据源
String
dataSource
=
field
.
getAnnotation
(
Dict
.
class
).
ds
();
String
fieldDictCode
=
code
;
if
(!
StringUtils
.
isEmpty
(
table
))
{
// 代码逻辑说明: [issues/#5643]解决分布式下表字典跨库无法查询问题------------
fieldDictCode
=
String
.
format
(
"%s,%s,%s,%s"
,
table
,
text
,
code
,
dataSource
);
}
String
value
=
record
.
getString
(
field
.
getName
());
if
(
oConvertUtils
.
isNotEmpty
(
value
))
{
List
<
DictModel
>
dictModels
=
translText
.
get
(
fieldDictCode
);
if
(
dictModels
==
null
||
dictModels
.
size
()==
0
){
continue
;
//step.3 将翻译结果填充到返回结果里
for
(
JSONObject
record
:
items
)
{
for
(
Field
field
:
dictFieldList
)
{
String
code
=
field
.
getAnnotation
(
Dict
.
class
).
dicCode
();
String
text
=
field
.
getAnnotation
(
Dict
.
class
).
dicText
();
String
table
=
field
.
getAnnotation
(
Dict
.
class
).
dictTable
();
// 自定义的字典表数据源
String
dataSource
=
field
.
getAnnotation
(
Dict
.
class
).
ds
();
String
fieldDictCode
=
code
;
if
(!
StringUtils
.
isEmpty
(
table
))
{
// 代码逻辑说明: [issues/#5643]解决分布式下表字典跨库无法查询问题------------
fieldDictCode
=
String
.
format
(
"%s,%s,%s,%s"
,
table
,
text
,
code
,
dataSource
);
}
String
textValue
=
this
.
translDictText
(
dictModels
,
value
);
log
.
debug
(
" 字典Val : "
+
textValue
);
log
.
debug
(
" __翻译字典字段__ "
+
field
.
getName
()
+
CommonConstant
.
DICT_TEXT_SUFFIX
+
": "
+
textValue
);
String
value
=
record
.
getString
(
field
.
getName
());
if
(
oConvertUtils
.
isNotEmpty
(
value
))
{
List
<
DictModel
>
dictModels
=
translText
.
get
(
fieldDictCode
);
if
(
dictModels
==
null
||
dictModels
.
size
()
==
0
)
{
continue
;
}
// TODO-sun 测试输出,待删
log
.
debug
(
" ---- dictCode: "
+
fieldDictCode
);
log
.
debug
(
" ---- value: "
+
value
);
log
.
debug
(
" ----- text: "
+
textValue
);
log
.
debug
(
" ---- dictModels: "
+
JSON
.
toJSONString
(
dictModels
));
String
textValue
=
this
.
translDictText
(
dictModels
,
value
);
log
.
debug
(
" 字典Val : "
+
textValue
);
log
.
debug
(
" __翻译字典字段__ "
+
field
.
getName
()
+
CommonConstant
.
DICT_TEXT_SUFFIX
+
": "
+
textValue
);
record
.
put
(
field
.
getName
()
+
CommonConstant
.
DICT_TEXT_SUFFIX
,
textValue
);
// TODO-sun 测试输出,待删
log
.
debug
(
" ---- dictCode: "
+
fieldDictCode
);
log
.
debug
(
" ---- value: "
+
value
);
log
.
debug
(
" ----- text: "
+
textValue
);
log
.
debug
(
" ---- dictModels: "
+
JSON
.
toJSONString
(
dictModels
));
record
.
put
(
field
.
getName
()
+
CommonConstant
.
DICT_TEXT_SUFFIX
,
textValue
);
}
}
}
}
((
IPage
)
((
Result
)
result
).
getResult
()).
setRecords
(
items
);
((
IPage
)
((
Result
)
result
).
getResult
()).
setRecords
(
items
);
}
}
}
return
result
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论