Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
fbb315c7
Commit
fbb315c7
authored
May 19, 2025
by
tianbo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor(amos): 优化字典参数转换和字段映射功能
- 修改 DictParamsConverter 中的字典项名称 - 优化 FieldMappingAspect 中的缓存配置和字段映射逻辑 -修正 FileFolderPathEnum 中的路径值
parent
adb3b64b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
22 additions
and
9 deletions
+22
-9
FieldMappingAspect.java
.../yeejoin/amos/boot/biz/common/aop/FieldMappingAspect.java
+19
-6
DictParamsConverter.java
...ejoin/amos/api/openapi/converter/DictParamsConverter.java
+1
-1
FileFolderPathEnum.java
...om/yeejoin/amos/api/openapi/enums/FileFolderPathEnum.java
+2
-2
No files found.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/aop/FieldMappingAspect.java
View file @
fbb315c7
...
@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -24,10 +25,16 @@ import java.util.concurrent.TimeUnit;
...
@@ -24,10 +25,16 @@ import java.util.concurrent.TimeUnit;
@Slf4j
@Slf4j
public
class
FieldMappingAspect
{
public
class
FieldMappingAspect
{
@Value
(
"${amos.fieldMapping.cache.maxSize:1000}"
)
private
static
int
cacheMaxSize
;
@Value
(
"${amos.fieldMapping.cache.expireHours:1}"
)
private
static
int
cacheExpireMinutes
;
// 使用Guava Cache构建二级缓存
// 使用Guava Cache构建二级缓存
private
static
final
LoadingCache
<
Class
<?>,
Map
<
String
,
Field
>>
FIELD_CACHE
=
CacheBuilder
.
newBuilder
()
private
static
final
LoadingCache
<
Class
<?>,
Map
<
String
,
Field
>>
FIELD_CACHE
=
CacheBuilder
.
newBuilder
()
.
maximumSize
(
1000
)
// 控制最大缓存类数量
.
maximumSize
(
cacheMaxSize
)
// 控制最大缓存类数量
.
expireAfterAccess
(
1
,
TimeUnit
.
HOURS
)
// 访问1小时后过期
.
expireAfterAccess
(
cacheExpireMinutes
,
TimeUnit
.
HOURS
)
// 访问1小时后过期
.
weakKeys
()
// 使用弱引用键防止内存泄漏
.
weakKeys
()
// 使用弱引用键防止内存泄漏
.
build
(
new
CacheLoader
<
Class
<?>,
Map
<
String
,
Field
>>()
{
.
build
(
new
CacheLoader
<
Class
<?>,
Map
<
String
,
Field
>>()
{
// 当缓存未命中时,该方法会为指定类创建一个线程安全的空字段映射容器(ConcurrentHashMap),用于后续存储该类的反射字段信息
// 当缓存未命中时,该方法会为指定类创建一个线程安全的空字段映射容器(ConcurrentHashMap),用于后续存储该类的反射字段信息
...
@@ -58,12 +65,14 @@ public class FieldMappingAspect {
...
@@ -58,12 +65,14 @@ public class FieldMappingAspect {
public
Object
doFieldMapping
(
ProceedingJoinPoint
joinPoint
,
FieldMapping
fieldMapping
)
throws
Throwable
{
public
Object
doFieldMapping
(
ProceedingJoinPoint
joinPoint
,
FieldMapping
fieldMapping
)
throws
Throwable
{
Object
[]
args
=
joinPoint
.
getArgs
();
Object
[]
args
=
joinPoint
.
getArgs
();
// 创建防御性副本
Object
[]
argsCopy
=
Arrays
.
copyOf
(
args
,
args
.
length
);
// 遍历处理所有字段映射配置
// 遍历处理所有字段映射配置
for
(
FieldMapping
.
FieldMap
mapping
:
fieldMapping
.
value
())
{
for
(
FieldMapping
.
FieldMap
mapping
:
fieldMapping
.
value
())
{
processSingleMapping
(
args
,
mapping
);
processSingleMapping
(
args
Copy
,
mapping
);
}
}
return
joinPoint
.
proceed
(
args
);
return
joinPoint
.
proceed
(
args
Copy
);
}
}
private
void
processSingleMapping
(
Object
[]
args
,
FieldMapping
.
FieldMap
mapping
)
{
private
void
processSingleMapping
(
Object
[]
args
,
FieldMapping
.
FieldMap
mapping
)
{
...
@@ -170,6 +179,10 @@ public class FieldMappingAspect {
...
@@ -170,6 +179,10 @@ public class FieldMappingAspect {
return
value
;
return
value
;
}
}
// 增加枚举类型支持
if
(
targetType
.
isEnum
())
{
return
Enum
.
valueOf
((
Class
<
Enum
>)
targetType
,
value
.
toString
());
}
if
(
targetType
==
String
.
class
)
return
value
.
toString
();
if
(
targetType
==
String
.
class
)
return
value
.
toString
();
if
(
targetType
==
int
.
class
||
targetType
==
Integer
.
class
)
{
if
(
targetType
==
int
.
class
||
targetType
==
Integer
.
class
)
{
return
Integer
.
parseInt
(
value
.
toString
());
return
Integer
.
parseInt
(
value
.
toString
());
...
@@ -233,7 +246,7 @@ public class FieldMappingAspect {
...
@@ -233,7 +246,7 @@ public class FieldMappingAspect {
String
part
=
parts
[
i
];
String
part
=
parts
[
i
];
if
(
current
instanceof
Map
)
{
if
(
current
instanceof
Map
)
{
current
=
((
Map
<
String
,
Object
>)
current
).
computeIfAbsent
(
part
,
k
->
new
HashMap
<>());
current
=
((
Map
<
String
,
Object
>)
current
).
computeIfAbsent
(
part
,
k
->
new
Concurrent
HashMap
<>());
}
else
{
}
else
{
Field
field
=
getCachedField
(
current
.
getClass
(),
part
);
Field
field
=
getCachedField
(
current
.
getClass
(),
part
);
if
(
field
==
null
)
return
;
if
(
field
==
null
)
return
;
...
@@ -320,7 +333,7 @@ public class FieldMappingAspect {
...
@@ -320,7 +333,7 @@ public class FieldMappingAspect {
}
}
}
}
// 在FieldMappingAspect类内部添加
// 缓存方法内部类
private
static
class
MethodKey
{
private
static
class
MethodKey
{
final
Class
<?>
clazz
;
final
Class
<?>
clazz
;
final
String
methodName
;
final
String
methodName
;
...
...
amos-boot-data/amos-boot-data-openapi/src/main/java/com/yeejoin/amos/api/openapi/converter/DictParamsConverter.java
View file @
fbb315c7
...
@@ -78,7 +78,7 @@ public class DictParamsConverter implements Converter<String> {
...
@@ -78,7 +78,7 @@ public class DictParamsConverter implements Converter<String> {
dictMap
.
put
(
"集选"
,
"1"
);
dictMap
.
put
(
"集选"
,
"1"
);
dictMap
.
put
(
"并联"
,
"2"
);
dictMap
.
put
(
"并联"
,
"2"
);
dictMap
.
put
(
"按钮"
,
"3"
);
dictMap
.
put
(
"按钮"
,
"3"
);
dictMap
.
put
(
"其他
控制方式
"
,
"4"
);
dictMap
.
put
(
"其他"
,
"4"
);
dictMap
.
put
(
"直接顶升"
,
"1"
);
dictMap
.
put
(
"直接顶升"
,
"1"
);
dictMap
.
put
(
"间接顶升"
,
"2"
);
dictMap
.
put
(
"间接顶升"
,
"2"
);
}
}
...
...
amos-boot-data/amos-boot-data-openapi/src/main/java/com/yeejoin/amos/api/openapi/enums/FileFolderPathEnum.java
View file @
fbb315c7
...
@@ -34,11 +34,11 @@ public enum FileFolderPathEnum {
...
@@ -34,11 +34,11 @@ public enum FileFolderPathEnum {
/**
/**
* 监管
* 监管
*/
*/
JG
(
"jg"
,
"
/
supma"
),
JG
(
"jg"
,
"supma"
),
/**
/**
* 检验报告
* 检验报告
*/
*/
JY
(
"j
g
"
,
"/csei"
),
JY
(
"j
y
"
,
"/csei"
),
/**
/**
* 检验检测
* 检验检测
...
...
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