Rafy 框架 - 流水号插件

简介:

Rafy 框架又添新成员:流水号插件。本文将解释 Rafy 框架中的流水插件的场景、使用方法。

 

场景


在开发各类数据库应用系统时,往往需要生成从一开始的流水号,有时还需要按月或者按日进行独立生成,如下面的格式:2016031800000001、2016031800000002……。

设计本插件用于生成上述相应格式的编号。

 

使用方法


添加插件

1.通过 Nuget Package Manager 搜索并安装 Rafy.SerialNumber 插件。

2.在 DomainApp 中添加该插件;同时,设置该插件所对应的数据库配置名:

class JXCApp : DomainApp
{
    protected override void InitEnvironment()
    {
        //配置插件所对应的数据库配置名。
        Rafy.SerialNumber.SerialNumberPlugin.DbSettingName = "TestDb";

        //添加流水号插件到 Rafy 应用程序集中。
        RafyEnvironment.DomainPlugins.Add(new Rafy.SerialNumber.SerialNumberPlugin());

        base.InitEnvironment();
    }
}
 
使用插件

1.生成数据库。

该插件中自带两个实体:SerialNumberInfo 、SerialNumberValue ,所以 Rafy 会为其在数据库中添加相应的两张表。

2.添加流水号生成规则。

SerialNumberInfo 表示定义的流水号生成规则信息。而 SerialNumberValue 则表示生成的流水号的具体值。所以要生成流水号,必须先为其定义生成规则。可以使用 SerialNumberController 进行简单的每日规则创建,示例如下:

var controller = DomainControllerFactory.Create<SerialNumberController>();
var sni = controller.CreateDailySerialNumberInfo("流水号规则-1");
 

CreateDailySerialNumberInfo 方法内部其实非常简单,开发者可以参考以下代码创建新的生成规则,如下:

/// <summary>
/// 创建一个以日期进行分组生成编号的规则,存储到仓库中,并返回。
/// 性能-仓库访问次数:1。
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public SerialNumberInfo CreateDailySerialNumberInfo(string name, string format = "yyyyMMdd********")
{
    var sni = new SerialNumberInfo
    {
        Name = name,
        TimeGroupFormat = "yyyyMMdd",
        Format = format,
        RollValueStart = 1,
        RollValueStep = 1,
    };

    var infoRepo = RF.Concrete<SerialNumberInfoRepository>();
    infoRepo.Save(sni);

    return sni;
});

 

3.生成流水号。

使用以下代码生成流水号即可:

var next = controller.GenerateNext("流水号规则-1");
Assert.AreEqual("2016031800000001", next);
next = controller.GenerateNext("流水号规则-1");
Assert.AreEqual("2016031800000002", next);
next = controller.GenerateNext(sni);
Assert.AreEqual("2016031800000002", next);

 

PS:该文已经纳入《 Rafy 用户手册》中。

目录
相关文章
|
6月前
|
XML 存储 搜索推荐
一个真实的 SAP 标准 UI5 应用的扩展开发项目(Extension Project)分享 - UI5 界面上新增订单创建者字段
一个真实的 SAP 标准 UI5 应用的扩展开发项目(Extension Project)分享 - UI5 界面上新增订单创建者字段
58 0
|
9月前
|
SQL 前端开发 数据库
|
XML 数据格式 容器
一个真实的 SAP 标准 UI5 应用的扩展开发项目(Extension Project)分享 - UI5 界面上新增订单创建者字段(2)
一个真实的 SAP 标准 UI5 应用的扩展开发项目(Extension Project)分享 - UI5 界面上新增订单创建者字段
102 0
|
JavaScript
【Vue 开发实战】实战篇 # 40:自己封装一个支持自动校验的表单项
【Vue 开发实战】实战篇 # 40:自己封装一个支持自动校验的表单项
108 0
【Vue 开发实战】实战篇 # 40:自己封装一个支持自动校验的表单项
|
JSON JavaScript 区块链
实例|APICloud AVM框架封装省市区级联选择弹框
今天介绍用APICloud AVM框架封装省市区级联选择弹框。
139 0
|
SQL 算法 前端开发
全栈开发之后端脚手架:SpringBoot集成MybatisPlus代码生成,分页,雪花算法,统一响应,异常拦截,Swagger3接口文档
全栈开发之后端脚手架:SpringBoot集成MybatisPlus代码生成,分页,雪花算法,统一响应,异常拦截,Swagger3接口文档
473 0
全栈开发之后端脚手架:SpringBoot集成MybatisPlus代码生成,分页,雪花算法,统一响应,异常拦截,Swagger3接口文档
|
BI
SAP ABAP报表依赖设计原理详解
SAP ABAP报表依赖设计原理详解
133 0
SAP ABAP报表依赖设计原理详解
|
XML Java 数据格式
java 自定义表单 动态表单 表单设计器 工作流引擎 flowable 设计方案
java 自定义表单 动态表单 表单设计器 工作流引擎 flowable 设计方案
1164 0
java 自定义表单 动态表单 表单设计器 工作流引擎 flowable 设计方案
|
Web App开发 前端开发 .NET
【ABP框架系列学习】模块系统(4)
原文:【ABP框架系列学习】模块系统(4) 0.引言 ABP提供了构建模块和通过组合模块以创建应用程序的基础设施。一个模块可以依赖于另外一个模块。通常,程序集可以认为是模块。如果创建多个程序集的应用程序,建议为每个程序集创建模块定义。
1537 0