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 {
|
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[]
|
* 基础数组类型,描述java中的数组,例如long[]、SysUser[]
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue