From 1310b47a24f0cc70f0128c820bd490dca6a1a921 Mon Sep 17 00:00:00 2001
From: yyk <2336760928@qq.com>
Date: 星期四, 22 八月 2024 14:08:03 +0800
Subject: [PATCH] Merge branch 'master' into yyk

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 2014 ++++++++++++++++++++++++++++-------------------------------
 1 files changed, 956 insertions(+), 1,058 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 6526b6b..3a75010 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -20,6 +20,8 @@
 using WMS.Entity.LogEntity;
 using WMS.Entity.BllQualityEntity;
 using WMS.Entity.BllAsnEntity;
+using System.Threading.Tasks;
+using Utility;
 
 namespace WMS.BLL.BllPdaServer
 {
@@ -28,348 +30,296 @@
         private static readonly SqlSugarScope Db = DataContext.Db;
 
         //楠岃瘉鎵樼洏鏄惁瀛樺湪骞舵槸鍚﹀彲鍑哄簱
-        public string IsEnableOkPalletNo(string palletNo)
+        public async Task<string> IsEnableOkPalletNo(string palletNo)
         {
-            try
-            {
-                string sqlMsg = "";
-                var models = Db.Queryable<SysPallets>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList();
+            string sqlMsg = "";
+            var models = await Db.Queryable<SysPallets>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToListAsync();
 
-                if (models.Count > 1)
-                {
-                    sqlMsg = "-1:瀛樺湪閲嶅鎵樼洏鍙�,璇锋鏌�!";
-                    return sqlMsg;
-                }
-                if (models.Count > 0)
-                {
-                    if (models[0].Status == "0")
-                    {
-                        sqlMsg = "-1:鎵樼洏鍙风姸鎬佷负鏈娇鐢�!";
-                    }
-                }
-                else
-                {
-                    sqlMsg = "-1:鎵樼洏鍙蜂笉瀛樺湪!";
-                }
-
-                return sqlMsg;
-            }
-            catch (Exception ex)
+            if (models.Count > 1)
             {
-                throw new Exception(ex.Message);
+                throw Oops.Bah("-1:瀛樺湪閲嶅鎵樼洏鍙�,璇锋鏌�!");
             }
+            if (models.Count > 0)
+            {
+                if (models[0].Status == "0")
+                {
+                    throw Oops.Bah("-1:鎵樼洏鍙风姸鎬佷负鏈娇鐢�!");
+                }
+            }
+            else
+            {
+                throw Oops.Bah("-1:鎵樼洏鍙蜂笉瀛樺湪!");
+            }
+
+            return sqlMsg;
         }
 
         //鑾峰彇鎵樼洏涓惈鏈夌殑鎵ц涓殑鍗曟嵁
-        public List<string> GetRunSoNoticeList(string palletNo, string type)
+        public async Task<List<string>> GetRunSoNoticeList(string palletNo, string type)
         {
-            try
+            if (string.IsNullOrWhiteSpace(palletNo))//鍒ゆ柇鎵樼洏鏄惁涓虹┖
             {
-                if (string.IsNullOrWhiteSpace(palletNo))//鍒ゆ柇鎵樼洏鏄惁涓虹┖
-                {
-                    throw new Exception("鎵樼洏鐮佷负绌猴紝璇疯緭鍏ユ墭鐩樼爜");
-                }
-                var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
-                if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1")
-                {
-                    throw new Exception("璇ユ墭鐩樿繕鏈嚭搴�");
-                }
-                if (type == "1")//骞冲簱鍑哄簱鑾峰彇鍗曟嵁
-                {
-                    var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
-                    return allotList;
-                }
-                //鑾峰彇鐘舵�佷负寰呮嫞璐ф垨鑰呴儴鍒嗘嫞璐х殑鍑哄簱鍗�
-                var allotList2 = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
-
-                //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
-                //鑾峰彇鍑哄簱鍗曟嵁涓嶄负寰呮嫞璐� 鎵ц瀹屾瘯 璁㈠崟鍏抽棴 绛夊緟鎵ц鐨勫崟鎹�
-                //var export = Db.Queryable<BllExportNotice>().Where(a => a.IsDel == "0" && a.Status == "1" || a.Status == "2" || a.Status == "3").Select(a => a.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
-
-                return allotList2;
+                throw Oops.Bah("鎵樼洏鐮佷负绌猴紝璇疯緭鍏ユ墭鐩樼爜");
             }
-            catch (Exception ex)
+            var palletInfo = await Db.Queryable<DataStockDetail>().FirstAsync(w => w.IsDel == "0" && w.PalletNo == palletNo);
+            if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1")
             {
-                throw new Exception(ex.Message);
+                throw Oops.Bah("璇ユ墭鐩樿繕鏈嚭搴�");
             }
+            if (type == "1")//骞冲簱鍑哄簱鑾峰彇鍗曟嵁
+            {
+                var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
+                return allotList;
+            }
+            //鑾峰彇鐘舵�佷负寰呮嫞璐ф垨鑰呴儴鍒嗘嫞璐х殑鍑哄簱鍗�
+            var allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
+
+            //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
+            //鑾峰彇鍑哄簱鍗曟嵁涓嶄负寰呮嫞璐� 鎵ц瀹屾瘯 璁㈠崟鍏抽棴 绛夊緟鎵ц鐨勫崟鎹�
+            //var export = Db.Queryable<BllExportNotice>().Where(a => a.IsDel == "0" && a.Status == "1" || a.Status == "2" || a.Status == "3").Select(a => a.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
+
+            return allotList2;
         }
 
         //鑾峰彇鍑哄簱鎵樼洏涓婄殑鐗╂枡鎵规(鏍规嵁鎵樼洏鐮�)
-        public List<DetailIdSkuLotNo> GetSoSkuLotNoListByPallet(string palletNo, string soNo)
+        public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListByPallet(string palletNo, string soNo)
         {
-            try
+            if (string.IsNullOrWhiteSpace(palletNo))//鍒ゆ柇鎵樼洏鏄惁涓虹┖
             {
-                if (string.IsNullOrWhiteSpace(palletNo))//鍒ゆ柇鎵樼洏鏄惁涓虹┖
-                {
-                    throw new Exception("鎵樼洏鐮佷负绌猴紝璇疯緭鍏ユ墭鐩樼爜");
-                }
-                //鑾峰彇鐘舵�佷负寰呮嫞璐ф垨鑰呴儴鍒嗘嫞璐х殑鍑哄簱鍗�
-                var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo);
-                //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && m.Status != "4" && m.Status != "5");
-                if (!string.IsNullOrWhiteSpace(soNo))
-                {
-                    allotList = allotList.Where(m => m.SONo == soNo);
-                }
-
-                var list = allotList.GroupBy(m => new { m.SODetailNo, m.PalletNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo()
-                {
-                    SoDetailId = m.SODetailNo,
-                    PalletNo = m.PalletNo,
-                    SkuNo = m.SkuNo,
-                    SkuName = m.SkuName,
-                    LotNo = m.LotNo,
-                }).ToList();
-
-                return list;
+                throw Oops.Bah("鎵樼洏鐮佷负绌猴紝璇疯緭鍏ユ墭鐩樼爜");
             }
-            catch (Exception ex)
+            //鑾峰彇鐘舵�佷负寰呮嫞璐ф垨鑰呴儴鍒嗘嫞璐х殑鍑哄簱鍗�
+            var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo);
+            //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && m.Status != "4" && m.Status != "5");
+            if (!string.IsNullOrWhiteSpace(soNo))
             {
-                throw new Exception(ex.Message);
+                allotList = allotList.Where(m => m.SONo == soNo);
             }
+
+            var list = await allotList.GroupBy(m => new { m.SODetailNo, m.PalletNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo()
+            {
+                SoDetailId = m.SODetailNo,
+                PalletNo = m.PalletNo,
+                SkuNo = m.SkuNo,
+                SkuName = m.SkuName,
+                LotNo = m.LotNo,
+            }).ToListAsync();
+
+            return list;
         }
 
         //鑾峰彇鍑哄簱鍙c�佽鏍笺�佸緟鎷e強宸叉嫞鏁伴噺锛堟牴鎹嚭搴撳崟鏄庣粏ID銆佹墭鐩樺彿锛�
-        public OutPdaInfo GetOutlets(string soDetailId, string palletNo)
+        public async Task<OutPdaInfo> GetOutlets(string soDetailId, string palletNo)
         {
-            try
+            var allotInfo = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToListAsync();
+            if (allotInfo.Count == 0)
             {
-
-                var allotInfo = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToList();
-                if (allotInfo.Count == 0)
-                {
-                    throw new Exception($"{palletNo}鎵樼洏涓婃湭鏌ヨ鍒板垎閰嶄俊鎭紝璇锋牳瀹�");
-                }
-                if (allotInfo.Count > 1)
-                {
-                    throw new Exception($"{palletNo}鎵樼洏涓婂瓨鍦ㄥ鏉$浉鍚岀殑鍒嗛厤淇℃伅锛岃鏍稿疄");
-                }
-                var data = allotInfo.First();
-                var data2 = new OutPdaInfo()
-                {
-                    OutModel = data.OutMode,
-                    Standard = data.Standard,
-                    PickQty = data.Qty,
-                    PickedQty = data.CompleteQty
-                };
-                return data2;
+                throw Oops.Bah($"{palletNo}鎵樼洏涓婃湭鏌ヨ鍒板垎閰嶄俊鎭紝璇锋牳瀹�");
             }
-            catch (Exception e)
+            if (allotInfo.Count > 1)
             {
-                throw new Exception(e.Message);
+                throw Oops.Bah($"{palletNo}鎵樼洏涓婂瓨鍦ㄥ鏉$浉鍚岀殑鍒嗛厤淇℃伅锛岃鏍稿疄");
             }
+            var data = allotInfo.First();
+            var data2 = new OutPdaInfo()
+            {
+                OutModel = data.OutMode,
+                Standard = data.Standard,
+                PickQty = data.Qty,
+                PickedQty = data.CompleteQty
+            };
+            return data2;
         }
 
         //鑾峰彇鍑哄簱鍗曠殑璁″垝鏁伴噺鍜屽畬鎴�
-        public OutPdaInfo GetPlanAndFinishQty(string soDetailId)
+        public async Task<OutPdaInfo> GetPlanAndFinishQty(string soDetailId)
         {
-            try
+            var detail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.Id == int.Parse(soDetailId) && m.IsDel == "0");
+            if (detail == null)
             {
-                var detail = Db.Queryable<BllExportNoticeDetail>().First(m => m.Id == int.Parse(soDetailId) && m.IsDel == "0");
-                if (detail == null)
-                {
-                    throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曠殑鏄庣粏");
-                }
-                var data = new OutPdaInfo()
-                {
-                    PlanQty = detail.Qty,
-                    FinishQty = detail.CompleteQty
-                };
-                return data;
+                throw Oops.Bah("鏈煡璇㈠埌鍑哄簱鍗曠殑鏄庣粏");
             }
-            catch (Exception e)
+            var data = new OutPdaInfo()
             {
-                throw new Exception(e.Message);
-            }
+                PlanQty = detail.Qty,
+                FinishQty = detail.CompleteQty
+            };
+            return data;
         }
 
         //鑾峰彇绠辩爜淇℃伅锛堟牴鎹鐮佸湪搴撳瓨绠辩爜鏄庣粏涓煡璇㈠強鎷h揣鏄庣粏涓嫞璐ф暟閲忥級
-        public List<Model.ModelDto.BoxInfo> GetDataComBoxInfo(string soDetailId, string palletNo, string boxNo, string boxNo3)
+        public async Task<List<BoxInfo>> GetDataComBoxInfo(string soDetailId, string palletNo, string boxNo, string boxNo3)
         {
-            try
+            if (string.IsNullOrWhiteSpace(palletNo))
             {
-                if (string.IsNullOrWhiteSpace(palletNo))
+                throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�");
+            }
+            Expression<Func<DataBoxInfo, bool>> item = Expressionable.Create<DataBoxInfo>()
+                .And(it => it.PalletNo == palletNo)
+                .AndIF(!string.IsNullOrWhiteSpace(boxNo), it => it.BoxNo == boxNo)
+                .AndIF(!string.IsNullOrWhiteSpace(boxNo3), it => it.BoxNo3 == boxNo3)
+                .And(m => m.IsDel == "0")
+                .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+            var info = Db.Queryable<DataBoxInfo>().Where(item);
+            if (info.Count() == 0)
+            {
+                throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠埌淇℃伅");
+            }
+
+            var type = "0";//0锛氭煡绠辩爜鎴栨敮鐮佷笉鍒嗙粍 1锛氭煡鎵樼洏鍒嗙粍 鏄剧ず绠�
+            var list = new List<BoxInfo>();
+            if (!string.IsNullOrWhiteSpace(boxNo3) || !string.IsNullOrWhiteSpace(boxNo))//鍒ゆ柇鏀爜鏄惁涓虹┖
+            {
+                foreach (var demo in await info.ToListAsync())
                 {
-                    throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
-                }
-                Expression<Func<DataBoxInfo, bool>> item = Expressionable.Create<DataBoxInfo>()
-                    .And(it => it.PalletNo == palletNo)
-                    .AndIF(!string.IsNullOrWhiteSpace(boxNo), it => it.BoxNo == boxNo)
-                    .AndIF(!string.IsNullOrWhiteSpace(boxNo3), it => it.BoxNo3 == boxNo3)
-                    .And(m => m.IsDel == "0")
-                    .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
-                var info = Db.Queryable<DataBoxInfo>().Where(item);
-                if (info.Count() == 0)
-                {
-                    throw new Exception("鏈湪搴撳瓨涓煡璇㈠埌淇℃伅");
+                    var t = new BoxInfo()
+                    {
+                        BoxNo = demo.BoxNo3,
+                        Qty = demo.Qty,
+                        //SkuNo = demo.SkuNo,
+                        //SkuName = demo.SkuName,
+                        //LotNo = demo.LotNo, 
+                    };
+                    list.Add(t);
                 }
 
-                var type = "0";//0锛氭煡绠辩爜鎴栨敮鐮佷笉鍒嗙粍 1锛氭煡鎵樼洏鍒嗙粍 鏄剧ず绠�
-                var list = new List<BoxInfo>();
-                if (!string.IsNullOrWhiteSpace(boxNo3) || !string.IsNullOrWhiteSpace(boxNo))//鍒ゆ柇鏀爜鏄惁涓虹┖
+            }
+            else if (!string.IsNullOrWhiteSpace(palletNo))
+            {
+                list = await info.GroupBy(m => new { m.BoxNo }).Select(it => new BoxInfo
                 {
-                    foreach (var demo in info.ToList())
+                    BoxNo = it.BoxNo,
+                    Qty = SqlFunc.AggregateSum(it.Qty)
+                }).ToListAsync();
+                type = "1";
+            }
+            if (!string.IsNullOrWhiteSpace(soDetailId))
+            {
+                var allotInfos = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToListAsync();
+                if (allotInfos.Count == 0)
+                {
+                    throw Oops.Bah($"{palletNo}鎵樼洏涓婃湭鏌ヨ鍒板垎閰嶄俊鎭紝璇锋牳瀹�");
+                }
+                if (allotInfos.Count > 1)
+                {
+                    throw Oops.Bah($"{palletNo}鎵樼洏涓婂瓨鍦ㄥ鏉$浉鍚岀殑鍒嗛厤淇℃伅锛岃鏍稿疄");
+                }
+                var allotInfo = allotInfos.First();
+                var comInfo = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotInfo.Id).ToListAsync();
+                if (comInfo.Count != 0)
+                {
+                    if (type == "0")
                     {
-                        var t = new BoxInfo()
+                        foreach (var demo in list)
                         {
-                            BoxNo = demo.BoxNo3,
-                            Qty = demo.Qty,
-                            //SkuNo = demo.SkuNo,
-                            //SkuName = demo.SkuName,
-                            //LotNo = demo.LotNo, 
-                        };
-                        list.Add(t);
-                    }
+                            //if (!string.IsNullOrWhiteSpace(boxNo3))
+                            //{
+                            //    var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 == demo.BoxNo);
+                            //}
+                            //else if (!string.IsNullOrWhiteSpace(boxNo))
+                            //{
+                            //    if (expr)
+                            //    {
 
-                }
-                else if (!string.IsNullOrWhiteSpace(palletNo))
-                {
-                    list = info.GroupBy(m => new { m.BoxNo }).Select(it => new BoxInfo
-                    {
-                        BoxNo = it.BoxNo,
-                        Qty = SqlFunc.AggregateSum(it.Qty)
-                    }).ToList();
-                    type = "1";
-                }
-                if (!string.IsNullOrWhiteSpace(soDetailId))
-                {
-                    var allotInfos = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToList();
-                    if (allotInfos.Count == 0)
-                    {
-                        throw new Exception($"{palletNo}鎵樼洏涓婃湭鏌ヨ鍒板垎閰嶄俊鎭紝璇锋牳瀹�");
-                    }
-                    if (allotInfos.Count > 1)
-                    {
-                        throw new Exception($"{palletNo}鎵樼洏涓婂瓨鍦ㄥ鏉$浉鍚岀殑鍒嗛厤淇℃伅锛岃鏍稿疄");
-                    }
-                    var allotInfo = allotInfos.First();
-                    var comInfo = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotInfo.Id).ToList();
-                    if (comInfo.Count != 0)
-                    {
-                        if (type == "0")
-                        {
-                            foreach (var demo in list)
+                            //    }
+
+                            //}
+                            var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 != null && m.BoxNo3 == demo.BoxNo);
+                            if (com != null)
                             {
-                                //if (!string.IsNullOrWhiteSpace(boxNo3))
-                                //{
-                                //    var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 == demo.BoxNo);
-                                //}
-                                //else if (!string.IsNullOrWhiteSpace(boxNo))
-                                //{
-                                //    if (expr)
-                                //    {
-
-                                //    }
-
-                                //}
-                                var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 != null && m.BoxNo3 == demo.BoxNo);
-                                if (com != null)
-                                {
-                                    demo.PickedQty = com.CompleteQty;
-                                }
-                            }
-                        }
-                        if (type == "1")
-                        {
-                            var com = comInfo.Where(m => m.IsDel == "0").GroupBy(m => m.BoxNo).Select(it => new BoxInfo
-                            {
-                                BoxNo = it.Key,
-                                PickedQty = it.Sum(a => a.CompleteQty)
-                            }).ToList();
-                            foreach (var demo in list)
-                            {
-
-                                var com2 = com.FirstOrDefault(m => m.BoxNo == demo.BoxNo);
-                                if (com2 != null)
-                                {
-                                    demo.PickedQty = com2.PickedQty;
-                                }
+                                demo.PickedQty = com.CompleteQty;
                             }
                         }
                     }
