C#创建订单号

场景:创建的订单号有固定的前缀,中级为年月日,后缀流水三位,如‘VD20190802001’,如果各位需求不一样可以稍微修改下方法实现。

        //线程锁,保证并发时不会产生重复的订单号
        private static readonly object SequenceLock = new object();
   
        /// <summary>
        /// 获取单号
        /// </summary>
        /// <param name="preString">指定前缀</param>
        /// <param name="tableName">生成单号的表名</param>
        /// <returns></returns>
        public static string GetNewOrderNO(string preString,string tableName)
        {
            lock(SequenceLock)
            {
                string result = "";
                string sql = string.Format(@"Select max(ID) from {0}", tableName);
              //连接数据库查找最大的订单号
                string curid = Pub_DB.OracleDataAccess.ExecuteScalar(ConnfigSetting.GetShipUserConStr(), sql).ToString();
                if (string.IsNullOrEmpty(curid))
                {
                    curid = preString + DateTime.Now.ToString("yyyyMMdd") + "000";
                }
                string maxid = curid.Substring(curid.Length - 3, 3);
                string maxdate = curid.Substring(preString.Length, 8);
                if (DateTime.Now.ToString("yyyyMMdd") == maxdate)
                {
                    result = preString + maxdate + (Convert.ToInt16(maxid) + 1).ToString("000");
                }
                else
                {
                    result = preString + DateTime.Now.ToString("yyyyMMdd") + "001";
                }
                return result;
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章