我们在日常开发项目过程中往往需要各种订单单号的产生方法,而且是支持多用户并发、支持多种数据库的,我们并不想为每个项目都写一些独立的代码去实现这些功能,往往需要有个通用的函数比较爽一些。
下面我们以C#.NET通用权限管理系统组件源码的做法,给大家来一个参考,下面是序列(流水号)管理器的效果,这里保存着各种需要的当前状态。
这里是代码的具体位置参考
这里是程序运行效果参考,可以通过函数获取当前的序号、编号等等,可以灵活设置要几位长度的编号,是否补前导零,从几开始编号等等。
这个是服务层的并发处理方法参考
这里是具体的页面上的代码参考,程序里只需要一行代码,就可以获取自动流水号、序号、编号等全智能的实现,用起来会很爽,而且可以生成各种类别的订单号,甚至可以讲是任意的都可以,不要折腾太多飞机了,而且还支持多种数据库,不用针对每种数据库又编写代码了,哪个项目都可以灵活用,全部的源码也可以提供。
// -------------------------------------------------------------------- // All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd. // -------------------------------------------------------------------- using System; namespace DotNet.WebForm{ using DotNet.Service; /// <remarks> /// OrderNumber /// 序号产生方式、并发序号发生、唯一编号产生 /// /// 修改纪录 /// /// 版本:1.0 2011.02.28 JiRiGaLa 初步创建。 /// /// 版本:1.0 /// <author> /// <name> JiRiGaLa </name> /// <date> 2011.02.28 </date> /// </author> /// </remarks> public partial class OrderNumber : BasePage { protected void Page_Load( object sender, EventArgs e) { } private void GetOrderNumber() { string orderName = string .Empty; // 1.按年产生订单序号。 orderName = " Order: " + DateTime.Now.ToString( " yyyy " ); // 获取原编号 // ServiceManager.Instance.SequenceService.GetOldSequence(this.UserInfo, fullName, 0, 5, true); // 这里是编号增加一的动作 this .txtOrderNumber1.Text = ServiceManager.Instance.SequenceService.GetNewSequence( this .UserInfo, orderName, 0 , 5 , true ); // 2.按年月产生订单序号。 orderName = " Order: " + DateTime.Now.ToString( " yyyyMM " ); // ServiceManager.Instance.SequenceService.GetOldSequence(this.UserInfo, fullName, 0, 5, true); // 这里是编号增加一的动作 this .txtOrderNumber2.Text = ServiceManager.Instance.SequenceService.GetNewSequence( this .UserInfo, orderName, 0 , 5 , true ); // 3.按年月日产生订单序号。 orderName = " Order: " + DateTime.Now.ToString( " yyyyMMdd " ); // ServiceManager.Instance.SequenceService.GetOldSequence(this.UserInfo, fullName, 0, 5, true); // 这里是编号增加一的动作 this .txtOrderNumber3.Text = ServiceManager.Instance.SequenceService.GetNewSequence( this .UserInfo, orderName, 0 , 5 , true ); // 4.按类别产生订单序号。 orderName = " Order: " + " StockOut " ; // ServiceManager.Instance.SequenceService.GetOldSequence(this.UserInfo, fullName, 0, 5, true); // 这里是编号增加一的动作 this .txtOrderNumber4.Text = ServiceManager.Instance.SequenceService.GetNewSequence( this .UserInfo, orderName, 0 , 5 , true ); } protected void btnGetOrderNumber_Click( object sender, EventArgs e) { this .GetOrderNumber(); } }
}