【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 {
/**
* javaintlongIntegerStringDoubleBigDecimal
* javaStringLongLong
*/
BASIC(10),
STRING(10),
/**
* javaintIntegerDoubleFloatBigDecimal
*/
NUMBER(11),
/**
* javalong[]SysUser[]

View File

@ -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);
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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;
}