【8.3.0】【scanner】更新字段类型判断,增加一个number类型的判断

master
stylefeng 2024-08-25 22:37:07 +08:00
parent fdc1a5b3c8
commit 9ab7a8f541
5 changed files with 49 additions and 13 deletions

View File

@ -36,9 +36,14 @@ import lombok.Getter;
public enum FieldTypeEnum { public enum FieldTypeEnum {
/** /**
* javaintlongIntegerStringDoubleBigDecimal * javaStringLongLong
*/ */
BASIC(10), STRING(10),
/**
* javaintIntegerDoubleFloatBigDecimal
*/
NUMBER(11),
/** /**
* javalong[]SysUser[] * javalong[]SysUser[]

View File

@ -31,7 +31,8 @@ public abstract class BaseSimpleFieldFormatProcess implements SimpleFieldFormatP
ClassParseResult classParseResult = ClassTypeUtil.getClassFieldType(originValue.getClass()); 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); return this.simpleItemFormat(originValue);
} }

View File

@ -34,9 +34,14 @@ public class ClassTypeUtil {
Class<?> clazz = (Class<?>) type; Class<?> clazz = (Class<?>) type;
// 判断是否是基本类型如果是Map或者Object也认定为基本类型不解析他们的字段 // 判断数字类型
if (ClassUtil.isSimpleValueType(clazz)) { if (validateNumericTypeFlag(clazz)) {
return new ClassParseResult(FieldTypeEnum.BASIC, null); 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类型则认定为基本类型不做处理不解析他的元数据 // 如果是map类型则认定为基本类型不做处理不解析他的元数据
else if (Map.class.isAssignableFrom(rawTypeClass)) { else if (Map.class.isAssignableFrom(rawTypeClass)) {
return new ClassParseResult(FieldTypeEnum.BASIC, null); return new ClassParseResult(FieldTypeEnum.STRING, null);
} }
// 如果是Object类型则认定为基本类型不解析他的具体内容 // 如果是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);
}
}
} }

View File

@ -48,7 +48,7 @@ public class ClassMetaFactory {
*/ */
public static FieldMetadata beginCreateFieldMetadata(ClassParseResult classParseResult, String uuid) { public static FieldMetadata beginCreateFieldMetadata(ClassParseResult classParseResult, String uuid) {
// 1. 如果是基础类型,直接渲染结果 // 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); return MetadataCreateFactory.createBaseClassMetadata((Class<?>) classParseResult.getOriginType(), classParseResult.getFieldTypeEnum(), uuid);
} }
@ -121,7 +121,7 @@ public class ClassMetaFactory {
// 7. 其他情况,返回最基本的数据 // 7. 其他情况,返回最基本的数据
else { else {
return MetadataCreateFactory.createBaseClassMetadata(String.class, FieldTypeEnum.BASIC, uuid); return MetadataCreateFactory.createBaseClassMetadata(String.class, FieldTypeEnum.STRING, uuid);
} }
} }

View File

@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.rule.enums.FieldTypeEnum; import cn.stylefeng.roses.kernel.rule.enums.FieldTypeEnum;
import cn.stylefeng.roses.kernel.rule.pojo.clazz.ClassParseResult; 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 cn.stylefeng.roses.kernel.scanner.api.pojo.scanner.ScannerProperties;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -85,9 +86,14 @@ public class AdvancedClassTypeUtil {
Class<?> clazz = (Class<?>) type; Class<?> clazz = (Class<?>) type;
// 判断是否是基本类型如果是Map或者Object也认定为基本类型不解析他们的字段 // 判断数字类型
if (ClassUtil.isSimpleValueType(clazz)) { if (ClassTypeUtil.validateNumericTypeFlag(clazz)) {
ClassParseResult classParseResult = new ClassParseResult(FieldTypeEnum.BASIC, null); return new ClassParseResult(FieldTypeEnum.NUMBER, null);
}
// 判断是否是其他基本类型,如果是其他类型,认为是字符串
else if (ClassUtil.isSimpleValueType(clazz)) {
ClassParseResult classParseResult = new ClassParseResult(FieldTypeEnum.STRING, null);
classParseResult.setOriginType(type); classParseResult.setOriginType(type);
return classParseResult; return classParseResult;
} }