public int Update(Code code) { var parameters = new List<SqlParameter> { this.SqlServer.CreateSqlParameter( "ID", SqlDbType.NVarChar, code.ID, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "Business", SqlDbType.NVarChar, code.Business, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "PrefixName", SqlDbType.NVarChar, code.PrefixName, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "DateFormat", SqlDbType.NVarChar, code.DateFormat, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "TransactLength", SqlDbType.Int, code.TransactLength, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "Transaction", SqlDbType.NVarChar, code.Transaction, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "CodeFormat", SqlDbType.NVarChar, code.CodeFormat, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "IsIterator", SqlDbType.Bit, code.IsIterator, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "Iterator", SqlDbType.Int, code.Iterator, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "ExpireDate", SqlDbType.Int, code.ExpireDate, ParameterDirection.Input ) }; return this.SqlServer.ExecuteNonQuery(CommandType.StoredProcedure, "sp_Code_Update", parameters, null); //return (int)parameters.Find(parameter => parameter.ParameterName == "ReferenceID").Value; }
/// <summary> /// 创建一条规则 /// </summary> /// <param name="code"></param> /// <returns></returns> public static string MakeBssinessCode(Code code) { codeService.Insert(code); return ""; }
/// <summary> /// 编码插入数据 /// </summary> /// <param name="code"></param> /// <returns></returns> public int Insert(Code code) { if (code == null) { throw new ArgumentNullException("code"); } var parameters = new List<SqlParameter> { this.SqlServer.CreateSqlParameter( "UserCode", SqlDbType.NVarChar, code.UserCode, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "Business", SqlDbType.NVarChar, code.Business, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "PrefixName", SqlDbType.NVarChar, code.PrefixName, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "DateFormat", SqlDbType.NVarChar, code.DateFormat, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "TransactLength", SqlDbType.Int, code.TransactLength, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "Transaction", SqlDbType.NVarChar, code.Transaction, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "CodeFormat", SqlDbType.NVarChar, code.CodeFormat, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "IsIterator", SqlDbType.Bit, code.IsIterator, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "Iterator", SqlDbType.Int, code.Iterator, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "StartTime", SqlDbType.Int, code.StartTime, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "UserIterator", SqlDbType.Int, code.UserIterator, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "ExpireDate", SqlDbType.Int, code.ExpireDate, ParameterDirection.Input ), this.SqlServer.CreateSqlParameter( "ReferenceID", SqlDbType.Int, null, ParameterDirection.Output) }; this.SqlServer.ExecuteNonQuery(CommandType.StoredProcedure, "sp_Code_Insert", parameters, null); return (int)parameters.Find(parameter => parameter.ParameterName == "ReferenceID").Value; }
/// <summary> /// 过期时间 返回false就说明时间过期,更新开始时间 /// </summary> /// <param name="code"></param> /// <returns></returns> private static bool PreCheckExpireTime(Code code) { bool checkResult = false; switch (code.ExpireDate) { case 1: //1按年计算过期时间 if (DateTime.Now.Year - code.StartTime.Year == 0) { checkResult = true; } break; case 2://2按月计算过期时间 if (DateTime.Now.Month - code.StartTime.Month == 0) { checkResult = true; } break; case 3://按天计算过期时间 if (DateTime.Now.Day - code.StartTime.Day == 0) { checkResult = true; } break; } return checkResult; }
/// <summary> /// 生成流水号,并检查是否有重复 /// </summary> /// <param name="code"></param> /// <returns></returns> private static int PreCreatTransactCode(Code code) { int result = 0; codeService = new CodeService(); lock (obj) { if (code.IsIterator) { //时间是否过期 if (PreCheckExpireTime(code)) { //先产生一个编号 code.Iterator++; code.Iterator = PreCheckCodeIsOnly(code, code.Iterator); //在取得数据库的值上再自加,跳号 code.Iterator++; //num++; //更新数据库 codeService.UpdateIterator(code.Iterator, code.ID); result = code.Iterator; } else { //时间过期 codeService.UpdateStartTime(DateTime.Now, code.ID, 1); result = 1; } } } return result; }
/// <summary> /// 校验C#生成编号和数据库中编吗的唯一性,当前生成系统中已作废 /// </summary> /// <param name="code">编码对象</param> /// <param name="iterator">C#自增变量</param> /// <returns></returns> private static int PreCheckCodeIsOnly(Code code, int iterator) { codeService = new CodeService(); int sourceCode = codeService.FindById(code.ID).Iterator; if (sourceCode >= iterator) { iterator++; PreCheckCodeIsOnly(code, iterator); } return sourceCode; }
/// <summary> /// 增加分隔符 /// </summary> /// <returns></returns> private static string GetSplitCode(Code code, string value) { return string.IsNullOrEmpty(code.CodeFormat) ? value : value + code.CodeFormat; }
/// <summary> /// 日期格式化 /// </summary> /// <param name="code"></param> /// <returns></returns> private static string GetDateFormat(Code code) { if (string.IsNullOrEmpty(code.DateFormat)) return ""; return DateTime.Now.ToString(code.DateFormat); }
/// <summary> /// 更新 /// </summary> /// <param name="code"></param> /// <returns></returns> public int Update(Code code) { return this.codeDA.Update(code); }
/// <summary> /// 编码添加 /// </summary> /// <param name="code"></param> /// <returns></returns> public int Insert(Code code) { return this.codeDA.Insert(code); }