+                    if (type == "1")
+                    {
+                        var com = comInfo.Where(m => m.IsDel == "0").GroupBy(m => m.BoxNo).Select(it => new BoxInfo
+                        {
+                            BoxNo = it.Key,
+                            PickedQty = it.Sum(a => a.CompleteQty)
+                        }).ToList();
+                        foreach (var demo in list)
+                        {
 
+                            var com2 = com.FirstOrDefault(m => m.BoxNo == demo.BoxNo);
+                            if (com2 != null)
+                            {
+                                demo.PickedQty = com2.PickedQty;
+                            }
+                        }
+                    }
                 }
 
-                return list;
             }
-            catch (Exception e)
-            {
-                throw new Exception(e.Message);
-            }
+
+            return list;
         }
 
         //鑾峰彇搴撳唴鏃犵鐮佺殑鎵樼洏鍒嗛厤淇℃伅
-        public List<Model.ModelDto.BoxInfo> GetAllotPlnInfo(string soDetailId, string palletNo)
+        public async Task<List<BoxInfo>> GetAllotPlnInfo(string soDetailId, string palletNo)
         {
-            try
+            #region 鍒ゆ柇
+
+            //鏍规嵁id鍙婃墭鐩樿幏鍙栧嚭搴撳崟鍜屾墭鐩樻嫞璐т俊鎭�
+            if (string.IsNullOrWhiteSpace(palletNo))
             {
-                #region 鍒ゆ柇
-
-                //鏍规嵁id鍙婃墭鐩樿幏鍙栧嚭搴撳崟鍜屾墭鐩樻嫞璐т俊鎭�
-                if (string.IsNullOrWhiteSpace(palletNo))
-                {
-                    throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
-                }
-                //鑾峰彇瀵瑰簲鎵樼洏涓嬫槸鍚﹀瓨鍦ㄧ鐮佷俊鎭�
-                var boxInfo = Db.Queryable<DataBoxInfo>().First(b => b.IsDel == "0" && b.PalletNo == palletNo);
-                if (boxInfo != null)
-                {
-                    throw new Exception($"{palletNo}鎵樼洏涓婂瓨鍦ㄧ鐮佷俊鎭紝鏃犳硶鍦ㄦ暟閲忔嫞璐ц繘琛屾搷浣滐紒");
-                }
-
-                BllExportAllot allot = null;
-                if (!string.IsNullOrWhiteSpace(soDetailId))
-                {
-                    //鍑哄簱鍗曟槑缁�
-                    var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0");
-                    if (noticeDetail == null)
-                    {
-                        throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟槑缁嗕俊鎭紝璇锋牳瀹烇紒");
-                    }
-                    //鍑哄簱鍗曟�诲崟
-                    var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo);
-                    if (notice == null)
-                    {
-                        throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟�诲崟淇℃伅锛岃鏍稿疄锛�");
-                    }
-                    //鍒嗛厤淇℃伅
-                    allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && (a.Status == "2" || a.Status == "3"));
-                    if (allot == null)
-                    {
-                        throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍒嗛厤淇℃伅锛岃鏍稿疄锛�");
-                    }
-                }
-
-                //搴撳瓨鏄庣粏
-                var detail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo);
-                if (detail == null)
-                {
-                    throw new Exception($"鏈煡璇㈠埌搴撳瓨鏄庣粏淇℃伅锛岃鏍稿疄锛�");
-                }
-
-                #endregion
-
-                List<BoxInfo> pdaInfo = new List<BoxInfo>();
-
-                BoxInfo info = new BoxInfo()
-                {
-                    SkuNo = detail.SkuNo,
-                    BoxNo = detail.SkuNo,
-                    Qty = allot == null ? (int)(detail.Qty - detail.LockQty) : (int)allot.Qty,
-                    PickedQty = allot == null ? 0 : (int)allot.CompleteQty,
-                };
-
-                pdaInfo.Add(info);
-                return pdaInfo;
-
+                throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�");
             }
-            catch (Exception e)
+            //鑾峰彇瀵瑰簲鎵樼洏涓嬫槸鍚﹀瓨鍦ㄧ鐮佷俊鎭�
+            var boxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(b => b.IsDel == "0" && b.PalletNo == palletNo);
+            if (boxInfo != null)
             {
-                throw new Exception(e.Message);
+                throw Oops.Bah($"{palletNo}鎵樼洏涓婂瓨鍦ㄧ鐮佷俊鎭紝鏃犳硶鍦ㄦ暟閲忔嫞璐ц繘琛屾搷浣滐紒");
             }
+
+            BllExportAllot allot = null;
+            if (!string.IsNullOrWhiteSpace(soDetailId))
+            {
+                //鍑哄簱鍗曟槑缁�
+                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0");
+                if (noticeDetail == null)
+                {
+                    throw Oops.Bah($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟槑缁嗕俊鎭紝璇锋牳瀹烇紒");
+                }
+                //鍑哄簱鍗曟�诲崟
+                var notice = await Db.Queryable<BllExportNotice>().FirstAsync(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo);
+                if (notice == null)
+                {
+                    throw Oops.Bah($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟�诲崟淇℃伅锛岃鏍稿疄锛�");
+                }
+                //鍒嗛厤淇℃伅
+                allot = await Db.Queryable<BllExportAllot>().FirstAsync(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && (a.Status == "2" || a.Status == "3"));
+                if (allot == null)
+                {
+                    throw Oops.Bah($"鏈煡璇㈠埌瀵瑰簲鍒嗛厤淇℃伅锛岃鏍稿疄锛�");
+                }
+            }
+
+            //搴撳瓨鏄庣粏
+            var detail = await Db.Queryable<DataStockDetail>().FirstAsync(a => a.IsDel == "0" && a.PalletNo == palletNo);
+            if (detail == null)
+            {
+                throw Oops.Bah($"鏈煡璇㈠埌搴撳瓨鏄庣粏淇℃伅锛岃鏍稿疄锛�");
+            }
+
+            #endregion
+
+            List<BoxInfo> pdaInfo = new List<BoxInfo>();
+
+            BoxInfo info = new BoxInfo()
+            {
+                SkuNo = detail.SkuNo,
+                BoxNo = detail.SkuNo,
+                Qty = allot == null ? (int)(detail.Qty - detail.LockQty) : (int)allot.Qty,
+                PickedQty = allot == null ? 0 : (int)allot.CompleteQty,
+            };
+
+            pdaInfo.Add(info);
+            return pdaInfo;
         }
 
         //鍑哄簱pda鎷h揣
-        public void SoSetPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, int userId)
+        public async Task SoSetPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, int userId)
         {
             Db.BeginTran();
             try
@@ -378,60 +328,60 @@
 
                 if (string.IsNullOrWhiteSpace(soNo))
                 {
-                    throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+                    throw Oops.Bah("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
                 }
                 if (string.IsNullOrWhiteSpace(soDetailId))
                 {
-                    throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
+                    throw Oops.Bah("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
                 }
                 if (string.IsNullOrWhiteSpace(palletNo))
                 {
-                    throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                    throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
                 }
                 if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)
                 {
-                    throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
+                    throw Oops.Bah("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
                 }
 
                 //鍑哄簱鍗�
-                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
+                var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.SONo == soNo);
                 if (notice == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
                 }
                 if (notice.Status != "3")
                 {
-                    throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+                    throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                 }
                 //鍑哄簱鍗曟槑缁�
-                var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
-                    .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
+                    .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                 if (noticeDetail == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
                 }
                 //鍑哄簱鍒嗛厤淇℃伅
-                var allot = Db.Queryable<BllExportAllot>().First(m =>
+                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                     m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
                     m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                 if (allot == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
                 }
                 //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
                 var needQty = allot.Qty - allot.CompleteQty;
 
                 //搴撳瓨鏄庣粏
-                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId);
                 if (stockDetail == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
                 }
                 //搴撳瓨鎬昏〃
-                var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                 if (stock == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                 }
                 #endregion
 
@@ -439,28 +389,28 @@
                 {
                     List<DataBoxInfo> boxInfos;
                     var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo);//鎵惧埌鎵樼洏涓婃墍鏈夌鐮�
-                    boxInfos = boxInfo.ToList();
+                    boxInfos = await boxInfo.ToListAsync();
                     if (boxInfo.Count() <= 0)
                     {
-                        throw new Exception("璇ユ墭鐩樹笂娌℃湁鍙嫞璐х殑绠卞瓙");
+                        throw Oops.Bah("璇ユ墭鐩樹笂娌℃湁鍙嫞璐х殑绠卞瓙");
                     }
-                    var boxQty = boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
+                    var boxQty = await boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
                     if (boxQty[0] > needQty)
                     {
-                        throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                        throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
                     }
                     decimal pickQty = 0;//鎷h揣鐨勬暟閲�
-                    var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList();
+                    var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
                     var comList = new List<BllCompleteDetail>();
                     foreach (var item in boxInfos)
                     {
                         if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3) && item.BoxNo3 != null)
                         {
-                            throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                            throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                         }
                         if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo)
                         {
-                            throw new Exception("褰撳墠鎵樼洏涓婃湁鍏朵粬涓嶅悓鐗╂枡鎵规锛屾嫞璐уけ璐�");
+                            throw Oops.Bah("褰撳墠鎵樼洏涓婃湁鍏朵粬涓嶅悓鐗╂枡鎵规锛屾嫞璐уけ璐�");
                         }
                         //娣诲姞鎷h揣鏄庣粏
                         var completeDetail = new BllCompleteDetail()
@@ -487,76 +437,76 @@
                         comList.Add(completeDetail);
 
                         //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                        Db.Deleteable(item).ExecuteCommand();
+                        await Db.Deleteable(item).ExecuteCommandAsync();
                         pickQty += item.Qty;
                     }
                     //娣诲姞鎷h揣鏄庣粏
-                    Db.Insertable(comList).ExecuteCommand();
+                    await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
                     allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
-                    Db.Updateable(allot).ExecuteCommand();
+                    await Db.Updateable(allot).ExecuteCommandAsync();
                     //鍒犻櫎搴撳瓨鏄庣粏
-                    Db.Deleteable(stockDetail).ExecuteCommand();
+                    await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛�
                     stock.Qty -= pickQty;
                     stock.LockQty -= pickQty;
                     if (stock.Qty <= 0)
                     {
-                        Db.Deleteable(stock).ExecuteCommand();
+                        await Db.Deleteable(stock).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stock).ExecuteCommand();
+                        await Db.Updateable(stock).ExecuteCommandAsync();
                     }
                     //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤
                     var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
                     if (pallet == null)
                     {
-                        throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                        throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                     }
                     pallet.Status = "0";
-                    Db.Updateable(pallet).ExecuteCommand();
+                    await Db.Updateable(pallet).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                     noticeDetail.CompleteQty += pickQty;
-                    Db.Updateable(noticeDetail).ExecuteCommand();
+                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
-                    var num = Db.Queryable<BllExportNoticeDetail>()
-                        .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                    var num = await Db.Queryable<BllExportNoticeDetail>()
+                        .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                     if (num <= 0)
                     {
                         notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
                         //淇敼鍑哄簱鍗曚俊鎭�
-                        Db.Updateable(notice).ExecuteCommand();
+                        await Db.Updateable(notice).ExecuteCommandAsync();
                         if (notice.IsWave == "1")
                         {
-                            var waveNum = Db.Queryable<BllExportNotice>().Count(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4");
+                            var waveNum = await Db.Queryable<BllExportNotice>().CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4");
                             if (waveNum == 0)
                             {
-                                var wave = Db.Queryable<BllWaveMage>().First(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo);
+                                var wave = await Db.Queryable<BllWaveMage>().FirstAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo);
                                 if (wave != null)
                                 {
                                     wave.Status = "4";
                                     wave.UpdateUser = userId;
                                     wave.UpdateTime = DateTime.Now;
-                                    Db.Updateable(wave).ExecuteCommand();
+                                    await Db.Updateable(wave).ExecuteCommandAsync();
                                 }
                             }
                         }
                     }
-                    
+
                 }
                 else
                 {
                     var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
                     List<DataBoxInfo> boxInfos;
                     var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo);
-                    if (boxInfo.Count() == 0)
+                    if (await boxInfo.CountAsync() == 0)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
                     }
-                    boxInfos = boxInfo.ToList();
+                    boxInfos = await boxInfo.ToListAsync();
 
                     var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList();
                     if (!string.IsNullOrWhiteSpace(boxNo3)) //鏁f敮鎷h揣
