DataType

概述

DataType是GOT模型中用于定义数据结构和约束规则的核心节点。通过继承机制和全局管理能力,确保业务对象数据格式的统一性,实现数据一致性与开发效率的平衡。

  • 数据一致性:通过DataType的类型、长度、精度、主表设置,实现数据结构粒度/约束一致性;
  • 开发效率:通过拖拽操作快速复用,实现自动化数据约束校验、数据下拉引用功能,减少代码冗余。

DataType实体支持包括:String、Long、Decimal、Boolean、Date、Time、DateTime、Enum、Blob、Clob、Component共11种数据类型,这些数据类型由GOT模型定义,与具体关系型数据库管理系统无关,通过运行时根据类型自动进行数据类型映射。

  • String:文本数据类型,在DataType支持的11种数据类型种,只有String类型支持设置主表关系,基于主表关系设置,可以实现自动化构造下拉画面、数据约束校验等功能。基于对业务系统设计归纳总结,业务表中单列候选键选举一个定义String类型DataType并设置主表关系
  • Enum:枚举类型。相比枚举实体,Enum类型的DataType在枚举实体的基础上,支持枚举项过滤,以及效果采用DataType形式进行展示。
  • Component:维度类型。属于GOT自定义类型,结合面向对象封装特性与业务设计进行使用。

每个DataType实体会生成一个普通Java类,位于层节点源码的datatypes包目录下,命名规则为:DataType_实体名称。

package gongqi.erp.layers.obj.datatypes;

public class DataType_ItemId extends gongqi.erp.gotmodel.datatype.GongqiString {        

    public DataType_ItemId(){}

    public DataType_ItemId(String value) {
        this.setValue(value);
    }

    ......

}

DataType实体在业务建模过程主要有以下三种用途:

  • TableField继承:表字段继承,此场景为主要用途。实现表字段结构粒度一致与数据约束校验。
  • 无数据源Editor:无数据源Editor,相较于普通无数据源Editor,配置DataType属性后,可以实现数据自动下拉、校验等功能。
  • DataType继承:DataType可以继承相同类型的DataType,实现结构的层次化设计。例如:金额属于Decimal类型Datype,精度为4,用于统一金额数据类型,基于此有销售金额的DataType继承金额DataType,精度配置为2,实现类型全局统一,精度基于模块设计。

实体结构

DataType

DataType节点是DataType实体根节点,根据数据类型不同,实体结构以及属性存在差异,大部分情况下DataType实体只有根节点,不存在子节点,其中对于String类型的DataType,如果存在主表关系配置,则存在一个Relation子节点,用于配置主表关系。对于Component数据类型DataType,存在一个DataTypeArray节点,DataTypeArray节点下允许多个DataTypeArrayItem子节点,DataTypeArrayItem用于配置维度项。

公共属性列表

属性 说明
Extends 指定继承关系。
除Enum类型外,所有DataType仅允许继承同类型的其他DataType实体。
Label 标签。标签存在继承属性,对于继承自DataType的节点,如果未设置标签,在界面渲染时会查找继承的节点的标签。
根据业务设计惯式,为保证同一个业务字段在系统内标签的一致性,一般在DataType上设置标签,对于继承DataType的TableField、Editor、等不单独设置标签,通过标签继承进行实现
HelpText 帮助文本,用于描述解释,目前仅作用于GOT设计器,用于对节点解释备注说明。
DisplayLength 显示宽度,单位:字符。
不同数据类型的DataType默认显示宽度不一样。
根据业务设计规范,建议显示宽度不小于标签内容,对于长度有限编号类(通常内容小于20个字符),建议显示大于实际内容1个字符

String类型属性列表

属性 说明
StringSize 数据存储长度,不区分字符与汉字。
默认值:20
Trim 空白字符的处理策略,空白字符包括:半角空格、全角空格、回车、换行、Tab。默认值:LeftRigth
• Left:去除字符串左侧的空白字符;
• LeftRigth:去除字符串左右两侧的空白字符;
• None:不处理空白字符,保持原样;
• Through:去除字符串左右两侧空白字符,内容的空白字符,连续的多个空白字符合成一个半角空格;
ChangeCase 字符串大小写处理策略。默认值:None
• Lower:转换为小写字符
• None:不处理,保持原样
• Upper:转换为大写字符。
FormLookup 指定DataType下拉画面,下拉数据来源是Lookup类型的Form。对于继承DataType的TableField或无数据源StringEditor,如果没有指定下拉画面,则继承DataType的下拉画面配置。
FilterSysActive 指定继承此DataType的表字段,下拉画面是否要根据SysActive字段进行过滤显示值为true的数据。SysActive字段必须名称为SysActive且继承名称为SysActive的DataType才有效。
此配置项仅针对自动构造的下拉画面生效,如果下拉画面为自定义下拉画面此属性无效
Regular 配置字符串的数据格式,属性值为正则表达式,如果数据不满足此规则,输入后提示数据无效。
此属性仅作用于客户端输入过程,通过程序自动生成的数据此属性无效

Long类型属性列表

属性 说明
ShowZero 配置LongEditor对于数值0是否显示,如果配置为false,对于数值0,编辑框未进入编辑模式时展示为空白,进入编辑框后展示为0。
此属性仅作用于客户端自动渲染画面的LongEditor控件
ThousandSeperator 配置LongEditor在非编辑模式展示时,是否显示千分位分隔符。
此属性仅作用于客户端自动渲染画面的LongEditor控件

Decimal类型属性列表

