在我们日常开发中经常要一些单据生成指定格式的编码,而且现在分布式环境下要考虑的事情会特别多。oinone提供了简易的编码生成能力
一、编码生成器
可以在模型或者字段上配置编码自动生成规则。在进行数据存储时,如果配置了编码自动生成规则的字段值为空,则系统将根据规则自动生成编码。编码自动生成功能是通过序列生成器来支持的。可以在序列生成器生成的序列编码基础上再进行组合配置的功能编码生成最终的编码。序列生成器可以配置初始序列,步长,日期格式,长度。
模型序列生成器(举例)
使用模型编码生成器,需要继承CodeModel或者有Code字段,那么使用Model.Code注解即可。
Step1 为PetShop增加一个@Model.Code注解,并增加一个店铺编码(Code)字段
package pro.shushi.pamirs.demo.api.model;
import pro.shushi.pamirs.meta.annotation.Field;
import pro.shushi.pamirs.meta.annotation.Model;
import java.sql.Time;
@Model.model(PetShop.MODEL_MODEL)
@Model(displayName = "宠物店铺",summary="宠物店铺",labelFields = {"shopName"})
@Model.Code(sequence = "DATE_ORDERLY_SEQ",prefix = "P",size=6,step=1,initial = 10000,format = "yyyyMMdd")
public class PetShop extends AbstractDemoIdModel {
public static final String MODEL_MODEL="demo.PetShop";
@Field(displayName = "店铺编码")
private String code;
@Field(displayName = "店铺名称",required = true)
private String shopName;
@Field(displayName = "开店时间",required = true)
private Time openTime;
@Field(displayName = "闭店时间",required = true)
private Time closeTime;
}
Step2 重启查看效果
- 进入店铺新增页面新增一个oinone宠物店铺003
- 查看店铺列表页面,新增的记录中店铺编码一列,已经按Model.Code注解要求地生成了
Step3 小结
在我们日常开发中经常要一些单据生成指定格式的编码,而且现在分布式环境下要考虑的事情会特别多。oinone提供了简易的编码生成能力,大家可以根据编码注解说明,自行对PetShop模型进行不同配置,来学习编码生成器的知识
字段序列生成器
字段编码生成器,在对应的字段上增加,并使用Field.Sequence注解即可
Step1 为PetShop增加一个字段codeTwo并增加@Field.Sequence注解
package pro.shushi.pamirs.demo.api.model;
import pro.shushi.pamirs.meta.annotation.Field;
import pro.shushi.pamirs.meta.annotation.Model;
import java.sql.Time;
@Model.model(PetShop.MODEL_MODEL)
@Model(displayName = "宠物店铺",summary="宠物店铺",labelFields = {"shopName"})
@Model.Code(sequence = "DATE_ORDERLY_SEQ",prefix = "P",size=6,step=1,initial = 10000,format = "yyyyMMdd")
public class PetShop extends AbstractDemoIdModel {
public static final String MODEL_MODEL="demo.PetShop";
@Field(displayName = "店铺编码")
private String code;
@Field(displayName = "店铺编码2")
@Field.Sequence(sequence = "DATE_ORDERLY_SEQ",prefix = "C",size=6,step=1,initial = 10000,format = "yyyyMMdd")
private String codeTwo;
@Field(displayName = "店铺名称",required = true)
private String shopName;
@Field(displayName = "开店时间",required = true)
private Time openTime;
@Field(displayName = "闭店时间",required = true)
private Time closeTime;
}
Step2 重启查看效果
- 进入店铺新增页面新增一个oinone宠物店铺004
- 查看店铺列表页面,新增的记录中店铺编码2一列,已经按Field.Sequence注解要求地生成了
二、编码注解说明,模型更多其他注解详见4.1.6【模型之元数据详解】
模型编码注解说明
-
模型编码生成器规定仅针对code属性生效
-
Model.Code#sequence:序列生成函数
- SEQ——自增流水号(不连续)
- ORDERLY——自增强有序流水号(连续)
- DATE_SEQ——日期+自增流水号(不连续)
- DATE_ORDERLY_SEQ——日期+强有序流水号(连续)
- DATE——日期
- UUID——随机32位字符串,包含数字和小写英文字母
-
Model.Code#prefix:前缀
-
Model.Code#suffix:后缀
-
Model.Code#size:长度
-
Model.Code#step:步长(包含流水号有效)
-
Model.Code#initial:起始值(包含流水号有效)
-
Model.Code#format:格式化(包含日期有效)
-
Model.Code#separator:分隔符
字段编码注解说明
-
字段编码生成器规定在字段上增加Field.Sequence注解即可
-
Field.Sequence#sequence:序列生成函数
- SEQ——自增流水号(不连续)
- ORDERLY_SEQ——自增强有序流水号(连续)
- DATE_SEQ——日期+自增流水号(不连续)
- DATE_ORDERLY_SEQ——日期+强有序流水号(连续)
- DATE——日期
- UUID——随机32位字符串,包含数字和小写英文字母
-
Field.Sequence#prefix:前缀
-
Field.Sequence#suffix:后缀
-
Field.Sequence#size:长度
-
Field.Sequence#step:步长(包含流水号有效)
-
Field.Sequence#initial:起始值(包含流水号有效)
-
Field.Sequence#format:格式化(包含日期有效)
-
Field.Sequence#separator:分隔符
Oinone社区 作者:史, 昂原创文章,如若转载,请注明出处:https://doc.oinone.top/oio4/9236.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验