@@ -565,28 +515,28 @@
 
                         if (boxInfos.Count() == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
                         }
                         if (boxInfos.Count() > 1)
                         {
-                            throw new Exception("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
+                            throw Oops.Bah("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
                         }
 
                         if (boxInfos.Any(m => m.PalletNo != palletNo))
                         {
-                            throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                            throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
                         var boxQty = boxInfos.First().Qty;
                         if (boxQty > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
                         }
 
                         foreach (var item in boxInfos)
                         {
                             if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
                             {
-                                throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                                throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                             }
                         }
 
@@ -596,16 +546,16 @@
                     {
                         if (boxInfo.Count() > 1)
                         {
-                            throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
+                            throw Oops.Bah("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
                         }
                         decimal boxQty = boxInfo.First().Qty;
                         if (Convert.ToInt32(pickQty1) > boxQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
                         }
                         if (Convert.ToInt32(pickQty1) > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
                         }
 
                         biaoShi = "2";
@@ -614,23 +564,23 @@
                     {
                         if (boxInfo.Count() == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
                         }
                         if (boxInfo.Any(m => m.PalletNo != palletNo))
                         {
-                            throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                            throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
-                        var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
+                        var boxQty = await boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
                         if (boxQty[0] > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
                         }
 
                         foreach (var item in boxInfos)
                         {
                             if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo))
                             {
-                                throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                                throw Oops.Bah($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                             }
                         }
                     }
@@ -666,20 +616,20 @@
                         if (biaoShi != "2")
                         {
                             //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                            Db.Deleteable(item).ExecuteCommand();
+                            await Db.Deleteable(item).ExecuteCommandAsync();
                         }
                         else//鏁伴噺鎷h揣
                         {
                             if (decimal.Parse(pickQty1) == item.Qty)
                             {
                                 //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                                Db.Deleteable(item).ExecuteCommand();
+                                await Db.Deleteable(item).ExecuteCommandAsync();
                             }
                             else
                             {
                                 item.Qty -= decimal.Parse(pickQty1);
                                 item.BitBoxMark = "1";//闆剁鏍囪瘑
-                                Db.Updateable(item).ExecuteCommand();
+                                await Db.Updateable(item).ExecuteCommandAsync();
                             }
                         }
                         pickQty += item.Qty;
@@ -691,11 +641,11 @@
                         foreach (var item in boxSurplusList)
                         {
                             item.BitBoxMark = "1";
-                            Db.Updateable(item).ExecuteCommand();
+                            await Db.Updateable(item).ExecuteCommandAsync();
                         }
                     }
 
-                    Db.Insertable(comList).ExecuteCommand();
+                    await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
                     allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
@@ -704,7 +654,7 @@
                     {
                         //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴�
                     }
-                    Db.Updateable(allot).ExecuteCommand();
+                    await Db.Updateable(allot).ExecuteCommandAsync();
 
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
                     stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
@@ -725,58 +675,58 @@
 
                     if (stockDetail.Qty <= 0)
                     {
-                        Db.Deleteable(stockDetail).ExecuteCommand();
+                        await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stockDetail).ExecuteCommand();
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
                     stock.Qty -= pickQty;
                     stock.LockQty -= pickQty;
                     if (stock.Qty <= 0)
                     {
-                        Db.Deleteable(stock).ExecuteCommand();
+                        await Db.Deleteable(stock).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stock).ExecuteCommand();
+                        await Db.Updateable(stock).ExecuteCommandAsync();
                     }
-                    var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == palletNo);
+                    var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
                     if (num2 <= 0)
                     {
                         //鏀瑰彉鎵樼洏鐘舵��
-                        var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                        var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                         if (pallet == null)
                         {
-                            throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                            throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                         }
                         pallet.Status = "0";
-                        Db.Updateable(pallet).ExecuteCommand();
+                        await Db.Updateable(pallet).ExecuteCommandAsync();
                     }
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                     noticeDetail.CompleteQty += pickQty;
-                    Db.Updateable(noticeDetail).ExecuteCommand();
+                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
-                    var num = Db.Queryable<BllExportNoticeDetail>()
-                        .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                    var num = await Db.Queryable<BllExportNoticeDetail>()
+                        .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                     if (num <= 0)
                     {
                         notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
                         //淇敼鍑哄簱鍗曚俊鎭�
-                        Db.Updateable(notice).ExecuteCommand();
+                        await Db.Updateable(notice).ExecuteCommandAsync();
                         if (notice.IsWave == "1")
                         {
-                            var waveNum = Db.Queryable<BllExportNotice>()
-                                .Count(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status !="4");
+                            var waveNum = await Db.Queryable<BllExportNotice>()
+                                .CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4");
                             if (waveNum == 0)
                             {
-                                var wave = Db.Queryable<BllWaveMage>().First(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo);
-                                if (wave!= null)
+                                var wave = await Db.Queryable<BllWaveMage>().FirstAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo);
+                                if (wave != null)
                                 {
                                     wave.Status = "4";
                                     wave.UpdateUser = userId;
                                     wave.UpdateTime = DateTime.Now;
-                                    Db.Updateable(wave).ExecuteCommand();
+                                    await Db.Updateable(wave).ExecuteCommandAsync();
                                 }
                             }
                         }
@@ -786,6 +736,10 @@
                 var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鍑哄簱", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
                 Db.CommitTran();
             }
+            catch (AppFriendlyException e)
+            {
+                Db.RollbackTran();
+            }
             catch (Exception e)
             {
                 Db.RollbackTran();
@@ -794,7 +748,7 @@
         }
 
         //鍑哄簱pda鎷h揣
-        public void SoSetQtyPick(string soNo, string soDetailId, string palletNo, string PickQty, int userId)
+        public async Task SoSetQtyPick(string soNo, string soDetailId, string palletNo, string PickQty, int userId)
         {
             Db.BeginTran();
             try
@@ -803,7 +757,7 @@
 
                 if (string.IsNullOrWhiteSpace(soNo))
                 {
-                    throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+                    throw Oops.Bah("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
                 }
                 //if (string.IsNullOrWhiteSpace(soDetailId))
                 //{
@@ -811,56 +765,56 @@
                 //}
                 if (string.IsNullOrWhiteSpace(palletNo))
                 {
-                    throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                    throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
                 }
 
                 //鍑哄簱鍗�
-                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
+                var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.SONo == soNo);
                 if (notice == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
                 }
                 if (notice.Status != "3")
                 {
-                    throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+                    throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                 }
                 //鍑哄簱鍗曟槑缁�
-                var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
-                    .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
+                    .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                 if (noticeDetail == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
                 }
                 //鍑哄簱鍒嗛厤淇℃伅
-                var allot = Db.Queryable<BllExportAllot>().First(m =>
+                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                     m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
                     m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                 if (allot == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
                 }
                 //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
                 var needQty = allot.Qty - allot.CompleteQty;
                 if (int.Parse(PickQty) > needQty)
                 {
-                    throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
+                    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
                 }
 
                 //搴撳瓨鏄庣粏
-                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId);
                 if (stockDetail == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
                 }
                 //搴撳瓨鎬昏〃
-                var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                 if (stock == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                 }
                 #endregion
                 //鑾峰彇褰撳墠鎵樼洏鎷h揣鏄庣粏
-                var complete = Db.Queryable<BllCompleteDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.ExportAllotId == allot.Id && a.StockId == stockDetail.Id);
+                var complete = await Db.Queryable<BllCompleteDetail>().FirstAsync(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.ExportAllotId == allot.Id && a.StockId == stockDetail.Id);
 
                 //鍒よ鏄惁瀛樺湪鎷h揣鏄庣粏
                 int isComplete = 0;
@@ -900,7 +854,7 @@
                     comList.Add(completeDetail);
 
                     //娣诲姞鎷h揣鏄庣粏
-                    Db.Insertable(comList).ExecuteCommand();
+                    await Db.Insertable(comList).ExecuteCommandAsync();
                 }
                 else if (isComplete == 1)
                 {
@@ -908,14 +862,14 @@
                     complete.UpdateUser = userId;
                     complete.UpdateTime = Db.GetDate();
 
-                    Db.Updateable(complete).ExecuteCommand();
+                    await Db.Updateable(complete).ExecuteCommandAsync();
                 }
 
                 //淇敼鍑哄簱鍒嗛厤淇℃伅
                 allot.CompleteQty += int.Parse(PickQty);
                 allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
                 allot.UpdateTime = DateTime.Now;
-                Db.Updateable(allot).ExecuteCommand();
+                await Db.Updateable(allot).ExecuteCommandAsync();
 
                 int isDel = 0;
 
@@ -937,67 +891,67 @@
                 }
                 if (stockDetail.Qty <= 0)
                 {
-                    Db.Deleteable(stockDetail).ExecuteCommand();
+                    await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                 }
                 else
                 {
                     isDel = 1;
-                    Db.Updateable(stockDetail).ExecuteCommand();
+                    await Db.Updateable(stockDetail).ExecuteCommandAsync();
                 }
                 //鍒犻櫎鎴栦慨鏀瑰簱瀛�
                 stock.Qty -= int.Parse(PickQty);
                 stock.LockQty -= int.Parse(PickQty);
                 if (stock.Qty <= 0)
                 {
-                    Db.Deleteable(stock).ExecuteCommand();
+                    await Db.Deleteable(stock).ExecuteCommandAsync();
                 }
                 else
                 {
-                    Db.Updateable(stock).ExecuteCommand();
+                    await Db.Updateable(stock).ExecuteCommandAsync();
                 }
 
                 //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤
-                var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                 if (pallet == null)
                 {
-                    throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                    throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                 }
 
                 //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣�
                 if (isDel == 0)
                 {
                     pallet.Status = "0";
-                    Db.Updateable(pallet).ExecuteCommand();
+                    await Db.Updateable(pallet).ExecuteCommandAsync();
                 }
 
                 //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                 noticeDetail.CompleteQty += int.Parse(PickQty);
-                Db.Updateable(noticeDetail).ExecuteCommand();
+                await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
-                var num = Db.Queryable<BllExportNoticeDetail>()
-                    .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                var num = await Db.Queryable<BllExportNoticeDetail>()
+                    .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                 if (num <= 0)
                 {
                     notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
                     //淇敼鍑哄簱鍗曚俊鎭�
-                    Db.Updateable(notice).ExecuteCommand();
+                    await Db.Updateable(notice).ExecuteCommandAsync();
                     if (notice.IsWave == "1")
                     {
-                        var waveNum = Db.Queryable<BllExportNotice>().Count(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4");
+                        var waveNum = await Db.Queryable<BllExportNotice>().CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4");
                         if (waveNum <= 0)
                         {
-                            var wave = Db.Queryable<BllWaveMage>().First(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo);
+                            var wave = await Db.Queryable<BllWaveMage>().FirstAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo);
                             if (wave != null)
                             {
                                 wave.Status = "4";
                                 wave.UpdateUser = userId;
                                 wave.UpdateTime = DateTime.Now;
-                                Db.Updateable(wave).ExecuteCommand();
+                                await Db.Updateable(wave).ExecuteCommandAsync();
                             }
                         }
                     }
                 }
-                
+
 
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
                 var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鍑哄簱", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
@@ -1006,7 +960,6 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                throw new Exception(e.Message);
             }
         }
 
@@ -1018,33 +971,31 @@
         /// <param name="url"> </param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        public string IssuePlnOutHouse(OutModePalletVm model, int userId, string url)
+        public async Task<string> IssuePlnOutHouse(OutModePalletVm model, int userId, string url)
         {
             try
             {
-                string strMsg = "";
                 var outDtoList = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚� 
                 //鑾峰彇褰撳墠鏃堕棿
                 DateTime serverTime = Db.GetDate();
                 //鑾峰彇搴撳瓨鏄庣粏鏄惁灏忎簬绛変簬璇ュ灈鏁�
-                string str = "select * from DataStockDetail where IsDel = '0' and SkuNo = '100099' and Status = '0' ";
-                var stockDetail = Db.Ado.SqlQuery<DataStockDetail>(str);
+                //string str = "select * from DataStockDetail where IsDel = '0' and SkuNo = '100099' and Status = '0' ";
+                //var stockDetail = Db.Ado.SqlQuery<DataStockDetail>(str);
+                var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0").ToListAsync();
                 if (stockDetail.Count > 0)
                 {
                     //鍒ゆ柇鏄惁澶т簬闇�瑕佸灈鏁�
                     if (stockDetail.Count < int.Parse(model.Num))
                     {
-                        strMsg = "闇�瑕佸灈鏁板ぇ浜庡簱瀛樺灈鏁帮紝璇烽噸鏂拌緭鍏�!";
-                        return strMsg;
+                        throw Oops.Bah("闇�瑕佸灈鏁板ぇ浜庡簱瀛樺灈鏁帮紝璇烽噸鏂拌緭鍏�!");
                     }
                 }
                 //鑾峰彇搴撳瓨鎬昏〃淇℃伅
-                var stock = Db.Queryable<DataStock>().First(s => s.IsDel == "0" && s.SkuNo == "100099");
+                var stock = await Db.Queryable<DataStock>().FirstAsync(s => s.IsDel == "0" && s.SkuNo == "100099");
                 //楠岃瘉搴撳瓨鎬昏〃鏄惁涓虹┖
                 if (stock == null)
                 {
-                    strMsg = "搴撳瓨淇℃伅涓嶅瓨鍦紝璇锋牳鏌�!";
-                    return strMsg;
+                    throw Oops.Bah("搴撳瓨淇℃伅涓嶅瓨鍦紝璇锋牳鏌�!");
                 }
 
                 int i = 0;
@@ -1055,7 +1006,7 @@
                 foreach (var s in stockDetail)
                 {
                     //鑾峰彇鍌ㄤ綅淇℃伅
-                    var locat = Db.Queryable<SysStorageLocat>().First(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W01");
+                    var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W01");
 
                     if (locat != null)
                     {
@@ -1068,7 +1019,7 @@
                         locat.UpdateTime = serverTime; //淇敼鏃堕棿
                         locat.UpdateUser = userId; //淇敼浜�
                         //淇敼鍌ㄤ綅淇℃伅
-                        Db.Updateable(locat).ExecuteCommand();
+                        await Db.Updateable(locat).ExecuteCommandAsync();
                     }
 
                     //澧炲姞搴撳瓨閿佸畾鏁伴噺
@@ -1077,7 +1028,7 @@
                     stock.UpdateTime = serverTime; //淇敼鏃堕棿
                     stock.UpdateUser = userId; //淇敼浜�
                     //淇敼搴撳瓨鎬昏〃淇℃伅
-                    Db.Updateable(stock).ExecuteCommand();
+                    await Db.Updateable(stock).ExecuteCommandAsync();
 
                     //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
                     //s.AllotQty += 
@@ -1086,7 +1037,7 @@
                     s.UpdateUser = userId; //淇敼浜�
                     s.Status = "2"; //2 宸插垎閰�
                     //淇敼搴撳瓨鏄庣粏淇℃伅
-                    Db.Updateable(s).ExecuteCommand();
+                    await Db.Updateable(s).ExecuteCommandAsync();
 
                     #region 鍒嗛厤
 
@@ -1118,7 +1069,7 @@
                         CreateUser = userId,
                         CreateTime = DateTime.Now
                     };
-                    Db.Insertable(allot).ExecuteCommand();
+                    await Db.Insertable(allot).ExecuteCommandAsync();
 
                     #endregion
 
@@ -1157,7 +1108,7 @@
                         OutMode = model.OutMode,  //鐩爣鍦板潃
                         Order = 1
                     });
-                    Db.Insertable(exTask).ExecuteCommand();
+                    await Db.Insertable(exTask).ExecuteCommandAsync();
 
                     #endregion
                     i += 1;
@@ -1187,13 +1138,17 @@
                         {
                             //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
                             new TaskServer().EditTaskIssueOk(list2, time1, time2);
-                            str += "涓嬪彂鎴愬姛";
+                            //str += "涓嬪彂鎴愬姛";
                         }
                         if (wcsModel.StatusCode == -1)
                         {
                             new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
-                            throw new Exception(wcsModel.Msg);
+                            throw Oops.Bah(wcsModel.Msg);
                         }
+                    }
+                    catch (AppFriendlyException e)
+                    {
+                        throw Oops.Bah(e.Message);
                     }
                     catch (Exception ex)
                     {
@@ -1212,35 +1167,28 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                throw new Exception(e.Message);
+                return "";
             }
 
         }
 
         //鑾峰彇骞冲簱鎵樼洏淇℃伅
-        public List<Model.ModelDto.BoxInfo> GetPingKuInfoByPallet(string soNo, string palletNo)
+        public async Task<List<BoxInfo>> GetPingKuInfoByPallet(string soNo, string palletNo)
         {
-            try
+            var info = Db.Queryable<BllExportAllot>().Where(m => m.SONo == soNo && m.PalletNo == palletNo && m.IsDel == "0");
+            if (await info.CountAsync() == 0)
             {
-                var info = Db.Queryable<BllExportAllot>().Where(m => m.SONo == soNo && m.PalletNo == palletNo && m.IsDel == "0");
-                if (info.Count() == 0)
-                {
-                    throw new Exception("鏈煡璇㈠埌鎵樼洏鍒嗛厤涓嬪彂鐨勪俊鎭�");
-                }
-
-                var data = info.GroupBy(m => new { m.SkuNo, m.SkuName, m.LotNo }).Select(m => new BoxInfo()
-                {
-                    SkuNo = m.SkuNo,
-                    SkuName = m.SkuName,
-                    LotNo = m.LotNo
-                }).ToList();
-
-                return data;
+                throw Oops.Bah("鏈煡璇㈠埌鎵樼洏鍒嗛厤涓嬪彂鐨勪俊鎭�");
             }
-            catch (Exception e)
+
+            var data = await info.GroupBy(m => new { m.SkuNo, m.SkuName, m.LotNo }).Select(m => new BoxInfo()
             {
-                throw new Exception(e.Message);
-            }
+                SkuNo = m.SkuNo,
+                SkuName = m.SkuName,
+                LotNo = m.LotNo
+            }).ToListAsync();
+
+            return data;
         }
 
         /// <summary>
@@ -1249,224 +1197,202 @@
         /// <param name="soNo">鍗曟嵁鍙�</param>
         /// <param name="palletNo">鎵樼洏鐮�</param>
         /// <param name="userId">鎿嶄綔浜�</param>
