WPF 订单编号

先在数据库的存储过程写好查询代码,通过主键ID查询倒叙查询第一条数据,这是为了后续的订单号自动叠加。

存储过程代码:

--查询订单编号(最后一条)

 IF(@type='DinDanBianHao_NUMBER')

   BEGIN

     SELECT TOP 1 RTRIM(  DinDanBianHao) as Number

     FROM   PW_OrderForm

     ORDER BY ReserveFromID DESC

   END

 

再到服务端写好服务器代码,调用存储过程

服务器代码:

   //定义操作契约(自动生成单号)

        [OperationContract]

        public DataSet DinDanBianHao_NUMBER()

        {

            //实例化对象数组

            SqlParameter[] mySqlParameter =

            {

                //定义传递参数,以及传递参数的类型

                new SqlParameter("@type",SqlDbType.NChar),

            };

            mySqlParameter[0].Value = "DinDanBianHao_NUMBER";

            DataTable myDataTable= myDALMethod.QueryDataTable("User_OrderFormZhiJia", mySqlParameter);

            DataSet myDataSet = new DataSet();

            myDataSet.Tables.Add(myDataTable);

            return myDataSet;

        }

再到客户端创建一个类封装代码

客户端代码:

   public class DinDanBianHaoNuber

    {

        public static object _lock = new object();

        public static int count = 0;

        public string GetRandom1(string asd)

        {

            int numder = Convert.ToInt32(asd.Substring(9));

            //获取当天时间用于比较当天是否已有订单号

            string strTrim = Convert.ToString(DateTime.Now.ToString("yyyyMMdd"));

            string strShuju = asd.Substring(1, 8);

           

         lock (_lock)
            {//判断是否是当天日期和当天新增的订单是否大于10000
                if (count < 10000 && strTrim == strShuju)
                {
                    //将当天的订单编号值赋值给长度用于判断当天的订单编号是否大于10000
                    count = numder;

           //自加1是为了让订单号自增
                    count++;
                }
                else
                {
                    count = 1;
                }            
                //拼接自驾订单号
                var number = "D" + DateTime.Now.ToString("yyyyMMdd") + count.ToString("0000");
                //返回订单编号
                return number;
            }

        }

}

封装好后在页面的加载事件调用:

代码

string DinDanBianHao = (new DinDanBianHaoNuber().GetRandom1(dtnusdf));

这一种新增理论上当天的数据量到达到了9999条后会重0开始又会继续增加到9999实际上当天数据到了9999后就从0开始继续新增了当然排除删除操作,如果是重线程的角度来看只适用于单线程,如果同时新增可能会产生相同的订单号。

 

说明:这种方法是借鉴别人的代码再自己改动

 

你可能感兴趣的:(WPF 订单编号)