#region using System.Data.Common; using CSFramework.DB; using CSFrameworkV5.Common; ///*************************************************************************/ ///* ///* 文件名 :DocNoTool.cs ///* 程序说明 : 单据号码管理工具 ///* 原创作者 :www.csframework.com ///* ///* Copyright 2006-2021 C/S框架网 www.csframework.com ///* ///**************************************************************************/ #endregion namespace CSFrameworkV5.DataAccess { /// /// 号码管理工具,支持生成序列号或指定规则的单据号码。 /// public class DocNoTool { /// /// 在同一事务内生成流水号码,格式:XX00000001 /// /// 当前事务 /// 字头 /// 当号码表没有该字头的定义,自动初始化一条序号为1的记录 /// public static string GetDataSN(IDatabase db, DbTransaction tran, string dataCode, bool asHeader) { var cmd = db.CreateSqlProc("sp_sys_GetDataSN"); cmd.AddParam("DataCode", dataCode); cmd.AddParam("AsHeader", asHeader ? "Y" : "N"); cmd.Command.Connection = tran.Connection; cmd.Command.Transaction = tran; var no = db.ExecuteScalar(cmd.Command); return ConvertEx.ToString(no); } /// /// 生成流水号,格式:XX00000001 /// /// SQL连接 /// 字头 /// 当号码表没有该字头的定义,自动初始化一条序号为1的记录 /// public static string GetDataSN(IDatabase db, string dataCode, bool asHeader) { var cmd = db.CreateSqlProc("sp_sys_GetDataSN"); cmd.AddParam("DataCode", dataCode); cmd.AddParam("AsHeader", asHeader ? "Y" : "N"); var no = db.ExecuteScalar(cmd.Command); return ConvertEx.ToString(no); } /// /// 在同一事务内生成流水号,格式:XX00000001 /// /// 当前事务 /// 字头,如:XX /// True/False,当号码表没有该字头的定义,自动初始化一条序号为1的记录 /// 数字序号的长度,如6位序号: 000001, 完整流水号+字头: XX000001 /// public static string GetDataSN(IDatabase db, DbTransaction tran, string dataCode, bool asHeader, int asLength) { var cmd = db.CreateSqlProc("sp_sys_GetDataSN"); cmd.AddParam("DataCode", dataCode); cmd.AddParam("AsHeader", asHeader ? "Y" : "N"); cmd.AddParam("AsLength", asLength); cmd.Command.Connection = tran.Connection; cmd.Command.Transaction = tran; var no = db.ExecuteScalar(cmd.Command); return ConvertEx.ToString(no); } /// /// 获取单据的流水号码 /// /// 当前SQL连接 /// 单据名称,前缀,如:SO, AR,AP /// public static string GetDocNo(IDatabase db, string DocNoName) { var cmd = db.CreateSqlProc("sp_sys_GetDocNo"); cmd.AddParam("DocCode", DocNoName); var no = db.ExecuteScalar(cmd.Command); return ConvertEx.ToString(no); } /// /// 在同一事务内生成单号,格式:XX20170228001 /// /// 当前事务 /// 单据名称,前缀,如:SO, AR,AP /// public static string GetNumber(IDatabase db, DbTransaction tran, string DocNoName) { var cmd = db.CreateSqlProc("sp_sys_GetDocNo"); cmd.AddParam("DocCode", DocNoName); cmd.Command.Connection = tran.Connection; cmd.Command.Transaction = tran; var no = db.ExecuteScalar(cmd.Command); return ConvertEx.ToString(no); } } }