-        public void PlaneExportSuccess(string soNo, string palletNo, int userId)
+        public async Task PlaneExportSuccess(string soNo, string palletNo, int userId)
         {
+            #region 鎵樼洏淇℃伅
+
+            //鑾峰彇鎵樼洏淇℃伅
+            var pallet = await Db.Queryable<SysPallets>().FirstAsync(p => p.IsDel == "0" && p.PalletNo == palletNo);
+            //楠岃瘉鎵樼洏淇℃伅鏄惁涓虹┖
+            if (pallet == null)
+            {
+                throw Oops.Bah("鎵樼洏淇℃伅涓嶅瓨鍦紝璇锋鏌�!");
+            }
+            if (pallet.Status == "0")
+            {
+                throw Oops.Bah("鎵樼洏鏈娇鐢紝璇锋鏌�!");
+            }
+            #endregion
+
+            #region 鎵樼洏鏄惁鍦ㄥ钩搴撻獙璇�
+
+            var result = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.PalletNo == palletNo);
+            if (result == null)
+            {
+                throw Oops.Bah("搴撳瓨淇℃伅涓笉瀛樺湪璇ユ墭鐩樹俊鎭紝璇锋鏌�!");
+            }
+
+            //if (result.WareHouseNo != "W02")//W02锛氶浂绠卞簱
+            //{
+            //    throw Oops.Bah("璇ユ墭鐩樻湭鍦ㄩ浂绠卞簱锛岃妫�鏌�!");
+            //}
+
+            #endregion
+
+            #region 楠岃瘉鍌ㄤ綅鐘舵�佹槸鍚︽甯�
+
+            var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(a => a.IsDel == "0" && a.LocatNo == result.LocatNo);
+            if (locat == null)
+            {
+                throw Oops.Bah("鏈幏鍙栧埌瀵瑰簲鍌ㄤ綅淇℃伅锛岃妫�鏌�!");
+            }
+            if (locat.Status != "3")
+            {
+                throw Oops.Bah("褰撳墠鍌ㄤ綅涓嶆槸鏈夌墿鍝侊紝璇锋鏌�!");
+            }
+
+            #endregion
+
+            //鑾峰彇搴撳瓨鏄庣粏淇℃伅
+            var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.PalletNo == palletNo).ToListAsync();
+            //楠岃瘉搴撳瓨鏄庣粏淇℃伅鏄惁瀛樺湪
+            if (stockDetail == null)
+            {
+                throw Oops.Bah("搴撳瓨鏄庣粏涓嶅瓨鍦紝璇锋鏌ュ簱瀛樹俊鎭�!");
+            }
+
+            Db.BeginTran();
+
             try
             {
-                #region 鎵樼洏淇℃伅
-
-                //鑾峰彇鎵樼洏淇℃伅
-                var pallet = Db.Queryable<SysPallets>().First(p => p.IsDel == "0" && p.PalletNo == palletNo);
-                //楠岃瘉鎵樼洏淇℃伅鏄惁涓虹┖
-                if (pallet == null)
+                foreach (var item in stockDetail)
                 {
-                    throw new Exception("鎵樼洏淇℃伅涓嶅瓨鍦紝璇锋鏌�!");
-                }
-                if (pallet.Status == "0")
-                {
-                    throw new Exception("鎵樼洏鏈娇鐢紝璇锋鏌�!");
-                }
-                #endregion
-
-                #region 鎵樼洏鏄惁鍦ㄥ钩搴撻獙璇�
-
-                var result = Db.Queryable<DataStockDetail>().First(m => m.PalletNo == palletNo);
-                if (result == null)
-                {
-                    throw new Exception("搴撳瓨淇℃伅涓笉瀛樺湪璇ユ墭鐩樹俊鎭紝璇锋鏌�!");
-                }
-
-                if (result.WareHouseNo != "W02")//W02锛氶浂绠卞簱
-                {
-                    throw new Exception("璇ユ墭鐩樻湭鍦ㄩ浂绠卞簱锛岃妫�鏌�!");
-                }
-
-                #endregion
-
-                #region 楠岃瘉鍌ㄤ綅鐘舵�佹槸鍚︽甯�
-
-                var locat = Db.Queryable<SysStorageLocat>().First(a=>a.IsDel == "0" && a.LocatNo == result.LocatNo);
-                if (locat == null)
-                {
-                    throw new Exception("鏈幏鍙栧埌瀵瑰簲鍌ㄤ綅淇℃伅锛岃妫�鏌�!");
-                }
-                if (locat.Status != "1")
-                {
-                    throw new Exception("褰撳墠鍌ㄤ綅涓嶆槸鏈夌墿鍝侊紝璇锋鏌�!");
-                }
-
-                #endregion
-
-                //鑾峰彇搴撳瓨鏄庣粏淇℃伅
-                var stockDetail = Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.PalletNo == palletNo).ToList();
-                //楠岃瘉搴撳瓨鏄庣粏淇℃伅鏄惁瀛樺湪
-                if (stockDetail == null)
-                {
-                    throw new Exception("搴撳瓨鏄庣粏涓嶅瓨鍦紝璇锋鏌ュ簱瀛樹俊鎭�!");
-                }
-
-                Db.BeginTran();
-
-                try
-                {
-                    foreach (var item in stockDetail)
+                    if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴�
                     {
-                        if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴�
+                        //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺
+                        var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.SkuNo == "100099");
+
+                        if (stock != null)
                         {
-                            //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺
-                            var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099");
-
-                            if (stock != null)
+                            if (item.LockQty != null)
                             {
-                                if (item.LockQty != null)
-                                {
-                                    stock.Qty -= item.LockQty.Value;
-                                    stock.LockQty -= item.LockQty.Value;
-                                    Db.Updateable(stock).ExecuteCommand();
-                                }
-
-                                if (stock.Qty == 0)
-                                {
-                                    Db.Deleteable(stock).ExecuteCommand();
-                                }
+                                stock.Qty -= item.LockQty.Value;
+                                stock.LockQty -= item.LockQty.Value;
+                                await Db.Updateable(stock).ExecuteCommandAsync();
                             }
 
-                            //鎵樼洏鐘舵�佹敼涓烘湭浣跨敤
-                            var sCode = Db.Queryable<SysPallets>().First(m => m.PalletNo == item.PalletNo);
-                            if (sCode != null)
+                            if (stock.Qty == 0)
                             {
-                                sCode.Status = "0";
-                                Db.Updateable(sCode).ExecuteCommand();
+                                await Db.Deleteable(stock).ExecuteCommandAsync();
                             }
-                            Db.Deleteable(item).ExecuteCommand();
-
-                            continue;
                         }
-                        item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
-                        item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
-                        item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
-                        item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
-                        Db.Updateable(item).ExecuteCommand();
-                    }
-                    //鍙樻洿鍌ㄤ綅鐘舵��
-                    locat.Status = "0";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖鍌ㄤ綅锛�
-                    Db.Updateable(locat).ExecuteCommand();
 
-                    //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級
-                    var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo && m.SONo == soNo).ToList();
-
-                    foreach (var item in allot)
-                    {
-                        if (item.SkuNo == "100099")
+                        //鎵樼洏鐘舵�佹敼涓烘湭浣跨敤
+                        var sCode = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == item.PalletNo);
+                        if (sCode != null)
                         {
-                            item.Status = "5";
-                            item.CompleteQty += stockDetail[0].Qty;
+                            sCode.Status = "0";
+                            await Db.Updateable(sCode).ExecuteCommandAsync();
                         }
-                        else
-                        {
-                            item.Status = "2";
-                        }
+                        await Db.Deleteable(item).ExecuteCommandAsync();
 
+                        continue;
                     }
-                    Db.Updateable(allot).ExecuteCommand();
-
-                    #region 娣诲姞鍑哄簱鎿嶄綔鏃ュ織璁板綍淇℃伅
-
-                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鎷h揣鏄庣粏", soNo, "瀹屾垚", $"鐢≒DA瀹屾垚浜嗗崟鎹彿涓簕soNo}鐨勫钩搴撳嚭搴�", userId);
-
-                    #endregion
-
-                    Db.CommitTran();
+                    item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
+                    item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
+                    item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
+                    item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
+                    await Db.Updateable(item).ExecuteCommandAsync();
                 }
-                catch (Exception e)
+                //鍙樻洿鍌ㄤ綅鐘舵��
+                locat.Status = "0";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖鍌ㄤ綅锛�
+                await Db.Updateable(locat).ExecuteCommandAsync();
+
+                //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級
+                var allot = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo && m.SONo == soNo).ToListAsync();
+
+                foreach (var item in allot)
                 {
-                    Db.RollbackTran();
-                    throw new Exception(e.Message);
+                    if (item.SkuNo == "100099")
+                    {
+                        item.Status = "5";
+                        item.CompleteQty += stockDetail[0].Qty;
+                    }
+                    else
+                    {
+                        item.Status = "2";
+                    }
+
                 }
+                await Db.Updateable(allot).ExecuteCommandAsync();
+
+                #region 娣诲姞鍑哄簱鎿嶄綔鏃ュ織璁板綍淇℃伅
+
+                //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鎷h揣鏄庣粏", soNo, "瀹屾垚", $"鐢≒DA瀹屾垚浜嗗崟鎹彿涓簕soNo}鐨勫钩搴撳嚭搴�", userId);
+
+                #endregion
+
+                Db.CommitTran();
             }
             catch (Exception e)
             {
-                throw new Exception(e.Message);
+                Db.RollbackTran();
             }
         }
 
         //鏍规嵁鎵樼洏鍙疯幏鍙栧彇鏍风被鍨�
-        public string GetSampleType(string palletNo)
+        public async Task<string> GetSampleType(string palletNo)
         {
-            try
+            var type = "";
+            var detail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
+            if (detail == null)
             {
-                var type = "";
-                var detail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
-                if (detail == null)
-                {
-                    throw new Exception("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
-                }
-                //鎬庝箞鍒ゆ柇褰撳墠鎵樼洏鏄簱澶栬鍙栨牱鐨勬墭鐩橈紝姝e父鍑哄簱鍓╀綑鎵樼洏鐩墠杩欑鎯呭喌涔熻兘鎷h揣鍟婏紝涔熸病鏈夊垎閰嶄俊鎭�
-                var allot = Db.Queryable<BllExportAllot>().First(m =>
-                    m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6");
-                if (allot != null)
-                {
-                    var soNo = Db.Queryable<BllExportNotice>()
-                        .First(m => m.IsDel == "0" && m.SONo == allot.SONo);
-                    if (soNo == null)
-                    {
-                        throw new Exception("鏈壘鍒版墭鐩樹笂鍑哄簱鍗曟嵁淇℃伅");
-                    }
-                    if (soNo.Type != "3")
-                    {
-                        throw new Exception("璇ユ墭鐩樹笉鏄彇鏍锋墭鐩�");
-                    }
-                    type = "0";//搴撳唴鍙栨牱
-                }
-                else
-                {
-                    //鍒ゆ柇褰撳墠鎵樼洏鏄惁鏄湪骞冲簱鎴栧簱澶�
-                    type = "1";//搴撳墠鍙栨牱
-                }
-                return type;
+                throw Oops.Bah("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
             }
-            catch (Exception e)
+            //鎬庝箞鍒ゆ柇褰撳墠鎵樼洏鏄簱澶栬鍙栨牱鐨勬墭鐩橈紝姝e父鍑哄簱鍓╀綑鎵樼洏鐩墠杩欑鎯呭喌涔熻兘鎷h揣鍟婏紝涔熸病鏈夊垎閰嶄俊鎭�
+            var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
+                m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6");
+            if (allot != null)
             {
-                throw new Exception(e.Message);
+                var soNo = await Db.Queryable<BllExportNotice>()
+                    .FirstAsync(m => m.IsDel == "0" && m.SONo == allot.SONo);
+                if (soNo == null)
+                {
+                    throw Oops.Bah("鏈壘鍒版墭鐩樹笂鍑哄簱鍗曟嵁淇℃伅");
+                }
+                if (soNo.Type != "3")
+                {
+                    throw Oops.Bah("璇ユ墭鐩樹笉鏄彇鏍锋墭鐩�");
+                }
+                type = "0";//搴撳唴鍙栨牱
             }
+            else
+            {
+                //鍒ゆ柇褰撳墠鎵樼洏鏄惁鏄湪骞冲簱鎴栧簱澶�
+                type = "1";//搴撳墠鍙栨牱
+            }
+            return type;
         }
 
         //鏍规嵁鎵樼洏鍙疯幏鍙栧叆搴撳崟鎹�
-        public List<string> GetAsnNoByPallet(string palletNo)
+        public async Task<List<string>> GetAsnNoByPallet(string palletNo)
         {
-            try
+            var type = "";
+            var detail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
+            if (detail == null)
             {
-                var type = "";
-                var detail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
-                if (detail == null)
-                {
-                    throw new Exception("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
-                }
+                throw Oops.Bah("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
+            }
 
-                var list = new List<string>();
-                if (string.IsNullOrWhiteSpace(detail.ASNNo))
-                {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍏ュ簱鍗曚俊鎭�");
-                }
-                list.Add(detail.ASNNo);
-                return list;
-            }
-            catch (Exception e)
+            var list = new List<string>();
+            if (string.IsNullOrWhiteSpace(detail.ASNNo))
             {
-                throw new Exception(e.Message);
+                throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍏ュ簱鍗曚俊鎭�");
             }
+            list.Add(detail.ASNNo);
+            return list;
         }
 
         //鍙栨牱鍑哄簱鎷h揣(鏍囩)
-        public void SampleSoSetPick(string soType, string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string asnNo, int userId)
+        public async Task SampleSoSetPick(string soType, string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string asnNo, int userId)
         {
             Db.BeginTran();
             try
             {
                 if (string.IsNullOrWhiteSpace(soType))
                 {
-                    throw new Exception("鍙栨牱鏍囪瘑涓嶈兘涓虹┖");
+                    throw Oops.Bah("鍙栨牱鏍囪瘑涓嶈兘涓虹┖");
                 }
 
                 //soType: 0搴撳唴鍙栨牱锛屾湁鍑哄簱鍗曞強鍒嗛厤淇℃伅锛� 1搴撳墠鍙栨牱锛屽弽鍚戞坊鍔犲嚭搴撳崟鍙婂垎閰嶄俊鎭�
@@ -1477,46 +1403,46 @@
 
                     if (string.IsNullOrWhiteSpace(asnNo))
                     {
-                        throw new Exception("鍏ュ簱鍗曚笉鑳戒负绌�");
+                        throw Oops.Bah("鍏ュ簱鍗曚笉鑳戒负绌�");
                     }
                     if (string.IsNullOrWhiteSpace(palletNo))
                     {
-                        throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                        throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
                     }
                     if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)
                     {
-                        throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
+                        throw Oops.Bah("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
                     }
                     //鍏堝垽鏂槸鍚︽槸搴撳鍙栨牱鎵樼洏
-                    var allot = Db.Queryable<BllExportAllot>().First(m =>
+                    var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                         m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6");
                     if (allot != null)
                     {
-                        throw new Exception("褰撳墠鎵樼洏涓嶅睘浜庡簱鍓嶅彇鏍�");
+                        throw Oops.Bah("褰撳墠鎵樼洏涓嶅睘浜庡簱鍓嶅彇鏍�");
                     }
 
 
                     //搴撳瓨鏄庣粏
-                    var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNNo == asnNo && m.PalletNo == palletNo);
+                    var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == asnNo && m.PalletNo == palletNo);
                     if (stockDetail == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑搴撳瓨鏄庣粏淇℃伅锛�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑搴撳瓨鏄庣粏淇℃伅锛�");
                     }
 
                     var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo);
                     if (sku == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏涓婄殑鐗╂枡淇℃伅");
+                        throw Oops.Bah("鏈煡璇㈠埌褰撳墠鎵樼洏涓婄殑鐗╂枡淇℃伅");
                     }
                     //搴撳瓨鎬昏〃
-                    var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                    var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                     if (stock == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                     }
 
                     //鍑哄簱鍗�
-                    var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo);
+                    var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.AsnSampleNo == asnNo);
                     //鍒涘缓鍑哄簱鍗�
                     if (notice == null || notice.Status == "6")
                     {
@@ -1527,7 +1453,7 @@
                             //鑾峰彇鑷鍗曟嵁鍙�
                             billNo = new Common().GetMaxNo("SO");
                             var no = billNo;
-                            bl = Db.Queryable<BllExportNotice>().Any(m => m.SONo == no);
+                            bl = await Db.Queryable<BllExportNotice>().AnyAsync(m => m.SONo == no);
                         } while (bl);
 
 
@@ -1545,12 +1471,12 @@
                             CreateUser = userId,
                         };
 
-                        var n = Db.Insertable(addNotice).ExecuteReturnEntity();
+                        var n = await Db.Insertable(addNotice).ExecuteReturnEntityAsync();
                         notice = n;
                     }
 
                     //鍒涘缓鍑哄簱鍗曟槑缁�
-                    var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.SONo == notice.SONo && m.SkuNo == stockDetail.SkuNo && m.LotNo.Contains(stockDetail.LotNo));
+                    var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.SONo == notice.SONo && m.SkuNo == stockDetail.SkuNo && m.LotNo.Contains(stockDetail.LotNo));
                     if (noticeDetail == null)
                     {
                         var addNoticeDetail = new BllExportNoticeDetail()
@@ -1578,11 +1504,11 @@
                             CreateUser = userId,
 
                         };
