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;
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章