属性 说明
DisplayStyle 配置显示样式,支持以下样式配置
• 显示百分比:DecimalEditor展示时增加百分号“%”后缀,例如:50,显示为50%,仅增加显示后缀,数值不动。
• 货币符号:DecimalEditor展示时增加货币符号后缀,具体货币符号通过界面配置。
此属性仅作用于客户端自动渲染画面的DecimalEditor控件
ShowZero 配置DecimalEditor对于数值0是否显示,如果配置为false,对于数值0,编辑框未进入编辑模式时展示为空白,进入编辑框后展示为0。
此属性仅作用于客户端自动渲染画面的DecimalEditor控件
ThousandSeperator 配置DecimalEditor在非编辑模式展示时,是否显示千分位分隔符。
此属性仅作用于客户端自动渲染画面的DecimalEditor控件
NumOfDecimals 设置浮点数存储的精度,即小数点后的小数位数。
DisplayDecimals 设置浮点数通过DecimalEditor展示时,在未进入编辑状态时,显示的小数位数,允许与存储精度不一致,值范围小于等于存储精度。
例如:数据存储的精度为4,展示精度为2.
RoundOff 设置四舍五入的方式,默认值:HalfUp,可选策略如下:
• Ceiling:向正无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于 UP;如果结果为负,则舍入行为类似于 DOWN。注意,此舍入模式始终不会减少计算值。
• Down:向零方向舍入的舍入模式。从不对舍弃部分前面的数字加 1(即截尾)。注意,此舍入模式始终不会增加计算值的绝对值。
• Floor:向负无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于 DOWN;如果结果为负,则舍入行为类似于 RoundingMode.UP。注意,此舍入模式始终不会增加计算值。
• HalfDown:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。如果被舍弃部分 > 0.5,则舍入行为同 UP;否则舍入行为同 DOWN。
• HalfEven:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为同 HALF_UP;如果为偶数,则舍入行为同 HALF_DOWN。注意,在重复进行一系列计算时,此舍入模式可以在统计上将累加错误减到最小。此舍入模式也称为“银行家舍入法”,主要在美国使用。此舍入模式类似于 Java 中对 float 和 double 算法使用的舍入策略。
• HalfUp:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。如果被舍弃部分 >= 0.5,则舍入行为同 RoundingMode.UP;否则舍入行为同 DOWN。注意,此舍入模式就是通常学校里讲的四舍五入。
• Unnecessary:用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。如果对生成精确结果的操作指定此舍入模式,则抛出 ArithmeticException。
• Up:远离零方向舍入的舍入模式。始终对非零舍弃部分前面的数字加 1。注意,此舍入模式始终不会减少计算值的绝对值。

Date类型属性列表

属性 说明
DisplayStyle 设置日期的展示样式,支持以下格式:
• yyyy:展示年份。例如:2025
• MM-dd:展示月份和日期。例如:04-15
• MM/dd:展示月份和日期。例如:04/15
• yyyy-MM:展示年份和月份。例如:2025-04
• yyyyMMdd:展示年月日。例如:20250415
• yyyy-MM-dd:展示年月日。例如:2025-04-15
• yyyy/MM/dd:展示年月日。例如:2025/04/15
• yyyy-M-d:展示年月日。例如:2025-4-15
• yyyy/M/d:展示年月日。例如:2025/4/15

Time类型属性列表

属性 说明
DisplayStyle 设置时间的展示样式,支持以下格式:
• HH:mm:ss:展示时分秒,例如:14:03:10
• HH:mm:展示时分。例如:14:03

DateTime类型属性列表

属性 说明
DisplayStyle 设置日期时间的展示样式,支持以下格式:
• yyyy-MM-dd HH:mm:ss:展示年月日时分秒,例如:2025-04-15 14:03:10
• yyyy-MM-dd HH:mm:展示年月日时分,例如:2025-04-15 14:03​

Boolean类型属性列表

属性 说明
TextTure 设置布尔值true时BooleanEditor展示文本。
TextFalse 设置布尔值false时BooleanEditor展示文本

Enum类型属性列表

属性 说明
Source 指定继承实体的类型,可选值:DataType、Enum。
Regular 设置展示哪些EnumItem。属性值内容为EnumItem值,多个值之间用竖线“\ ”分隔。例如:1\ 2\ 3

Relation

对于String类型的DataType,存在主表关联时,有且仅有一个Relation节点,用于配置主表信息。

属性列表

属性 说明
Table 数据主表,即数据来源的表。
例如:物料编号来源物料表,物料编号ItemId DataType的Relation节点Table属性为物料表ItemTable。
Field 指定DataType关联主表的哪个字段。
例如:物料编号DataType关联字段是ItemTable的ItemId字段。
FilterField 单纯无效,根据主表中某字段进行过滤,在主表外有继承该DataType节点的,如果需要根据当前字段过滤,则在表内也需
RefMenuItem 配置DataType的Editor右键菜单“进入主表”打开的画面。一般打开画面的默认数据源组的根节点为当前DateType的主表。
ValidateDelete 删除时是否校验引用关系,为true是校验引用 删除时会提示错误数据存在引用。

DataTypeArrayItem

对于Component类型的DataType,包含一个DataTypeArray节点,DataTypeArray节点下支持多个DataTypeArrayItem,每一个DataTypeArrayItem代表一个维度项。维度项用于关联一个已经存在的DataType。

属性列表

属性 说明
RefDataType 关联的DataType节点。

results matching ""

    No results matching ""