-                        var m = Db.Insertable(addNoticeDetail).ExecuteReturnEntity();
+                        var m = await Db.Insertable(addNoticeDetail).ExecuteReturnEntityAsync();
                         noticeDetail = m;
                     }
                     //鍑哄簱鍒嗛厤淇℃伅
-                    var allot2 = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.Status == "5" && m.SONo == notice.SONo && m.PalletNo == palletNo);
+                    var allot2 = await Db.Queryable<BllExportAllot>().FirstAsync(m => m.IsDel == "0" && m.Status == "5" && m.SONo == notice.SONo && m.PalletNo == palletNo);
                     if (allot2 == null)
                     {
                         //娣诲姞鍒嗛厤琛ㄤ俊鎭�
@@ -1614,7 +1540,7 @@
                             UpdateTime = DateTime.Now
                         };
 
-                        var fp = Db.Insertable(addAllot).ExecuteReturnEntity();
+                        var fp = await Db.Insertable(addAllot).ExecuteReturnEntityAsync();
                         allot2 = fp;
                     }
 
@@ -1626,34 +1552,34 @@
                     var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
                     List<DataBoxInfo> boxInfos;
                     var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo);
-                    if (boxInfo.Count() == 0)
+                    if (await boxInfo.CountAsync() == 0)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
                     }
-                    boxInfos = boxInfo.ToList();
-                    var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot2.Id && m.PalletNo == palletNo).ToList();
+                    boxInfos = await boxInfo.ToListAsync();
+                    var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot2.Id && m.PalletNo == palletNo).ToListAsync();
                     if (!string.IsNullOrWhiteSpace(boxNo3)) //鏁f敮鎷h揣
                     {
                         boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList();
 
                         if (boxInfos.Count() == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
                         }
                         if (boxInfos.Count() > 1)
                         {
-                            throw new Exception("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
+                            throw Oops.Bah("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
                         }
 
                         if (boxInfos.Any(m => m.PalletNo != palletNo))
                         {
-                            throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                            throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
                         foreach (var item in boxInfos)
                         {
                             if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
                             {
-                                throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                                throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                             }
                         }
                         biaoShi = "1";
@@ -1662,12 +1588,12 @@
                     {
                         if (boxInfo.Count() > 1)
                         {
-                            throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
+                            throw Oops.Bah("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
                         }
                         decimal boxQty = boxInfo.First().Qty;
                         if (Convert.ToInt32(pickQty1) > boxQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
                         }
 
                         biaoShi = "2";
@@ -1676,17 +1602,17 @@
                     {
                         if (boxInfo.Count() == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
                         }
                         if (boxInfo.Any(m => m.PalletNo != palletNo))
                         {
-                            throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                            throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
                         foreach (var item in boxInfos)
                         {
                             if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo))
                             {
-                                throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                                throw Oops.Bah($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                             }
                         }
                     }
@@ -1727,21 +1653,21 @@
                         if (biaoShi != "2")
                         {
                             //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                            Db.Deleteable(item).ExecuteCommand();
+                            await Db.Deleteable(item).ExecuteCommandAsync();
                         }
                         else//鏁伴噺鎷h揣
                         {
                             if (decimal.Parse(pickQty1) == item.Qty)
                             {
                                 //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                                Db.Deleteable(item).ExecuteCommand();
+                                await Db.Deleteable(item).ExecuteCommandAsync();
                             }
                             else
                             {
                                 item.Qty -= decimal.Parse(pickQty1);
                                 item.BitBoxMark = "1";//闆剁鏍囪瘑
                                 item.InspectMark = "1";//鎶芥绠辨爣璇�
-                                Db.Updateable(item).ExecuteCommand();
+                                await Db.Updateable(item).ExecuteCommandAsync();
                             }
                         }
                         pickQty += biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty;
@@ -1756,15 +1682,15 @@
                         {
                             item.BitBoxMark = "1";
                             item.InspectMark = "1";
-                            Db.Updateable(item).ExecuteCommand();
+                            await Db.Updateable(item).ExecuteCommandAsync();
                         }
                     }
 
-                    Db.Insertable(comList).ExecuteCommand();
+                    await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot2.Qty += pickQty;
                     allot2.CompleteQty += pickQty;
-                    Db.Updateable(allot2).ExecuteCommand();
+                    await Db.Updateable(allot2).ExecuteCommandAsync();
 
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
                     stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
@@ -1772,32 +1698,32 @@
 
                     if (stockDetail.Qty <= 0)
                     {
-                        Db.Deleteable(stockDetail).ExecuteCommand();
+                        await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stockDetail).ExecuteCommand();
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
                     stock.Qty -= pickQty;
                     if (stock.Qty <= 0)
                     {
-                        Db.Deleteable(stock).ExecuteCommand();
+                        await Db.Deleteable(stock).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stock).ExecuteCommand();
+                        await Db.Updateable(stock).ExecuteCommandAsync();
                     }
-                    var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == palletNo);
+                    var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
                     if (num2 <= 0)
                     {
                         //鏀瑰彉鎵樼洏鐘舵��
-                        var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                        var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                         if (pallet == null)
                         {
-                            throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                            throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                         }
                         pallet.Status = "0";
-                        Db.Updateable(pallet).ExecuteCommand();
+                        await Db.Updateable(pallet).ExecuteCommandAsync();
                     }
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                     noticeDetail.Qty += pickQty;
@@ -1805,7 +1731,7 @@
                     noticeDetail.FactQty += pickQty;
                     noticeDetail.CompleteQty += pickQty;
                     noticeDetail.Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * noticeDetail.Qty;
-                    Db.Updateable(noticeDetail).ExecuteCommand();
+                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
                 }
                 else if (soType == "0")
@@ -1814,60 +1740,60 @@
 
                     if (string.IsNullOrWhiteSpace(soNo))
                     {
-                        throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+                        throw Oops.Bah("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
                     }
                     if (string.IsNullOrWhiteSpace(soDetailId))
                     {
-                        throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
+                        throw Oops.Bah("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
                     }
                     if (string.IsNullOrWhiteSpace(palletNo))
                     {
-                        throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                        throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
                     }
                     if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)
                     {
-                        throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
+                        throw Oops.Bah("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
                     }
 
                     //鍑哄簱鍗�
-                    var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
+                    var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.SONo == soNo);
                     if (notice == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
                     }
                     if (notice.Status != "3")
                     {
-                        throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+                        throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                     }
                     //鍑哄簱鍗曟槑缁�
-                    var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
-                        .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+                    var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
+                        .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                     if (noticeDetail == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
                     }
                     //鍑哄簱鍒嗛厤淇℃伅
-                    var allot = Db.Queryable<BllExportAllot>().First(m =>
+                    var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                         m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
                         m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                     if (allot == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
                     }
                     //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
                     var needQty = allot.Qty - allot.CompleteQty;
 
                     //搴撳瓨鏄庣粏
-                    var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                    var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId);
                     if (stockDetail == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
                     }
                     //搴撳瓨鎬昏〃
-                    var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                    var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                     if (stock == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                     }
 
                     #endregion
@@ -1875,39 +1801,39 @@
                     var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
                     List<DataBoxInfo> boxInfos;
                     var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo);
-                    if (boxInfo.Count() == 0)
+                    if (await boxInfo.CountAsync() == 0)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
                     }
-                    boxInfos = boxInfo.ToList();
-                    var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList();
+                    boxInfos = await boxInfo.ToListAsync();
+                    var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
                     if (!string.IsNullOrWhiteSpace(boxNo3)) //鏁f敮鎷h揣
                     {
                         boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList();
 
                         if (boxInfos.Count() == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
                         }
                         if (boxInfos.Count() > 1)
                         {
-                            throw new Exception("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
+                            throw Oops.Bah("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
                         }
 
                         if (boxInfos.Any(m => m.PalletNo != palletNo))
                         {
-                            throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                            throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
                         var boxQty = boxInfos.First().Qty;
                         if (boxQty > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
                         }
                         foreach (var item in boxInfos)
                         {
                             if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
                             {
-                                throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                                throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                             }
                         }
                         biaoShi = "1";
@@ -1916,16 +1842,16 @@
                     {
                         if (boxInfo.Count() > 1)
                         {
-                            throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
+                            throw Oops.Bah("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
                         }
                         decimal boxQty = boxInfo.First().Qty;
                         if (Convert.ToInt32(pickQty1) > boxQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
                         }
                         if (Convert.ToInt32(pickQty1) > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
                         }
 
                         biaoShi = "2";
@@ -1934,22 +1860,22 @@
                     {
                         if (boxInfo.Count() == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
                         }
                         if (boxInfo.Any(m => m.PalletNo != palletNo))
                         {
-                            throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                            throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
                         var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
                         if (boxQty[0] > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
                         }
                         foreach (var item in boxInfos)
                         {
                             if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo))
                             {
-                                throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                                throw Oops.Bah($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                             }
                         }
                     }
@@ -1989,21 +1915,21 @@
                         if (biaoShi != "2")
                         {
                             //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                            Db.Deleteable(item).ExecuteCommand();
+                            await Db.Deleteable(item).ExecuteCommandAsync();
                         }
                         else//鏁伴噺鎷h揣
                         {
                             if (decimal.Parse(pickQty1) == item.Qty)
                             {
                                 //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                                Db.Deleteable(item).ExecuteCommand();
+                                await Db.Deleteable(item).ExecuteCommandAsync();
                             }
                             else
                             {
                                 item.Qty -= decimal.Parse(pickQty1);
                                 item.BitBoxMark = "1";//闆剁鏍囪瘑
                                 item.InspectMark = "1"; //鎶芥绠辨爣璇�
-                                Db.Updateable(item).ExecuteCommand();
+                                await Db.Updateable(item).ExecuteCommandAsync();
                             }
                         }
                         pickQty += item.Qty;
@@ -2015,11 +1941,11 @@
                         foreach (var item in boxSurplusList)
                         {
                             item.BitBoxMark = "1";
-                            Db.Updateable(item).ExecuteCommand();
+                            await Db.Updateable(item).ExecuteCommandAsync();
                         }
                     }
 
-                    Db.Insertable(comList).ExecuteCommand();
+                    await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
                     allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
@@ -2028,7 +1954,7 @@
                     {
                         //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴�
                     }
-                    Db.Updateable(allot).ExecuteCommand();
+                    await Db.Updateable(allot).ExecuteCommandAsync();
 
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
                     stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
@@ -2050,47 +1976,47 @@
 
                     if (stockDetail.Qty <= 0)
                     {
-                        Db.Deleteable(stockDetail).ExecuteCommand();
+                        await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stockDetail).ExecuteCommand();
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
                     stock.Qty -= pickQty;
                     stock.LockQty -= pickQty;
                     stock.IsSampling = "1";
                     if (stock.Qty <= 0)
                     {
-                        Db.Deleteable(stock).ExecuteCommand();
+                        await Db.Deleteable(stock).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stock).ExecuteCommand();
+                        await Db.Updateable(stock).ExecuteCommandAsync();
                     }
-                    var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == palletNo);
+                    var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
                     if (num2 <= 0)
                     {
                         //鏀瑰彉鎵樼洏鐘舵��
-                        var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                        var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                         if (pallet == null)
                         {
-                            throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                            throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                         }
                         pallet.Status = "0";
-                        Db.Updateable(pallet).ExecuteCommand();
+                        await Db.Updateable(pallet).ExecuteCommandAsync();
                     }
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                     noticeDetail.CompleteQty += pickQty;
-                    Db.Updateable(noticeDetail).ExecuteCommand();
+                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
-                    var num = Db.Queryable<BllExportNoticeDetail>()
-                        .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                    var num = await Db.Queryable<BllExportNoticeDetail>()
+                        .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                     if (num <= 0)
                     {
                         notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
                     }
                     //淇敼鍑哄簱鍗曚俊鎭�
-                    Db.Updateable(notice).ExecuteCommand();
+                    await Db.Updateable(notice).ExecuteCommandAsync();
                 }
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
                 var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鍑哄簱", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
@@ -2099,61 +2025,60 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                throw new Exception(e.Message);
             }
         }
 
         //鍙栨牱鍑哄簱鎷h揣(鏃犳爣绛�)
-        public void SampleSoSetQtyPick(string soType, string soNo, string soDetailId, string palletNo, string PickQty, string asnNo, int userId)
+        public async Task SampleSoSetQtyPick(string soType, string soNo, string soDetailId, string palletNo, string PickQty, string asnNo, int userId)
         {
             Db.BeginTran();
             try
             {
                 if (string.IsNullOrWhiteSpace(soType))
                 {
-                    throw new Exception("鍙栨牱鏍囪瘑涓嶈兘涓虹┖");
+                    throw Oops.Bah("鍙栨牱鏍囪瘑涓嶈兘涓虹┖");
                 }
 
                 if (soType == "1")
                 {
                     if (string.IsNullOrWhiteSpace(asnNo))
                     {
-                        throw new Exception("鍏ュ簱鍗曟嵁涓嶈兘涓虹┖");
+                        throw Oops.Bah("鍏ュ簱鍗曟嵁涓嶈兘涓虹┖");
                     }
                     if (string.IsNullOrWhiteSpace(palletNo))
                     {
-                        throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                        throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
                     }
                     //鍏堝垽鏂槸鍚︽槸搴撳鍙栨牱鎵樼洏
-                    var allot = Db.Queryable<BllExportAllot>().First(m =>
+                    var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                         m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6");
                     if (allot != null)
                     {
-                        throw new Exception("褰撳墠鎵樼洏涓嶅睘浜庡簱鍓嶅彇鏍�");
+                        throw Oops.Bah("褰撳墠鎵樼洏涓嶅睘浜庡簱鍓嶅彇鏍�");
                     }
 
 
                     //搴撳瓨鏄庣粏
-                    var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNNo == asnNo && m.PalletNo == palletNo);
+                    var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == asnNo && m.PalletNo == palletNo);
                     if (stockDetail == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑搴撳瓨鏄庣粏淇℃伅锛�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑搴撳瓨鏄庣粏淇℃伅锛�");
                     }
 
-                    var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo);
+                    var sku = await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo);
                     if (sku == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏涓婄殑鐗╂枡淇℃伅");
+                        throw Oops.Bah("鏈煡璇㈠埌褰撳墠鎵樼洏涓婄殑鐗╂枡淇℃伅");
                     }
                     //搴撳瓨鎬昏〃
-                    var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                    var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                     if (stock == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                     }
 
                     //鍑哄簱鍗�
-                    var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo);
+                    var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.AsnSampleNo == asnNo);
                     //鍒涘缓鍑哄簱鍗�
                     if (notice == null || notice.Status == "6")
                     {
@@ -2164,7 +2089,7 @@
                             //鑾峰彇鑷鍗曟嵁鍙�
                             billNo = new Common().GetMaxNo("SO");
                             var no = billNo;
-                            bl = Db.Queryable<BllExportNotice>().Any(m => m.SONo == no);
+                            bl = await Db.Queryable<BllExportNotice>().AnyAsync(m => m.SONo == no);
                         } while (bl);
 
                         var addNotice = new BllExportNotice()
@@ -2181,12 +2106,12 @@
                             CreateUser = userId,
                         };
 
-                        var n = Db.Insertable(addNotice).ExecuteReturnEntity();
+                        var n = await Db.Insertable(addNotice).ExecuteReturnEntityAsync();
                         notice = n;
                     }
 
                     //鍒涘缓鍑哄簱鍗曟槑缁�
-                    var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.SONo == notice.SONo && m.SkuNo == stockDetail.SkuNo && m.LotNo.Contains(stockDetail.LotNo));
+                    var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.SONo == notice.SONo && m.SkuNo == stockDetail.SkuNo && m.LotNo.Contains(stockDetail.LotNo));
                     if (noticeDetail == null)
                     {
                         var addNoticeDetail = new BllExportNoticeDetail()
@@ -2214,11 +2139,11 @@
                             CreateUser = userId,
 
                         };
-                        var m = Db.Insertable(addNoticeDetail).ExecuteReturnEntity();
+                        var m = await Db.Insertable(addNoticeDetail).ExecuteReturnEntityAsync();
                         noticeDetail = m;
                     }
                     //鍑哄簱鍒嗛厤淇℃伅
-                    var allot2 = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.Status == "5" && m.SONo == notice.SONo && m.PalletNo == palletNo);
+                    var allot2 = await Db.Queryable<BllExportAllot>().FirstAsync(m => m.IsDel == "0" && m.Status == "5" && m.SONo == notice.SONo && m.PalletNo == palletNo);
                     if (allot2 == null)
                     {
                         //娣诲姞鍒嗛厤琛ㄤ俊鎭�
@@ -2250,12 +2175,12 @@
                             UpdateTime = DateTime.Now
                         };
 
