mirror of https://gitee.com/stylefeng/roses
【8.3.0】【scanner】更新字段类型判断,增加一个number类型的判断
parent
fdc1a5b3c8
commit
9ab7a8f541
|
@ -36,9 +36,14 @@ import lombok.Getter;
|
|||
public enum FieldTypeEnum {
|
||||
|
||||
/**
|
||||
* 基本类型,描述java中的int、long、Integer、String、Double、BigDecimal等
|
||||
* 字符串,描述java中的String字段,Long归属为字符串,前端识别不了Long
|
||||
*/
|
||||
BASIC(10),
|
||||
STRING(10),
|
||||
|
||||
/**
|
||||
* 数字类型,描述java中的int、Integer、Double、Float、BigDecimal等
|
||||
*/
|
||||
NUMBER(11),
|
||||
|
||||
/**
|
||||
* 基础数组类型,描述java中的数组,例如long[]、SysUser[]
|
||||
|
|
|
@ -31,7 +31,8 @@ public abstract class BaseSimpleFieldFormatProcess implements SimpleFieldFormatP
|
|||
ClassParseResult classParseResult = ClassTypeUtil.getClassFieldType(originValue.getClass());
|
||||
|
||||
// 基础类型,直接转化
|
||||
if (FieldTypeEnum.BASIC.equals(classParseResult.getFieldTypeEnum())) {
|
||||
if (FieldTypeEnum.STRING.equals(classParseResult.getFieldTypeEnum())
|
||||
|| FieldTypeEnum.NUMBER.equals(classParseResult.getFieldTypeEnum())) {
|
||||
return this.simpleItemFormat(originValue);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,9 +34,14 @@ public class ClassTypeUtil {
|
|||
|
||||
Class<?> clazz = (Class<?>) type;
|
||||
|
||||
// 判断是否是基本类型,如果是Map或者Object,也认定为基本类型,不解析他们的字段
|
||||
if (ClassUtil.isSimpleValueType(clazz)) {
|
||||
return new ClassParseResult(FieldTypeEnum.BASIC, null);
|
||||
// 判断数字类型
|
||||
if (validateNumericTypeFlag(clazz)) {
|
||||
return new ClassParseResult(FieldTypeEnum.NUMBER, null);
|
||||
}
|
||||
|
||||
// 判断是否是其他基本类型,如果是其他类型,认为是字符串
|
||||
else if (ClassUtil.isSimpleValueType(clazz)) {
|
||||
return new ClassParseResult(FieldTypeEnum.STRING, null);
|
||||
}
|
||||
|
||||
// 判断是否是数组类型
|
||||
|
@ -82,7 +87,7 @@ public class ClassTypeUtil {
|
|||
|
||||
// 如果是map类型,则认定为基本类型,不做处理,不解析他的元数据
|
||||
else if (Map.class.isAssignableFrom(rawTypeClass)) {
|
||||
return new ClassParseResult(FieldTypeEnum.BASIC, null);
|
||||
return new ClassParseResult(FieldTypeEnum.STRING, null);
|
||||
}
|
||||
|
||||
// 如果是Object类型,则认定为基本类型,不解析他的具体内容
|
||||
|
@ -111,4 +116,23 @@ public class ClassTypeUtil {
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 判断一个class是否为数字类型
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2024/8/25 22:27
|
||||
*/
|
||||
public static boolean validateNumericTypeFlag(Class<?> clazz) {
|
||||
|
||||
// 如果是原始类型
|
||||
if (clazz.isPrimitive()) {
|
||||
return clazz == byte.class || clazz == short.class || clazz == int.class || clazz == long.class || clazz == float.class || clazz == double.class;
|
||||
}
|
||||
|
||||
// 如果是包装类型
|
||||
else {
|
||||
return Number.class.isAssignableFrom(clazz);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -48,7 +48,7 @@ public class ClassMetaFactory {
|
|||
*/
|
||||
public static FieldMetadata beginCreateFieldMetadata(ClassParseResult classParseResult, String uuid) {
|
||||
// 1. 如果是基础类型,直接渲染结果
|
||||
if (FieldTypeEnum.BASIC.equals(classParseResult.getFieldTypeEnum())) {
|
||||
if (FieldTypeEnum.STRING.equals(classParseResult.getFieldTypeEnum()) || FieldTypeEnum.NUMBER.equals(classParseResult.getFieldTypeEnum())) {
|
||||
return MetadataCreateFactory.createBaseClassMetadata((Class<?>) classParseResult.getOriginType(), classParseResult.getFieldTypeEnum(), uuid);
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ public class ClassMetaFactory {
|
|||
|
||||
// 7. 其他情况,返回最基本的数据
|
||||
else {
|
||||
return MetadataCreateFactory.createBaseClassMetadata(String.class, FieldTypeEnum.BASIC, uuid);
|
||||
return MetadataCreateFactory.createBaseClassMetadata(String.class, FieldTypeEnum.STRING, uuid);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.FieldTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.clazz.ClassParseResult;
|
||||
import cn.stylefeng.roses.kernel.rule.util.ClassTypeUtil;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.pojo.scanner.ScannerProperties;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
@ -85,9 +86,14 @@ public class AdvancedClassTypeUtil {
|
|||
|
||||
Class<?> clazz = (Class<?>) type;
|
||||
|
||||
// 判断是否是基本类型,如果是Map或者Object,也认定为基本类型,不解析他们的字段
|
||||
if (ClassUtil.isSimpleValueType(clazz)) {
|
||||
ClassParseResult classParseResult = new ClassParseResult(FieldTypeEnum.BASIC, null);
|
||||
// 判断数字类型
|
||||
if (ClassTypeUtil.validateNumericTypeFlag(clazz)) {
|
||||
return new ClassParseResult(FieldTypeEnum.NUMBER, null);
|
||||
}
|
||||
|
||||
// 判断是否是其他基本类型,如果是其他类型,认为是字符串
|
||||
else if (ClassUtil.isSimpleValueType(clazz)) {
|
||||
ClassParseResult classParseResult = new ClassParseResult(FieldTypeEnum.STRING, null);
|
||||
classParseResult.setOriginType(type);
|
||||
return classParseResult;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue