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
91ba21e4
Commit
91ba21e4
authored
Feb 22, 2023
by
suhuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.TEST
parent
1f73d507
Pipeline
#240
passed with stage
in 3 minutes 53 seconds
Changes
5
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
152 additions
and
158 deletions
+152
-158
DynamicEnumUtil.java
...m/yeejoin/amos/boot/biz/common/utils/DynamicEnumUtil.java
+130
-133
LatentDangerLevelEnum.java
...amos/latentdanger/common/enums/LatentDangerLevelEnum.java
+8
-9
LatentDangerReformTypeEnum.java
...latentdanger/common/enums/LatentDangerReformTypeEnum.java
+7
-7
LatentDangerStateEnum.java
...amos/latentdanger/common/enums/LatentDangerStateEnum.java
+7
-8
CheckModelController.java
.../boot/module/tdc/biz/controller/CheckModelController.java
+0
-1
No files found.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/utils/DynamicEnumUtil.java
View file @
91ba21e4
package
com
.
yeejoin
.
amos
.
boot
.
biz
.
common
.
utils
;
//package com.yeejoin.amos.boot.biz.common.utils;
//
import
sun.reflect.ConstructorAccessor
;
//
import
sun.reflect.FieldAccessor
;
//import java.lang.reflect.AccessibleObject;
import
sun.reflect.ReflectionFactory
;
//import java.lang.reflect.Array;
//import java.lang.reflect.Field;
import
java.lang.reflect.AccessibleObject
;
//import java.lang.reflect.Modifier;
import
java.lang.reflect.Array
;
//import java.util.ArrayList;
import
java.lang.reflect.Field
;
//import java.util.Arrays;
import
java.lang.reflect.Modifier
;
//import java.util.List;
import
java.util.ArrayList
;
//
import
java.util.Arrays
;
///**
import
java.util.List
;
// * 动态枚举工具类
// *
/**
// * @author DELL
* 动态枚举工具类
// */
*
//public class DynamicEnumUtil {
* @author DELL
// private static ReflectionFactory reflectionFactory = ReflectionFactory.getReflectionFactory();
*/
//
public
class
DynamicEnumUtil
{
// private static void setFailsafeFieldValue(Field field, Object target, Object value) throws NoSuchFieldException,
private
static
ReflectionFactory
reflectionFactory
=
ReflectionFactory
.
getReflectionFactory
();
// IllegalAccessException {
//
private
static
void
setFailsafeFieldValue
(
Field
field
,
Object
target
,
Object
value
)
throws
NoSuchFieldException
,
// // 反射访问私有变量
IllegalAccessException
{
// field.setAccessible(true);
//
// 反射访问私有变量
// /**
field
.
setAccessible
(
true
);
// * 接下来,我们将字段实例中的修饰符更改为不再是final,
// * 从而使反射允许我们修改静态final字段。
/**
// */
* 接下来,我们将字段实例中的修饰符更改为不再是final,
// Field modifiersField = Field.class.getDeclaredField("modifiers");
* 从而使反射允许我们修改静态final字段。
// modifiersField.setAccessible(true);
*/
// int modifiers = modifiersField.getInt(field);
Field
modifiersField
=
Field
.
class
.
getDeclaredField
(
"modifiers"
);
//
modifiersField
.
setAccessible
(
true
);
// // 去掉修饰符int中的最后一位
int
modifiers
=
modifiersField
.
getInt
(
field
);
// modifiers &= ~Modifier.FINAL;
// modifiersField.setInt(field, modifiers);
// 去掉修饰符int中的最后一位
//
modifiers
&=
~
Modifier
.
FINAL
;
// FieldAccessor fa = reflectionFactory.newFieldAccessor(field, false);
modifiersField
.
setInt
(
field
,
modifiers
);
// fa.set(target, value);
// }
FieldAccessor
fa
=
reflectionFactory
.
newFieldAccessor
(
field
,
false
);
//
fa
.
set
(
target
,
value
);
// private static void blankField(Class<?> enumClass, String fieldName) throws NoSuchFieldException,
}
// IllegalAccessException {
// for (Field field : Class.class.getDeclaredFields()) {
private
static
void
blankField
(
Class
<?>
enumClass
,
String
fieldName
)
throws
NoSuchFieldException
,
// if (field.getName().contains(fieldName)) {
IllegalAccessException
{
// AccessibleObject.setAccessible(new Field[]{field}, true);
for
(
Field
field
:
Class
.
class
.
getDeclaredFields
())
{
// setFailsafeFieldValue(field, enumClass, null);
if
(
field
.
getName
().
contains
(
fieldName
))
{
// break;
AccessibleObject
.
setAccessible
(
new
Field
[]{
field
},
true
);
// }
setFailsafeFieldValue
(
field
,
enumClass
,
null
);
// }
break
;
// }
}
//
}
// private static void cleanEnumCache(Class<?> enumClass) throws NoSuchFieldException, IllegalAccessException {
}
// // Sun (Oracle?!?) JDK 1.5/6
// blankField(enumClass, "enumConstantDirectory");
private
static
void
cleanEnumCache
(
Class
<?>
enumClass
)
throws
NoSuchFieldException
,
IllegalAccessException
{
// // IBM JDK
// Sun (Oracle?!?) JDK 1.5/6
// blankField(enumClass, "enumConstants");
blankField
(
enumClass
,
"enumConstantDirectory"
);
// }
// IBM JDK
//
blankField
(
enumClass
,
"enumConstants"
);
// private static ConstructorAccessor getConstructorAccessor(Class<?> enumClass, Class<?>[] additionalParameterTypes)
}
// throws NoSuchMethodException {
// Class<?>[] parameterTypes = new Class[additionalParameterTypes.length + 2];
private
static
ConstructorAccessor
getConstructorAccessor
(
Class
<?>
enumClass
,
Class
<?>[]
additionalParameterTypes
)
// parameterTypes[0] = String.class;
throws
NoSuchMethodException
{
// parameterTypes[1] = int.class;
Class
<?>[]
parameterTypes
=
new
Class
[
additionalParameterTypes
.
length
+
2
];
// System.arraycopy(additionalParameterTypes, 0, parameterTypes, 2, additionalParameterTypes.length);
parameterTypes
[
0
]
=
String
.
class
;
// return reflectionFactory.newConstructorAccessor(enumClass.getDeclaredConstructor(parameterTypes));
parameterTypes
[
1
]
=
int
.
class
;
// }
System
.
arraycopy
(
additionalParameterTypes
,
0
,
parameterTypes
,
2
,
additionalParameterTypes
.
length
);
//
return
reflectionFactory
.
newConstructorAccessor
(
enumClass
.
getDeclaredConstructor
(
parameterTypes
));
// private static Object makeEnum(Class<?> enumClass, String value, int ordinal, Class<?>[] additionalTypes,
}
// Object[] additionalValues) throws Exception {
// Object[] params = new Object[additionalValues.length + 2];
private
static
Object
makeEnum
(
Class
<?>
enumClass
,
String
value
,
int
ordinal
,
Class
<?>[]
additionalTypes
,
// params[0] = value;
Object
[]
additionalValues
)
throws
Exception
{
// params[1] = Integer.valueOf(ordinal);
Object
[]
params
=
new
Object
[
additionalValues
.
length
+
2
];
// System.arraycopy(additionalValues, 0, params, 2, additionalValues.length);
params
[
0
]
=
value
;
// return enumClass.cast(getConstructorAccessor(enumClass, additionalTypes).newInstance(params));
params
[
1
]
=
Integer
.
valueOf
(
ordinal
);
// }
System
.
arraycopy
(
additionalValues
,
0
,
params
,
2
,
additionalValues
.
length
);
//
return
enumClass
.
cast
(
getConstructorAccessor
(
enumClass
,
additionalTypes
).
newInstance
(
params
));
// /**
}
// * 将枚举实例添加到作为参数提供的枚举类中
// *
/**
// * @param <T>
* 将枚举实例添加到作为参数提供的枚举类中
// * @param enumType 要修改的枚举类型
*
// * @param enumName 添加的枚举类型名字
* @param <T>
// * @param additionalTypes 枚举类型参数类型列表
* @param enumType 要修改的枚举类型
// * @param additionalValues 枚举类型参数值列表
* @param enumName 添加的枚举类型名字
// * @return
* @param additionalTypes 枚举类型参数类型列表
// */
* @param additionalValues 枚举类型参数值列表
// @SuppressWarnings("unchecked")
* @return
// public static <T extends Enum<?>> T addEnum(Class<T> enumType, String enumName, Class<?>[] additionalTypes,
*/
// Object[] additionalValues) {
@SuppressWarnings
(
"unchecked"
)
//
public
static
<
T
extends
Enum
<?>>
T
addEnum
(
Class
<
T
>
enumType
,
String
enumName
,
Class
<?>[]
additionalTypes
,
// // 0. 检查类型
Object
[]
additionalValues
)
{
// if (!Enum.class.isAssignableFrom(enumType)) {
// throw new RuntimeException("class " + enumType + " is not an instance of Enum");
// 0. 检查类型
// }
if
(!
Enum
.
class
.
isAssignableFrom
(
enumType
))
{
//
throw
new
RuntimeException
(
"class "
+
enumType
+
" is not an instance of Enum"
);
// // 1. 在枚举类中查找“$values”持有者并获取以前的枚举实例
}
// Field valuesField = null;
// Field[] fields = enumType.getDeclaredFields();
// 1. 在枚举类中查找“$values”持有者并获取以前的枚举实例
// for (Field field : fields) {
Field
valuesField
=
null
;
// if (field.getName().contains("$VALUES")) {
Field
[]
fields
=
enumType
.
getDeclaredFields
();
// valuesField = field;
for
(
Field
field
:
fields
)
{
// break;
if
(
field
.
getName
().
contains
(
"$VALUES"
))
{
// }
valuesField
=
field
;
// }
break
;
// AccessibleObject.setAccessible(new Field[]{valuesField}, true);
}
//
}
// try {
AccessibleObject
.
setAccessible
(
new
Field
[]{
valuesField
},
true
);
// // 2. 将他拷贝到数组
// T[] previousValues = (T[]) valuesField.get(enumType);
try
{
// List<T> values = new ArrayList<T>(Arrays.asList(previousValues));
// 2. 将他拷贝到数组
//
T
[]
previousValues
=
(
T
[])
valuesField
.
get
(
enumType
);
// // 3. 创建新的枚举项
List
<
T
>
values
=
new
ArrayList
<
T
>(
Arrays
.
asList
(
previousValues
));
// T newValue = (T) makeEnum(enumType, enumName, values.size(), additionalTypes, additionalValues);
//
// 3. 创建新的枚举项
// // 4. 添加新的枚举项
T
newValue
=
(
T
)
makeEnum
(
enumType
,
enumName
,
values
.
size
(),
additionalTypes
,
additionalValues
);
// values.add(newValue);
//
// 4. 添加新的枚举项
// // 5. 设定拷贝的数组,到枚举类型
values
.
add
(
newValue
);
// setFailsafeFieldValue(valuesField, null, values.toArray((T[]) Array.newInstance(enumType, 0)));
//
// 5. 设定拷贝的数组,到枚举类型
// // 6. 清楚枚举的缓存
setFailsafeFieldValue
(
valuesField
,
null
,
values
.
toArray
((
T
[])
Array
.
newInstance
(
enumType
,
0
)));
// cleanEnumCache(enumType);
// return newValue;
// 6. 清楚枚举的缓存
// } catch (Exception e) {
cleanEnumCache
(
enumType
);
// throw new RuntimeException(e.getMessage(), e);
return
newValue
;
// }
}
catch
(
Exception
e
)
{
// }
throw
new
RuntimeException
(
e
.
getMessage
(),
e
);
//}
}
\ No newline at end of file
}
}
\ No newline at end of file
amos-boot-module/amos-boot-module-api/amos-boot-module-latentdanger-api/src/main/java/com/yeejoin/amos/latentdanger/common/enums/LatentDangerLevelEnum.java
View file @
91ba21e4
package
com
.
yeejoin
.
amos
.
latentdanger
.
common
.
enums
;
package
com
.
yeejoin
.
amos
.
latentdanger
.
common
.
enums
;
import
com.yeejoin.amos.boot.biz.common.utils.DynamicEnumUtil
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -108,13 +106,14 @@ public enum LatentDangerLevelEnum {
...
@@ -108,13 +106,14 @@ public enum LatentDangerLevelEnum {
public
static
LatentDangerLevelEnum
addEnumDynamic
(
String
enumName
,
String
name
,
String
code
,
public
static
LatentDangerLevelEnum
addEnumDynamic
(
String
enumName
,
String
name
,
String
code
,
String
riskSourceDangerLevelCode
,
Integer
order
)
{
String
riskSourceDangerLevelCode
,
Integer
order
)
{
LatentDangerLevelEnum
dangerLevelEnum
=
DynamicEnumUtil
.
addEnum
(
LatentDangerLevelEnum
.
class
,
enumName
,
// LatentDangerLevelEnum dangerLevelEnum = DynamicEnumUtil.addEnum(LatentDangerLevelEnum.class, enumName,
new
Class
[]{
String
.
class
,
String
.
class
,
String
.
class
,
Integer
.
class
},
new
Object
[]{
name
,
code
,
// new Class[]{String.class, String.class, String.class, Integer.class}, new Object[]{name, code,
riskSourceDangerLevelCode
,
order
});
// riskSourceDangerLevelCode, order});
if
(!
ValidationUtil
.
isEmpty
(
dangerLevelEnum
))
{
// if (!ValidationUtil.isEmpty(dangerLevelEnum)) {
supervisionDangerLevelEnumMap
.
put
(
code
,
dangerLevelEnum
);
// supervisionDangerLevelEnumMap.put(code, dangerLevelEnum);
}
// }
return
dangerLevelEnum
;
// return dangerLevelEnum;
return
null
;
}
}
public
String
getName
()
{
public
String
getName
()
{
...
...
amos-boot-module/amos-boot-module-api/amos-boot-module-latentdanger-api/src/main/java/com/yeejoin/amos/latentdanger/common/enums/LatentDangerReformTypeEnum.java
View file @
91ba21e4
package
com
.
yeejoin
.
amos
.
latentdanger
.
common
.
enums
;
package
com
.
yeejoin
.
amos
.
latentdanger
.
common
.
enums
;
import
com.yeejoin.amos.boot.biz.common.utils.DynamicEnumUtil
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
java.util.HashMap
;
import
java.util.HashMap
;
...
@@ -86,11 +85,12 @@ public enum LatentDangerReformTypeEnum {
...
@@ -86,11 +85,12 @@ public enum LatentDangerReformTypeEnum {
}
}
public
static
LatentDangerReformTypeEnum
addEnumDynamic
(
String
enumName
,
String
name
,
String
code
)
{
public
static
LatentDangerReformTypeEnum
addEnumDynamic
(
String
enumName
,
String
name
,
String
code
)
{
LatentDangerReformTypeEnum
dangerReformTypeEnum
=
DynamicEnumUtil
.
addEnum
(
LatentDangerReformTypeEnum
.
class
,
enumName
,
// LatentDangerReformTypeEnum dangerReformTypeEnum = DynamicEnumUtil.addEnum(LatentDangerReformTypeEnum.class, enumName,
new
Class
[]{
String
.
class
,
String
.
class
},
new
Object
[]{
name
,
code
});
// new Class[]{String.class, String.class}, new Object[]{name, code});
if
(!
ValidationUtil
.
isEmpty
(
dangerReformTypeEnum
))
{
// if (!ValidationUtil.isEmpty(dangerReformTypeEnum)) {
supervisionReformTypeEnumMap
.
put
(
code
,
dangerReformTypeEnum
);
// supervisionReformTypeEnumMap.put(code, dangerReformTypeEnum);
}
// }
return
dangerReformTypeEnum
;
// return dangerReformTypeEnum;
return
null
;
}
}
}
}
amos-boot-module/amos-boot-module-api/amos-boot-module-latentdanger-api/src/main/java/com/yeejoin/amos/latentdanger/common/enums/LatentDangerStateEnum.java
View file @
91ba21e4
package
com
.
yeejoin
.
amos
.
latentdanger
.
common
.
enums
;
package
com
.
yeejoin
.
amos
.
latentdanger
.
common
.
enums
;
import
com.yeejoin.amos.boot.biz.common.utils.DynamicEnumUtil
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -63,11 +61,12 @@ public enum LatentDangerStateEnum {
...
@@ -63,11 +61,12 @@ public enum LatentDangerStateEnum {
}
}
public
static
LatentDangerStateEnum
addEnumDynamic
(
String
enumName
,
String
name
,
String
code
)
{
public
static
LatentDangerStateEnum
addEnumDynamic
(
String
enumName
,
String
name
,
String
code
)
{
LatentDangerStateEnum
dangerStateEnum
=
DynamicEnumUtil
.
addEnum
(
LatentDangerStateEnum
.
class
,
enumName
,
// LatentDangerStateEnum dangerStateEnum = DynamicEnumUtil.addEnum(LatentDangerStateEnum.class, enumName,
new
Class
[]{
String
.
class
,
String
.
class
},
new
Object
[]{
name
,
code
});
// new Class[]{String.class, String.class}, new Object[]{name, code});
if
(!
ValidationUtil
.
isEmpty
(
dangerStateEnum
))
{
// if (!ValidationUtil.isEmpty(dangerStateEnum)) {
enumMap
.
put
(
code
,
dangerStateEnum
);
// enumMap.put(code, dangerStateEnum);
}
// }
return
dangerStateEnum
;
// return dangerStateEnum;
return
null
;
}
}
}
}
amos-boot-system-tdc/amos-boot-module-tdc-biz/src/main/java/com/yeejoin/amos/boot/module/tdc/biz/controller/CheckModelController.java
View file @
91ba21e4
...
@@ -16,7 +16,6 @@ import org.typroject.tyboot.core.foundation.enumeration.UserType;
...
@@ -16,7 +16,6 @@ import org.typroject.tyboot.core.foundation.enumeration.UserType;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
sun.reflect.generics.tree.VoidDescriptor
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
...
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