-                        var fp = Db.Insertable(addAllot).ExecuteReturnEntity();
+                        var fp = await Db.Insertable(addAllot).ExecuteReturnEntityAsync();
                         allot2 = fp;
                     }
 
                     //鑾峰彇褰撳墠鎵樼洏鎷h揣鏄庣粏
-                    var complete = Db.Queryable<BllCompleteDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.ExportAllotId == allot2.Id && a.StockId == stockDetail.Id);
+                    var complete = await Db.Queryable<BllCompleteDetail>().FirstAsync(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.ExportAllotId == allot2.Id && a.StockId == stockDetail.Id);
 
                     //鍒よ鏄惁瀛樺湪鎷h揣鏄庣粏
                     int isComplete = 0;
@@ -2294,7 +2219,7 @@
                         comList.Add(completeDetail);
 
                         //娣诲姞鎷h揣鏄庣粏
-                        Db.Insertable(comList).ExecuteCommand();
+                        await Db.Insertable(comList).ExecuteCommandAsync();
                     }
                     else if (isComplete == 1)
                     {
@@ -2302,7 +2227,7 @@
                         complete.UpdateUser = userId;
                         complete.UpdateTime = Db.GetDate();
 
-                        Db.Updateable(complete).ExecuteCommand();
+                        await Db.Updateable(complete).ExecuteCommandAsync();
                     }
 
 
@@ -2310,7 +2235,7 @@
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot2.Qty += int.Parse(PickQty);
                     allot2.CompleteQty += int.Parse(PickQty);
-                    Db.Updateable(allot2).ExecuteCommand();
+                    await Db.Updateable(allot2).ExecuteCommandAsync();
 
                     int isDel = 0;
 
@@ -2332,36 +2257,36 @@
                     }
                     if (stockDetail.Qty <= 0)
                     {
-                        Db.Deleteable(stockDetail).ExecuteCommand();
+                        await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
                         isDel = 1;
-                        Db.Updateable(stockDetail).ExecuteCommand();
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛�
                     stock.Qty -= int.Parse(PickQty);
                     if (stock.Qty <= 0)
                     {
-                        Db.Deleteable(stock).ExecuteCommand();
+                        await Db.Deleteable(stock).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stock).ExecuteCommand();
+                        await Db.Updateable(stock).ExecuteCommandAsync();
                     }
 
                     //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤
-                    var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                    var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                     if (pallet == null)
                     {
-                        throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                        throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                     }
 
                     //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣�
                     if (isDel == 0)
                     {
                         pallet.Status = "0";
-                        Db.Updateable(pallet).ExecuteCommand();
+                        await Db.Updateable(pallet).ExecuteCommandAsync();
                     }
 
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
@@ -2370,7 +2295,7 @@
                     noticeDetail.FactQty += int.Parse(PickQty);
                     noticeDetail.CompleteQty += int.Parse(PickQty);
                     noticeDetail.Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * noticeDetail.Qty;
-                    Db.Updateable(noticeDetail).ExecuteCommand();
+                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
                 }
                 else if (soType == "0")
@@ -2379,7 +2304,7 @@
 
                     if (string.IsNullOrWhiteSpace(soNo))
                     {
-                        throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+                        throw Oops.Bah("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
                     }
                     //if (string.IsNullOrWhiteSpace(soDetailId))
                     //{
@@ -2387,56 +2312,56 @@
                     //}
                     if (string.IsNullOrWhiteSpace(palletNo))
                     {
-                        throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                        throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
                     }
 
                     //鍑哄簱鍗�
                     var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
                     if (notice == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
                     }
                     if (notice.Status != "3")
                     {
-                        throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+                        throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                     }
                     //鍑哄簱鍗曟槑缁�
                     var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
                         .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                     if (noticeDetail == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
                     }
                     //鍑哄簱鍒嗛厤淇℃伅
-                    var allot = Db.Queryable<BllExportAllot>().First(m =>
+                    var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                         m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
                         m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                     if (allot == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
                     }
                     //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
                     var needQty = allot.Qty - allot.CompleteQty;
                     if (int.Parse(PickQty) > needQty)
                     {
-                        throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
+                        throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
                     }
 
                     //搴撳瓨鏄庣粏
-                    var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                    var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId);
                     if (stockDetail == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
                     }
                     //搴撳瓨鎬昏〃
-                    var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                    var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                     if (stock == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                     }
                     #endregion
                     //鑾峰彇褰撳墠鎵樼洏鎷h揣鏄庣粏
-                    var complete = Db.Queryable<BllCompleteDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.ExportAllotId == allot.Id && a.StockId == stockDetail.Id);
+                    var complete = await Db.Queryable<BllCompleteDetail>().FirstAsync(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.ExportAllotId == allot.Id && a.StockId == stockDetail.Id);
 
                     //鍒よ鏄惁瀛樺湪鎷h揣鏄庣粏
                     int isComplete = 0;
@@ -2475,7 +2400,7 @@
                         comList.Add(completeDetail);
 
                         //娣诲姞鎷h揣鏄庣粏
-                        Db.Insertable(comList).ExecuteCommand();
+                        await Db.Insertable(comList).ExecuteCommandAsync();
                     }
                     else if (isComplete == 1)
                     {
@@ -2483,7 +2408,7 @@
                         complete.UpdateUser = userId;
                         complete.UpdateTime = Db.GetDate();
 
-                        Db.Updateable(complete).ExecuteCommand();
+                        await Db.Updateable(complete).ExecuteCommandAsync();
                     }
 
 
@@ -2493,7 +2418,7 @@
                     allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
 
                     allot.UpdateTime = DateTime.Now;
-                    Db.Updateable(allot).ExecuteCommand();
+                    await Db.Updateable(allot).ExecuteCommandAsync();
 
                     int isDel = 0;
 
@@ -2516,12 +2441,12 @@
                     }
                     if (stockDetail.Qty <= 0)
                     {
-                        Db.Deleteable(stockDetail).ExecuteCommand();
+                        await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
                         isDel = 1;
-                        Db.Updateable(stockDetail).ExecuteCommand();
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛�
                     stock.Qty -= int.Parse(PickQty);
@@ -2529,39 +2454,39 @@
                     stock.IsSampling = "1"; //鏄惁鍙栨牱
                     if (stock.Qty <= 0)
                     {
-                        Db.Deleteable(stock).ExecuteCommand();
+                        await Db.Deleteable(stock).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stock).ExecuteCommand();
+                        await Db.Updateable(stock).ExecuteCommandAsync();
                     }
 
                     //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤
-                    var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                    var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                     if (pallet == null)
                     {
-                        throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                        throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                     }
 
                     //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣�
                     if (isDel == 0)
                     {
                         pallet.Status = "0";
-                        Db.Updateable(pallet).ExecuteCommand();
+                        await Db.Updateable(pallet).ExecuteCommandAsync();
                     }
 
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                     noticeDetail.CompleteQty += int.Parse(PickQty);
-                    Db.Updateable(noticeDetail).ExecuteCommand();
+                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
-                    var num = Db.Queryable<BllExportNoticeDetail>()
-                        .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                    var num = await Db.Queryable<BllExportNoticeDetail>()
+                        .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                     if (num <= 0)
                     {
                         notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
                     }
                     //淇敼鍑哄簱鍗曚俊鎭�
-                    Db.Updateable(notice).ExecuteCommand();
+                    await Db.Updateable(notice).ExecuteCommandAsync();
 
                 }
 
@@ -2572,7 +2497,6 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                throw new Exception(e.Message);
             }
         }
 
@@ -2588,7 +2512,7 @@
         /// <param name="pickQty1"></param>
         /// <param name="palletNoNew"></param>
         /// <param name="userId"></param>
-        public void SoSetPinPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string palletNoNew, int userId)
+        public async Task SoSetPinPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string palletNoNew, int userId)
         {
             Db.BeginTran();
             try
@@ -2598,71 +2522,71 @@
 
                 if (string.IsNullOrWhiteSpace(soNo))
                 {
-                    throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+                    throw Oops.Bah("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
                 }
                 if (string.IsNullOrWhiteSpace(soDetailId))
                 {
-                    throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
+                    throw Oops.Bah("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
                 }
                 if (string.IsNullOrWhiteSpace(palletNo))
                 {
-                    throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                    throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
                 }
                 if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)
                 {
-                    throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
+                    throw Oops.Bah("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
                 }
                 if (string.IsNullOrWhiteSpace(palletNoNew))
                 {
-                    throw new Exception("鏂版墭鐩樼爜涓嶈兘涓虹┖");
+                    throw Oops.Bah("鏂版墭鐩樼爜涓嶈兘涓虹┖");
                 }
                 if (palletNo == palletNoNew)//鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷�
                 {
                     if (!string.IsNullOrEmpty(boxNo))
                     {
-                        throw new Exception("鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷达紝璇烽�夋嫨鏁存墭鍑哄簱");
+                        throw Oops.Bah("鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷达紝璇烽�夋嫨鏁存墭鍑哄簱");
                     }
                 }
 
                 //鍑哄簱鍗�
-                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
+                var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.SONo == soNo);
                 if (notice == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
                 }
                 if (notice.Status != "3")
                 {
-                    throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+                    throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                 }
                 //鍑哄簱鍗曟槑缁�
-                var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
-                    .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
+                    .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                 if (noticeDetail == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
                 }
                 //鍑哄簱鍒嗛厤淇℃伅
-                var allot = Db.Queryable<BllExportAllot>().First(m =>
+                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                     m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
                     m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                 if (allot == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
                 }
                 //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
                 var needQty = allot.Qty - allot.CompleteQty;
 
                 //搴撳瓨鏄庣粏
-                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId);
                 if (stockDetail == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
                 }
                 //搴撳瓨鎬昏〃
-                var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                 if (stock == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                 }
 
                 #endregion
@@ -2670,14 +2594,14 @@
                 #region 鎷兼墭淇℃伅
                 var sdId = 0;
                 bool isNew = false;
-                var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
+                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                 if (pinStockDetail != null)
                 {
                     if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�
                     {
                         if (pinStockDetail.SONo != notice.SONo)
                         {
-                            throw new Exception("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
+                            throw Oops.Bah("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
                         }
                         if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
                         {
@@ -2690,14 +2614,14 @@
                 {
                     isNew = true;
 
-                    var newPalletInfo = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
+                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
                     if (newPalletInfo == null)
                     {
-                        throw new Exception("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
+                        throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
                     }
                     //淇敼鏂版墭鐩樼姸鎬�
                     newPalletInfo.Status = "1";
-                    Db.Updateable(newPalletInfo).ExecuteCommand();
+                    await Db.Updateable(newPalletInfo).ExecuteCommandAsync();
                 }
                 var sd = new DataStockDetail();
                 if (isNew)
@@ -2743,7 +2667,7 @@
                     sd.CreateTime = nowDate;
 
                     //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅
-                    sdId = Db.Insertable(sd).ExecuteReturnIdentity();
+                    sdId = await Db.Insertable(sd).ExecuteReturnIdentityAsync();
                 }
                 #endregion
 
@@ -2752,28 +2676,28 @@
                 {
                     List<DataBoxInfo> boxInfos;
                     var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo);//鎵惧埌鎵樼洏涓婃墍鏈夌鐮�
-                    boxInfos = boxInfo.ToList();
+                    boxInfos = await boxInfo.ToListAsync();
                     if (boxInfo.Count() <= 0)
                     {
-                        throw new Exception("璇ユ墭鐩樹笂娌℃湁鍙嫞璐х殑绠卞瓙");
+                        throw Oops.Bah("璇ユ墭鐩樹笂娌℃湁鍙嫞璐х殑绠卞瓙");
                     }
-                    var boxQty = boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
+                    var boxQty = await boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
                     if (boxQty[0] > needQty)
                     {
-                        throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                        throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
                     }
 
-                    var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList();
+                    var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
                     var comList = new List<BllCompleteDetail>();
                     foreach (var item in boxInfos)
                     {
                         if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
                         {
-                            throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                            throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                         }
                         if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo)
                         {
-                            throw new Exception("褰撳墠鎵樼洏涓婃湁鍏朵粬涓嶅悓鐗╂枡鎵规锛屾嫞璐уけ璐�");
+                            throw Oops.Bah("褰撳墠鎵樼洏涓婃湁鍏朵粬涓嶅悓鐗╂枡鎵规锛屾嫞璐уけ璐�");
                         }
                         //娣诲姞鎷h揣鏄庣粏
                         var completeDetail = new BllCompleteDetail()
@@ -2798,7 +2722,7 @@
                             CreateUser = userId
                         };
                         comList.Add(completeDetail);
-                        
+
                         if (palletNo != palletNoNew)
                         {
                             item.StockDetailId = sdId;
@@ -2807,41 +2731,41 @@
                         }
                         item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭  1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
                         //淇敼搴撳瓨绠辩爜鏄庣粏
-                        Db.Updateable(item).ExecuteCommand();
+                        await Db.Updateable(item).ExecuteCommandAsync();
 
                         pickQty += item.Qty;
                     }
                     //娣诲姞鎷h揣鏄庣粏
-                    Db.Insertable(comList).ExecuteCommand();
+                    await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
                     allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
-                    Db.Updateable(allot).ExecuteCommand();
+                    await Db.Updateable(allot).ExecuteCommandAsync();
 
                     if (palletNo != palletNoNew)
                     {
                         //鍒犻櫎鍘熸墭鐩樺簱瀛樻槑缁�
-                        Db.Deleteable(stockDetail).ExecuteCommand();
+                        await Db.Deleteable(stockDetail).ExecuteCommandAsync();
 
                         //鏀瑰彉鍘熸墭鐩樼姸鎬佷负锛氭湭浣跨敤
-                        var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                        var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                         if (pallet == null)
                         {
-                            throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                            throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                         }
                         pallet.Status = "0";
-                        Db.Updateable(pallet).ExecuteCommand();
+                        await Db.Updateable(pallet).ExecuteCommandAsync();
                     }
                     else
                     {
                         stockDetail.SONo = soNo;
-                        Db.Updateable(stockDetail).ExecuteCommand();
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
-                   
+
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                     noticeDetail.CompleteQty += pickQty;
-                    Db.Updateable(noticeDetail).ExecuteCommand();
+                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
                     var num = Db.Queryable<BllExportNoticeDetail>()
                         .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
@@ -2850,48 +2774,48 @@
                         notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
                     }
                     //淇敼鍑哄簱鍗曚俊鎭�
-                    Db.Updateable(notice).ExecuteCommand();
+                    await Db.Updateable(notice).ExecuteCommandAsync();
                 }
                 else
                 {
                     var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
                     List<DataBoxInfo> boxInfos;
                     var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo);
-                    if (boxInfo.Count() == 0)
+                    if (await boxInfo.CountAsync() == 0)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                        throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
                     }
-                    boxInfos = boxInfo.ToList();
+                    boxInfos = await boxInfo.ToListAsync();
 
-                    var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList();
+                    var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
                     if (!string.IsNullOrWhiteSpace(boxNo3)) //鏁f敮鎷h揣
                     {
                         boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList();
 
                         if (boxInfos.Count() == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
                         }
                         if (boxInfos.Count() > 1)
                         {
-                            throw new Exception("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
+                            throw Oops.Bah("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
                         }
 
                         if (boxInfos.Any(m => m.PalletNo != palletNo))
                         {
-                            throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                            throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
                         var boxQty = boxInfos.First().Qty;
                         if (boxQty > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
                         }
 
                         foreach (var item in boxInfos)
                         {
                             if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
                             {
-                                throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                                throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                             }
                         }
 
@@ -2901,16 +2825,16 @@
                     {
                         if (boxInfo.Count() > 1)
                         {
-                            throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
+                            throw Oops.Bah("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
                         }
                         decimal boxQty = boxInfo.First().Qty;
                         if (Convert.ToInt32(pickQty1) > boxQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
                         }
                         if (Convert.ToInt32(pickQty1) > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
                         }
 
                         biaoShi = "2";
@@ -2919,23 +2843,23 @@
                     {
                         if (boxInfo.Count() == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
                         }
                         if (boxInfo.Any(m => m.PalletNo != palletNo))
                         {
-                            throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                            throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
-                        var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
+                        var boxQty = await boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
                         if (boxQty[0] > needQty)
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
                         }
 
                         foreach (var item in boxInfos)
                         {
                             if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo))
                             {
-                                throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+                                throw Oops.Bah($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                             }
                         }
                     }
@@ -2974,7 +2898,7 @@
                             item.BindNo = null;//鎵樼洏缁戝畾鍙�
                             item.PalletNo = palletNoNew;
                             item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭  1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
-                            Db.Updateable(item).ExecuteCommand();
+                            await Db.Updateable(item).ExecuteCommandAsync();
 
                             pickQty += item.Qty;
                         }
@@ -2987,7 +2911,7 @@
                             item.BoxNo = item.BoxNo3;//灏嗘敮鐮佽祴缁欑鐮�
                             item.BitBoxMark = "1";//闆剁鏍囪
                             item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭  1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
-                            Db.Updateable(item).ExecuteCommand();
+                            await Db.Updateable(item).ExecuteCommandAsync();
 
                             pickQty += item.Qty;
                         }
@@ -3000,13 +2924,13 @@
                                 item.BindNo = null;//鎵樼洏缁戝畾鍙�
                                 item.PalletNo = palletNoNew;
                                 item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭  1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
-                                Db.Updateable(item).ExecuteCommand();
+                                await Db.Updateable(item).ExecuteCommandAsync();
                             }
                             else
                             {
                                 item.Qty -= decimal.Parse(pickQty1);
                                 item.BitBoxMark = "1";//闆剁鏍囪瘑
-                                Db.Updateable(item).ExecuteCommand();
+                                await Db.Updateable(item).ExecuteCommandAsync();
                             }
 
                             pickQty += int.Parse(pickQty1);
@@ -3019,11 +2943,11 @@
                         foreach (var item in boxSurplusList)
                         {
                             item.BitBoxMark = "1";
-                            Db.Updateable(item).ExecuteCommand();
+                            await Db.Updateable(item).ExecuteCommandAsync();
                         }
                     }
 
-                    Db.Insertable(comList).ExecuteCommand();
+                    await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
                     allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
@@ -3032,7 +2956,7 @@
                     {
                         //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴�
                     }
-                    Db.Updateable(allot).ExecuteCommand();
+                    await Db.Updateable(allot).ExecuteCommandAsync();
 
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
                     stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
@@ -3053,36 +2977,36 @@
 
                     if (stockDetail.Qty <= 0)
                     {
-                        Db.Deleteable(stockDetail).ExecuteCommand();
+                        await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
-                        Db.Updateable(stockDetail).ExecuteCommand();
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
-                    var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == palletNo);
+                    var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
                     if (num2 <= 0)
                     {
                         //鏀瑰彉鎵樼洏鐘舵��
-                        var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                        var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                         if (pallet == null)
                         {
-                            throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                            throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                         }
                         pallet.Status = "0";
-                        Db.Updateable(pallet).ExecuteCommand();
+                        await Db.Updateable(pallet).ExecuteCommandAsync();
                     }
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                     noticeDetail.CompleteQty += pickQty;
-                    Db.Updateable(noticeDetail).ExecuteCommand();
+                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
-                    var num = Db.Queryable<BllExportNoticeDetail>()
-                        .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                    var num = await Db.Queryable<BllExportNoticeDetail>()
+                        .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                     if (num <= 0)
                     {
                         notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
                     }
                     //淇敼鍑哄簱鍗曚俊鎭�
-                    Db.Updateable(notice).ExecuteCommand();
+                    await Db.Updateable(notice).ExecuteCommandAsync();
                 }
 
                 if (isNew)
@@ -3097,10 +3021,10 @@
                         //淇敼鎷兼墭鎵樼洏搴撳瓨鏄庣粏
                         pinStockDetail.Qty += pickQty;
                         pinStockDetail.LockQty += pickQty;
-                        Db.Updateable(pinStockDetail).ExecuteCommand();
+                        await Db.Updateable(pinStockDetail).ExecuteCommandAsync();
                     }
                 }
-                
+
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
                 var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鎷兼墭", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勫師鎵樼洏鐮佷负锛歿palletNo}锛屾柊鎵樼洏鐮佷负锛歿palletNoNew}鐨勬嫞璐ф嫾鎵樻搷浣�", userId);
                 Db.CommitTran();
@@ -3108,7 +3032,6 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                throw new Exception(e.Message);
             }
         }
         /// <summary>
@@ -3120,7 +3043,7 @@
         /// <param name="PickQty"></param>
         /// <param name="palletNoNew"></param>
         /// <param name="userId"></param>
-        public void SoSetQtyPinPick(string soNo, string soDetailId, string palletNo, string PickQty, string palletNoNew, int userId)
+        public async Task SoSetQtyPinPick(string soNo, string soDetailId, string palletNo, string PickQty, string palletNoNew, int userId)
         {
             Db.BeginTran();
             try
@@ -3130,7 +3053,7 @@
 
                 if (string.IsNullOrWhiteSpace(soNo))
                 {
-                    throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+                    throw Oops.Bah("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
                 }
                 //if (string.IsNullOrWhiteSpace(soDetailId))
                 //{
@@ -3138,76 +3061,76 @@
                 //}
                 if (string.IsNullOrWhiteSpace(palletNo))
                 {
-                    throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                    throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
                 }
                 if (string.IsNullOrWhiteSpace(palletNoNew))
                 {
-                    throw new Exception("鏂版墭鐩樼爜涓嶈兘涓虹┖");
+                    throw Oops.Bah("鏂版墭鐩樼爜涓嶈兘涓虹┖");
                 }
 
                 //鍑哄簱鍗�
-                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
+                var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.SONo == soNo);
                 if (notice == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
                 }
                 if (notice.Status != "3")
                 {
-                    throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+                    throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                 }
                 //鍑哄簱鍗曟槑缁�
-                var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
-                    .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
+                    .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                 if (noticeDetail == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
                 }
                 //鍑哄簱鍒嗛厤淇℃伅
-                var allot = Db.Queryable<BllExportAllot>().First(m =>
+                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                     m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
                     m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                 if (allot == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
                 }
                 //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
                 var needQty = allot.Qty - allot.CompleteQty;
                 if (int.Parse(PickQty) > needQty)
                 {
-                    throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
+                    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
                 }
 
                 //搴撳瓨鏄庣粏
-                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId);
                 if (stockDetail == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
                 }
                 //搴撳瓨鎬昏〃
-                var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                 if (stock == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                 }
                 if (palletNo == palletNoNew)//鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷�
                 {
                     if (int.Parse(PickQty) != stockDetail.Qty)
                     {
-                        throw new Exception("鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷达紝闇�瑕佹妸鎵樼洏涓婃墍鏈夋暟閲忔嫞璐�");
+                        throw Oops.Bah("鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷达紝闇�瑕佹妸鎵樼洏涓婃墍鏈夋暟閲忔嫞璐�");
                     }
                 }
                 #endregion
 
                 #region 鎷兼墭淇℃伅
                 bool isNew = false;
-                var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
+                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                 if (pinStockDetail != null)
                 {
                     if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�
                     {
                         if (pinStockDetail.SONo != notice.SONo)
                         {
-                            throw new Exception("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
+                            throw Oops.Bah("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
                         }
                         if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
                         {
@@ -3219,14 +3142,14 @@
                 {
                     isNew = true;
 
-                    var newPalletInfo = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
+                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
                     if (newPalletInfo == null)
                     {
-                        throw new Exception("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
+                        throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
                     }
                     //淇敼鏂版墭鐩樼姸鎬�
                     newPalletInfo.Status = "1";
-                    Db.Updateable(newPalletInfo).ExecuteCommand();
+                    await Db.Updateable(newPalletInfo).ExecuteCommandAsync();
                 }
 
                 if (isNew)
@@ -3277,7 +3200,7 @@
                     sd.CreateTime = nowDate;
 
                     //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅
-                    Db.Insertable(sd).ExecuteReturnIdentity();
+                    await Db.Insertable(sd).ExecuteReturnIdentityAsync();
                 }
                 else
                 {
@@ -3286,18 +3209,18 @@
                         //淇敼鎷兼墭鎵樼洏搴撳瓨鏄庣粏
                         pinStockDetail.Qty += int.Parse(PickQty);
                         pinStockDetail.LockQty += int.Parse(PickQty);
-                        Db.Updateable(pinStockDetail).ExecuteCommand();
+                        await Db.Updateable(pinStockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
                         pinStockDetail.SONo = soNo;
-                        Db.Updateable(pinStockDetail).ExecuteCommand();
+                        await Db.Updateable(pinStockDetail).ExecuteCommandAsync();
                     }
                 }
                 #endregion
 
                 //鑾峰彇褰撳墠鎵樼洏鎷h揣鏄庣粏
-                var complete = Db.Queryable<BllCompleteDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.ExportAllotId == allot.Id && a.StockId == stockDetail.Id);
+                var complete = await Db.Queryable<BllCompleteDetail>().FirstAsync(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.ExportAllotId == allot.Id && a.StockId == stockDetail.Id);
 
                 //鍒よ鏄惁瀛樺湪鎷h揣鏄庣粏
                 int isComplete = 0;
@@ -3337,7 +3260,7 @@
                     comList.Add(completeDetail);
 
                     //娣诲姞鎷h揣鏄庣粏
-                    Db.Insertable(comList).ExecuteCommand();
+                    await Db.Insertable(comList).ExecuteCommandAsync();
                 }
                 else if (isComplete == 1)
                 {
@@ -3345,14 +3268,14 @@
                     complete.UpdateUser = userId;
                     complete.UpdateTime = Db.GetDate();
 
-                    Db.Updateable(complete).ExecuteCommand();
+                    await Db.Updateable(complete).ExecuteCommandAsync();
                 }
 
                 //淇敼鍑哄簱鍒嗛厤淇℃伅
                 allot.CompleteQty += int.Parse(PickQty);
                 allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
                 allot.UpdateTime = DateTime.Now;
-                Db.Updateable(allot).ExecuteCommand();
+                await Db.Updateable(allot).ExecuteCommandAsync();
 
                 int isDel = 0;
 
@@ -3376,12 +3299,12 @@
                     }
                     if (stockDetail.Qty <= 0)
                     {
-                        Db.Deleteable(stockDetail).ExecuteCommand();
+                        await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
                         isDel = 1;
-                        Db.Updateable(stockDetail).ExecuteCommand();
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
                 }
                 else
@@ -3392,28 +3315,28 @@
                 if (isDel == 0)
                 {
                     //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤
-                    var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                    var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                     if (pallet == null)
                     {
-                        throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                        throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
                     }
 
                     pallet.Status = "0";
-                    Db.Updateable(pallet).ExecuteCommand();
+                    await Db.Updateable(pallet).ExecuteCommandAsync();
                 }
 
                 //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                 noticeDetail.CompleteQty += int.Parse(PickQty);
-                Db.Updateable(noticeDetail).ExecuteCommand();
+                await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
-                var num = Db.Queryable<BllExportNoticeDetail>()
-                    .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                var num = await Db.Queryable<BllExportNoticeDetail>()
+                    .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                 if (num <= 0)
                 {
                     notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
                 }
                 //淇敼鍑哄簱鍗曚俊鎭�
-                Db.Updateable(notice).ExecuteCommand();
+                await Db.Updateable(notice).ExecuteCommandAsync();
 
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
                 var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鎷兼墭", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}锛屾柊鎵樼洏鐮佷负锛歿palletNoNew}鐨勬嫞璐ф搷浣�", userId);
@@ -3422,7 +3345,6 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                throw new Exception(e.Message);
             }
         }
         #endregion
@@ -3430,75 +3352,53 @@
         #region JC23鐗堝彇鏍�
 
         //鏍规嵁鎵樼洏鍙疯幏鍙栧彇鏍风被鍨�
-        public string GetSampleType2(string palletNo)
+        public async Task<string> GetSampleType2(string palletNo)
         {
-            try
+            var type = "";
+            var detail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
+            if (detail == null)
             {
-                var type = "";
-                var detail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
-                if (detail == null)
-                {
-                    throw new Exception("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
-                }
-
-                var boxInfo = Db.Queryable<DataBoxInfo>().Count(m=>m.IsDel == "0" && m.StockDetailId == detail.Id);
-
-                //鍒ゆ柇鎵樼洏涓婃槸鍚︽湁绠辩爜淇℃伅
-                if (boxInfo > 0)
-                {
-                    type = "0";//鏍囩鍙栨牱
-                }
-                else
-                {
-                    type = "1";//鏁伴噺鍙栨牱
-                }
-                return type;
+                throw Oops.Bah("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
             }
-            catch (Exception e)
+
+            var boxInfo = await Db.Queryable<DataBoxInfo>().CountAsync(m => m.IsDel == "0" && m.StockDetailId == detail.Id);
+
+            //鍒ゆ柇鎵樼洏涓婃槸鍚︽湁绠辩爜淇℃伅
+            if (boxInfo > 0)
             {
-                throw new Exception(e.Message);
+                type = "0";//鏍囩鍙栨牱
             }
+            else
+            {
+                type = "1";//鏁伴噺鍙栨牱
+            }
+            return type;
         }
 
         //鑾峰彇寰呭嚭搴撴垨寰呭彇鏍风殑璇烽獙鍗�
-        public List<string> GetInspectionNo()
+        public async Task<List<string>> GetInspectionNo()
         {
-            try
-            {
-                var data = Db.Queryable<BllQualityInspectionRequest>().Where(m => m.IsDel == "0" && (m.Status == "1" || m.Status == "2")).OrderByDescending(m => m.QcNo).Select(m=>m.QcNo).ToList();
-                return data;
-            }
-            catch (Exception e)
-            {
-                throw new Exception(e.Message);
-            }
+            return await Db.Queryable<BllQualityInspectionRequest>().Where(m => m.IsDel == "0" && (m.Status == "1" || m.Status == "2")).OrderByDescending(m => m.QcNo).Select(m => m.QcNo).ToListAsync();
         }
 
         //鑾峰彇璇烽獙鍗曠浉鍏充俊鎭�
-        public InspectionRequestDto GetInspectionRequestInfo(string qcNo)
+        public async Task<InspectionRequestDto> GetInspectionRequestInfo(string qcNo)
         {
-            try
-            {
-                var data = new InspectionRequestDto();
-                var inspectionRequest = Db.Queryable<BllQualityInspectionRequest>().First(m=>m.IsDel == "0" && m.QcNo == qcNo);
-                var samplingQty = Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).Sum(m=>m.CompleteQty);
+            var data = new InspectionRequestDto();
+            var inspectionRequest = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo);
+            var samplingQty = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).SumAsync(m => m.CompleteQty);
 
-                data.QcNo = qcNo;
-                data.Sku = inspectionRequest.SkuNo;
-                data.LotNo = inspectionRequest.LotNo;
-                data.Qty = inspectionRequest.SamplingQty.ToString();
-                data.SamplingQty = samplingQty == null? "0": samplingQty.ToString();
+            data.QcNo = qcNo;
+            data.Sku = inspectionRequest.SkuNo;
+            data.LotNo = inspectionRequest.LotNo;
+            data.Qty = inspectionRequest.SamplingQty.ToString();
+            data.SamplingQty = samplingQty == null ? "0" : samplingQty.ToString();
 
-                return data;
-            }
-            catch (Exception e)
-            {
-                throw new Exception(e.Message);
-            }
+            return data;
         }
 
         //鍙栨牱鍑哄簱鎷h揣(鏍囩)
-        public void SampleSetPick(string qcNo, string palletNo, string boxNo, string boxNo3, string pickQty, int userId)
+        public async Task SampleSetPick(string qcNo, string palletNo, string boxNo, string boxNo3, string pickQty, int userId)
         {
             try
             {
@@ -3506,20 +3406,20 @@
 
                 if (string.IsNullOrWhiteSpace(qcNo))
                 {
-                    throw new Exception("璇烽獙鍗曟嵁涓嶈兘涓虹┖");
+                    throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖");
                 }
                 if (string.IsNullOrWhiteSpace(palletNo))
                 {
-                    throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
+                    throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�");
                 }
-                var type = GetSampleType2(palletNo);
+                var type = await GetSampleType2(palletNo);
                 if (type != "0")
                 {
-                    throw new Exception("褰撳墠鎵樼洏璇峰湪鏁伴噺椤电鍙栨牱");
+                    throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏁伴噺椤电鍙栨牱");
                 }
                 if (string.IsNullOrEmpty(boxNo))
                 {
-                    throw new Exception("澶栫鏉$爜涓嶈兘涓虹┖");
+                    throw Oops.Bah("澶栫鏉$爜涓嶈兘涓虹┖");
                 }
                 //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty) && int.Parse(pickQty) > 0)
                 //{
@@ -3527,44 +3427,44 @@
                 //}
 
                 //璇烽獙鍗�
-                var inspecd = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.QcNo == qcNo);
+                var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo);
                 if (inspecd == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�");
                 }
                 if (inspecd.Status == "0" || inspecd.Status == "3")
                 {
-                    throw new Exception("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�");
+                    throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�");
                 }
                 //搴撳瓨鏄庣粏淇℃伅
-                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
+                var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
                 if (stockDetail == null)
                 {
-                    throw new Exception("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅");
+                    throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅");
                 }
                 if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo))
                 {
-                    throw new Exception("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄");
+                    throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄");
                 }
                 //绠辨敮淇℃伅 
-                var boxInfoList = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToList();
+                var boxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync();
                 //搴撳瓨鎬昏〃
-                var stock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
+                var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
                 if (stock == null)
                 {
-                    throw new Exception("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�");
                 }
                 //鍏ュ簱鍗�
-                var notice = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo);
+                var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo);
                 if (notice == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�");
                 }
 
                 #endregion
 
                 //鍙栨牱鏄庣粏璁板綍琛�
-                var sampld = Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToList();
+                var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync();
 
                 var isAddSampld = false;
                 var PickType = ""; //0鏁伴噺鎷h揣  1 绠辨敮鎷h揣
@@ -3581,16 +3481,16 @@
                     {
                         if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌鏀爜淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅");
                         }
                         if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1)
                         {
-                            throw new Exception("鏀爜淇℃伅鏁版嵁淇℃伅閿欒锛岃鏍稿疄");
+                            throw Oops.Bah("鏀爜淇℃伅鏁版嵁淇℃伅閿欒锛岃鏍稿疄");
                         }
-                        EditboxInfo = Db.Queryable<DataBoxInfo>().First(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
+                        EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                         if (EditboxInfo.Qty < decimal.Parse(pickQty))
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
                         }
                         isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0;
                     }
@@ -3599,33 +3499,33 @@
 
                         if (boxInfoList.Count == 0)
                         {
-                            throw new Exception("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄");
+                            throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄");
                         }
                         if (boxInfoList.Count > 1)
                         {
-                            throw new Exception("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄");
+                            throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄");
                         }
                         if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0)
                         {
-                            throw new Exception("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�");
+                            throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�");
                         }
-                        EditboxInfo = Db.Queryable<DataBoxInfo>().First(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo);
+                        EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo);
 
                         if (EditboxInfo.Qty < decimal.Parse(pickQty))
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
                         }
                         isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0;
 
                     }
                     if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) > inspecd.SamplingQty)
                     {
-                        throw new Exception("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺");
+                        throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺");
                     }
                     //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺
                     if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < decimal.Parse(pickQty))
                     {
-                        throw new Exception("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�");
+                        throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�");
                     }
                 }
                 else //绠辨敮鎷h揣
@@ -3638,16 +3538,16 @@
 
                         if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0)
                         {
-                            throw new Exception("鏈煡璇㈠埌鏀爜淇℃伅");
+                            throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅");
                         }
                         if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1)
                         {
-                            throw new Exception("鏀爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄");
+                            throw Oops.Bah("鏀爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄");
                         }
-                        EditboxInfoList = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3).ToList();
+                        EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3).ToListAsync();
                         if (EditboxInfoList.Sum(m => m.Qty) + sampld.Sum(m => m.CompleteQty) > inspecd.SamplingQty)
                         {
-                            throw new Exception("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺");
+                            throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺");
                         }
                         qty = EditboxInfoList.Sum(m => m.Qty);
                         //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0;
@@ -3657,32 +3557,32 @@
 
                         if (boxInfoList.Count == 0)
                         {
-                            throw new Exception("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄");
+                            throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄");
                         }
                         if (boxInfoList.Count > 1)
                         {
-                            throw new Exception("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄");
+                            throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄");
                         }
                         if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0)
                         {
-                            throw new Exception("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�");
+                            throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�");
                         }
-                        EditboxInfoList = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToList();
+                        EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync();
 
                         if (EditboxInfo.Qty < decimal.Parse(pickQty))
                         {
-                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
                         }
                         qty = EditboxInfoList.Sum(m => m.Qty);
                         //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0;
                     }
                     if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty)
                     {
-                        throw new Exception("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺");
+                        throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺");
                     }
                     if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty)
                     {
-                        throw new Exception("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�");
+                        throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�");
                     }
                 }
                 #endregion
@@ -3700,24 +3600,24 @@
 
                     //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏
                     //{
-                        var sampleDetail = new BllSamplingDetails()
-                        {
-                            QcNo = qcNo,
-                            ASNNo = inspecd.ASNNo,
-                            PalletNo = palletNo,
-                            BoxNo = boxInfo.BoxNo,
-                            BoxNo2 = boxInfo.BoxNo2,
-                            BoxNo3 = boxInfo.BoxNo3,
-                            SkuNo = boxInfo.SkuNo,
-                            SkuName = boxInfo.SkuName,
-                            Standard = boxInfo.Standard,
-                            LotNo = boxInfo.LotNo,
-                            SupplierLot = boxInfo.SupplierLot,
-                            CompleteQty = decimal.Parse(pickQty),
-                            CreateTime = DateTime.Now,
-                            CreateUser = userId
-                        };
-                        Db.Insertable(sampleDetail).ExecuteCommand();
+                    var sampleDetail = new BllSamplingDetails()
+                    {
+                        QcNo = qcNo,
+                        ASNNo = inspecd.ASNNo,
+                        PalletNo = palletNo,
+                        BoxNo = boxInfo.BoxNo,
+                        BoxNo2 = boxInfo.BoxNo2,
+                        BoxNo3 = boxInfo.BoxNo3,
+                        SkuNo = boxInfo.SkuNo,
+                        SkuName = boxInfo.SkuName,
+                        Standard = boxInfo.Standard,
+                        LotNo = boxInfo.LotNo,
+                        SupplierLot = boxInfo.SupplierLot,
+                        CompleteQty = decimal.Parse(pickQty),
+                        CreateTime = DateTime.Now,
+                        CreateUser = userId
+                    };
+                    Db.Insertable(sampleDetail).ExecuteCommand();
                     //}
                     //else
                     //{
@@ -3742,7 +3642,7 @@
                     {
                         item.BitBoxMark = "1";
                         item.InspectMark = "1";
-                            
+
                         if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0)
                         {
                             if (item.ProductionTime != null)
@@ -3757,7 +3657,7 @@
 
                     }
                     Db.Updateable(boxInfoList).ExecuteCommand();
-                    
+
                     //搴撳瓨绠辩爜
                     boxInfo.Qty -= decimal.Parse(pickQty);
                     if (boxInfo.Qty == 0)
@@ -3830,24 +3730,24 @@
 
                         //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏
                         //{
-                            var sampleDetail = new BllSamplingDetails()
-                            {
-                                QcNo = qcNo,
-                                ASNNo = inspecd.ASNNo,
-                                PalletNo = palletNo,
-                                BoxNo = boxInfo.BoxNo,
-                                BoxNo2 = boxInfo.BoxNo2,
-                                BoxNo3 = boxInfo.BoxNo3,
-                                SkuNo = boxInfo.SkuNo,
-                                SkuName = boxInfo.SkuName,
-                                Standard = boxInfo.Standard,
-                                LotNo = boxInfo.LotNo,
-                                SupplierLot = boxInfo.SupplierLot,
-                                CompleteQty = boxInfo.Qty,
-                                CreateTime = DateTime.Now,
-                                CreateUser = userId
-                            };
-                            Db.Insertable(sampleDetail).ExecuteCommand();
+                        var sampleDetail = new BllSamplingDetails()
+                        {
+                            QcNo = qcNo,
+                            ASNNo = inspecd.ASNNo,
+                            PalletNo = palletNo,
+                            BoxNo = boxInfo.BoxNo,
+                            BoxNo2 = boxInfo.BoxNo2,
+                            BoxNo3 = boxInfo.BoxNo3,
+                            SkuNo = boxInfo.SkuNo,
+                            SkuName = boxInfo.SkuName,
+                            Standard = boxInfo.Standard,
+                            LotNo = boxInfo.LotNo,
+                            SupplierLot = boxInfo.SupplierLot,
+                            CompleteQty = boxInfo.Qty,
+                            CreateTime = DateTime.Now,
+                            CreateUser = userId
+                        };
+                        await Db.Insertable(sampleDetail).ExecuteCommandAsync();
                         //}
                         //else
                         //{
@@ -3866,8 +3766,8 @@
                         #region 淇敼搴撳瓨涓夎〃
 
                         //鎷嗗寘鏈夋晥鏈熸洿鏀�
-                        var unpackWarranty = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo).UnpackWarranty;
-                        
+                        var unpackWarranty = (await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo)).UnpackWarranty;
+
                         foreach (var item in boxInfoList)
                         {
                             item.BitBoxMark = "1";
@@ -3884,31 +3784,31 @@
                                 }
                             }
                         }
-                        Db.Updateable(boxInfoList).ExecuteCommand();
+                        await Db.Updateable(boxInfoList).ExecuteCommandAsync();
 
                         //搴撳瓨绠辩爜
 
-                        Db.Deleteable(boxInfo).ExecuteCommand();
+                        await Db.Deleteable(boxInfo).ExecuteCommandAsync();
 
                         //搴撳瓨鏄庣粏
                         stockDetail.Qty -= boxInfo.Qty;
                         if (stockDetail.Qty == 0)
                         {
-                            Db.Deleteable(stockDetail).ExecuteCommand();
+                            await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                         }
                         else
                         {
-                            Db.Updateable(stockDetail).ExecuteCommand();
+                            await Db.Updateable(stockDetail).ExecuteCommandAsync();
                         }
                         //搴撳瓨鎬昏〃
                         stock.Qty -= boxInfo.Qty;
                         if (stock.Qty == 0)
                         {
-                            Db.Deleteable(stock).ExecuteCommand();
+                            await Db.Deleteable(stock).ExecuteCommandAsync();
                         }
                         else
                         {
-                            Db.Updateable(stock).ExecuteCommand();
+                            await Db.Updateable(stock).ExecuteCommandAsync();
                         }
 
                         #endregion
@@ -3918,12 +3818,12 @@
                         //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬�
                         if (notice.Status != "4")
                         {
-                            var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
+                            var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
                             if (noticeDetail.IsSampling == "0")
                             {
                                 noticeDetail.IsSampling = "1";
 
-                                Db.Updateable(noticeDetail).ExecuteCommand();
+                                await Db.Updateable(noticeDetail).ExecuteCommandAsync();
                             }
 
                         }
@@ -3941,7 +3841,7 @@
                         inspecd.Status = "3";
                     }
 
-                    Db.Updateable(inspecd).ExecuteCommand();
+                    await Db.Updateable(inspecd).ExecuteCommandAsync();
                     #endregion
                 }
 
@@ -3955,13 +3855,12 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                throw new Exception(e.Message);
             }
         }
 
 
         //鍙栨牱鍑哄簱鎷h揣(鏁伴噺)
-        public void SampleSetQtyPick(string qcNo, string palletNo, string pickQty, int userId)
+        public async Task SampleSetQtyPick(string qcNo, string palletNo, string pickQty, int userId)
         {
             try
             {
@@ -3969,77 +3868,77 @@
 
                 if (string.IsNullOrWhiteSpace(qcNo))
                 {
-                    throw new Exception("璇烽獙鍗曟嵁涓嶈兘涓虹┖");
+                    throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖");
                 }
                 if (string.IsNullOrWhiteSpace(palletNo))
                 {
-                    throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
+                    throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�");
                 }
-                var type = GetSampleType2(palletNo);
+                var type = await GetSampleType2(palletNo);
                 if (type != "1")
                 {
-                    throw new Exception("褰撳墠鎵樼洏璇峰湪鏍囩椤电鍙栨牱");
+                    throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏍囩椤电鍙栨牱");
                 }
                 if (string.IsNullOrWhiteSpace(pickQty))
                 {
-                    throw new Exception("鎷h揣鏁伴噺涓嶈兘涓虹┖");
+                    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘涓虹┖");
                 }
                 if (decimal.Parse(pickQty) <= 0)
                 {
-                    throw new Exception("鎷h揣鏁伴噺涓嶈兘灏忎簬绛変簬0");
+                    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘灏忎簬绛変簬0");
                 }
 
                 //璇烽獙鍗�
-                var inspecd = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.QcNo == qcNo);
+                var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo);
                 if (inspecd == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�");
                 }
                 if (inspecd.Status == "0" || inspecd.Status == "3")
                 {
-                    throw new Exception("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�");
+                    throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�");
                 }
                 //搴撳瓨鏄庣粏淇℃伅
-                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
+                var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
                 if (stockDetail == null)
                 {
-                    throw new Exception("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅");
+                    throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅");
                 }
                 if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo))
                 {
-                    throw new Exception("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄");
+                    throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄");
                 }
                 //搴撳瓨鎬昏〃
-                var stock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
+                var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
                 if (stock == null)
                 {
-                    throw new Exception("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�");
                 }
                 //鍏ュ簱鍗�
-                var notice = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo);
+                var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo);
                 if (notice == null)
                 {
-                    throw new Exception("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�");
+                    throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�");
                 }
 
                 #endregion
 
                 //鍙栨牱鏄庣粏璁板綍琛�
-                var sampld = Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo ).ToList();
+                var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync();
                 var qty = decimal.Parse(pickQty);
                 //var isAddSampld = sampld.Count(m => m.PalletNo == palletNo) == 0; 
-                  
+
 
                 #region 鍒ゆ柇鏁伴噺
 
                 if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty)
                 {
-                    throw new Exception("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺");
+                    throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺");
                 }
                 //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺
                 if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty)
                 {
-                    throw new Exception("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�");
+                    throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�");
                 }
 
 
@@ -4047,25 +3946,25 @@
 
                 #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁�
 
-                Db.BeginTran();     
+                Db.BeginTran();
 
                 //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏
                 //{
-                    var sampleDetail = new BllSamplingDetails()
-                    {
-                        QcNo = qcNo,
-                        ASNNo = inspecd.ASNNo,
-                        PalletNo = palletNo,
-                        SkuNo = stockDetail.SkuNo,
-                        SkuName = stockDetail.SkuName,
-                        Standard = stockDetail.Standard,
-                        LotNo = stockDetail.LotNo,
-                        SupplierLot = stockDetail.SupplierLot,
-                        CompleteQty = qty,
-                        CreateTime = DateTime.Now,
-                        CreateUser = userId
-                    };
-                    Db.Insertable(sampleDetail).ExecuteCommand();
+                var sampleDetail = new BllSamplingDetails()
+                {
+                    QcNo = qcNo,
+                    ASNNo = inspecd.ASNNo,
+                    PalletNo = palletNo,
+                    SkuNo = stockDetail.SkuNo,
+                    SkuName = stockDetail.SkuName,
+                    Standard = stockDetail.Standard,
+                    LotNo = stockDetail.LotNo,
+                    SupplierLot = stockDetail.SupplierLot,
+                    CompleteQty = qty,
+                    CreateTime = DateTime.Now,
+                    CreateUser = userId
+                };
+                await Db.Insertable(sampleDetail).ExecuteCommandAsync();
                 //}
                 //else
                 //{
@@ -4084,24 +3983,24 @@
                 stockDetail.Qty -= qty;
                 if (stockDetail.Qty == 0)
                 {
-                    Db.Deleteable(stockDetail).ExecuteCommand();
+                    await Db.Deleteable(stockDetail).ExecuteCommandAsync();
                 }
                 else
                 {
                     stockDetail.BitPalletMark = "1";
                     stockDetail.InspectMark = "1";
 
-                    Db.Updateable(stockDetail).ExecuteCommand();
+                    await Db.Updateable(stockDetail).ExecuteCommandAsync();
                 }
                 //搴撳瓨鎬昏〃
                 stock.Qty -= qty;
                 if (stock.Qty == 0)
                 {
-                    Db.Deleteable(stock).ExecuteCommand();
+                    await Db.Deleteable(stock).ExecuteCommandAsync();
                 }
                 else
                 {
-                    Db.Updateable(stock).ExecuteCommand();
+                    await Db.Updateable(stock).ExecuteCommandAsync();
                 }
 
                 #endregion
@@ -4111,12 +4010,12 @@
                 //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬�
                 if (notice.Status != "4")
                 {
-                    var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
+                    var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo);
                     if (noticeDetail.IsSampling == "0")
                     {
                         noticeDetail.IsSampling = "1";
 
-                        Db.Updateable(noticeDetail).ExecuteCommand();
+                        await Db.Updateable(noticeDetail).ExecuteCommandAsync();
                     }
 
                 }
@@ -4131,9 +4030,9 @@
                 {
                     inspecd.Status = "3";
                 }
-                Db.Updateable(inspecd).ExecuteCommand();
+                await Db.Updateable(inspecd).ExecuteCommandAsync();
                 #endregion
-                 
+
 
 
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
@@ -4143,7 +4042,6 @@
             catch (Exception e)
             {
                 Db.RollbackTran();
-                throw new Exception(e.Message);
             }
         }
 

--
Gitblit v1.8.0