From f0d4bb3d0d6fe09c49a23bcfdac17fb9386eb346 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期三, 03 九月 2025 16:13:55 +0800
Subject: [PATCH] 修改问题

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |  130 ++++++++++++++++++++++++++++---------------
 1 files changed, 84 insertions(+), 46 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 7bb5981..9cfa5f7 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -216,10 +216,10 @@
                         throw Oops.Bah("璇ユ墭鐩樹笂娌℃湁鍙嫞璐х殑绠卞瓙");
                     }
                     var boxQty = await boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
-                    if (boxQty[0] > needQty)
-                    {
-                        throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
-                    }
+                    //if (boxQty[0] > needQty)
+                    //{
+                    //    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                    //}
 
                     var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
                     var comList = new List<BllCompleteDetail>();
@@ -273,7 +273,7 @@
                     await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
                     await Db.Updateable(allot).ExecuteCommandAsync();
 
@@ -337,10 +337,10 @@
                         throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                     }
                     var boxQty = await boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
-                    if (boxQty[0] > needQty)
-                    {
-                        throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
-                    }
+                    //if (boxQty[0] > needQty)
+                    //{
+                    //    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                    //}
                     
                     foreach (var item in boxInfos)
                     {
@@ -396,7 +396,7 @@
                     await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
                     
                     await Db.Updateable(allot).ExecuteCommandAsync();
@@ -405,6 +405,10 @@
                     stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
                     stockDetail.Qty -= pickQty;
                     stockDetail.LockQty -= pickQty;
+                    if (stockDetail.LockQty < 0)
+                    {
+                        stockDetail.LockQty = 0;
+                    }
                     stockDetail.UDF5 = "1";
                     if (stockDetail.Qty == stockDetail.LockQty)
                     {
@@ -731,7 +735,7 @@
 
                 //淇敼鍑哄簱鍒嗛厤淇℃伅
                 allot.CompleteQty += int.Parse(PickQty);
-                allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                 allot.UpdateTime = DateTime.Now;
                 await Db.Updateable(allot).ExecuteCommandAsync();
 
@@ -2183,7 +2187,7 @@
                 {
                     throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
                 }
-                if (notice.Status != "3")
+                if (notice.Status != "3" && notice.Status != "4")
                 {
                     throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                 }
@@ -2196,7 +2200,7 @@
                 }
                 //鍑哄簱鍒嗛厤淇℃伅
                 var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
-                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
+                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.SONo == soNo &&
                     m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                 if (allot == null)
                 {
@@ -2278,7 +2282,7 @@
                     await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
                     await Db.Updateable(allot).ExecuteCommandAsync();
                     //鍒犻櫎搴撳瓨鏄庣粏
@@ -2286,6 +2290,10 @@
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛�
                     stock.Qty -= pickQty;
                     stock.LockQty -= pickQty;
+                    if (stock.LockQty < 0)
+                    {
+                        stock.LockQty = 0;
+                    }
                     if (stock.Qty <= 0)
                     {
                         await Db.Deleteable(stock).ExecuteCommandAsync();
@@ -2367,10 +2375,10 @@
                             throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
                         var boxQty = boxInfos.First().Qty;
-                        if (boxQty > needQty)
-                        {
-                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
-                        }
+                        //if (boxQty > needQty)
+                        //{
+                        //    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                        //}
 
                         foreach (var item in boxInfos)
                         {
@@ -2393,10 +2401,10 @@
                         {
                             throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
                         }
-                        if (Convert.ToInt32(pickQty1) > needQty)
-                        {
-                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
-                        }
+                        //if (Convert.ToInt32(pickQty1) > needQty)
+                        //{
+                        //    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                        //}
 
                         biaoShi = "2";
                     }
@@ -2411,10 +2419,10 @@
                             throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
                         }
                         var boxQty = await boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
-                        if (boxQty[0] > needQty)
-                        {
-                            throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
-                        }
+                        //if (boxQty[0] > needQty)
+                        //{
+                        //    throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                        //}
 
                         foreach (var item in boxInfos)
                         {
@@ -2488,7 +2496,7 @@
                     await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
                     if (allot.Status == "5")
                     {
@@ -2500,6 +2508,10 @@
                     stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
                     stockDetail.Qty -= pickQty;
                     stockDetail.LockQty -= pickQty;
+                    if (stockDetail.LockQty < 0)
+                    {
+                        stockDetail.LockQty = 0;
+                    }
                     if (stockDetail.Qty == stockDetail.LockQty)
                     {
                         stockDetail.Status = "2";
@@ -2523,6 +2535,10 @@
                     }
                     stock.Qty -= pickQty;
                     stock.LockQty -= pickQty;
+                    if (stock.LockQty < 0)
+                    {
+                        stock.LockQty = 0;
+                    }
                     if (stock.Qty <= 0)
                     {
                         await Db.Deleteable(stock).ExecuteCommandAsync();
@@ -2576,10 +2592,10 @@
                 var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鍑哄簱", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
                 Db.CommitTran();
             }
-            catch (AppFriendlyException e)
-            {
-                Db.RollbackTran();
-            }
+            //catch (AppFriendlyException e)
+            //{
+            //    Db.RollbackTran();
+            //}
             catch (Exception e)
             {
                 Db.RollbackTran();
@@ -2627,7 +2643,7 @@
                 }
                 //鍑哄簱鍒嗛厤淇℃伅
                 var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
-                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
+                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.SONo == soNo &&
                     m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                 if (allot == null)
                 {
@@ -2707,7 +2723,7 @@
 
                 //淇敼鍑哄簱鍒嗛厤淇℃伅
                 allot.CompleteQty += int.Parse(PickQty);
-                allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                 allot.UpdateTime = DateTime.Now;
                 await Db.Updateable(allot).ExecuteCommandAsync();
 
@@ -2717,6 +2733,10 @@
                 stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
                 stockDetail.Qty -= int.Parse(PickQty);
                 stockDetail.LockQty -= int.Parse(PickQty);
+                if (stockDetail.LockQty < 0)
+                {
+                    stockDetail.LockQty = 0;
+                }
                 if (stockDetail.Qty == stockDetail.LockQty)
                 {
                     stockDetail.Status = "2";
@@ -2822,8 +2842,8 @@
                 //鑾峰彇褰撳墠鏃堕棿
                 DateTime serverTime = Db.GetDate();
                 //鑾峰彇搴撳瓨鏄庣粏鏄惁灏忎簬绛変簬璇ュ灈鏁�
-                 
-                var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0" && !string.IsNullOrWhiteSpace(s.WareHouseNo)).ToListAsync();
+
+                var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0" && s.WareHouseNo == "W02").ToListAsync();
                 if (stockDetail.Count > 0)
                 {
                     //鍒ゆ柇鏄惁澶т簬闇�瑕佸灈鏁�
@@ -2832,7 +2852,7 @@
                         throw Oops.Bah("闇�瑕佸灈鏁板ぇ浜庡簱瀛樺灈鏁帮紝璇烽噸鏂拌緭鍏�!");
                     }
                 }
-                stockDetail = new AllotSku().GetDataListOrder(stockDetail);
+                //stockDetail = new AllotSku().GetDataListOrder(stockDetail);
                 //鑾峰彇搴撳瓨鎬昏〃淇℃伅
                 var stock = await Db.Queryable<DataStock>().FirstAsync(s => s.IsDel == "0" && s.SkuNo == "100099");
                 //楠岃瘉搴撳瓨鎬昏〃鏄惁涓虹┖
@@ -2840,16 +2860,26 @@
                 {
                     throw Oops.Bah("搴撳瓨淇℃伅涓嶅瓨鍦紝璇锋牳鏌�!");
                 }
-
+                //鐩爣鍌ㄤ綅淇℃伅
+                var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.OutMode);
+                if (endLocat == null)
+                {
+                    throw Oops.Bah("搴撳瓨淇℃伅涓嶅瓨鍦紝璇锋牳鏌�!");
+                }
+                //if (endLocat.Status != "0")
+                //{
+                //    throw Oops.Bah("鐩爣鍌ㄤ綅涓嶆槸绌哄偍浣嶏紝璇锋牳鏌�!");
+                //}
                 int i = 0;
 
+                //寮�鍚簨鍔�
                 Db.BeginTran();
 
                 //閬嶅巻搴撳瓨淇℃伅 
                 foreach (var s in stockDetail)
                 {
                     //鑾峰彇鍌ㄤ綅淇℃伅
-                    var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && (l.WareHouseNo == "W01"||l.WareHouseNo == "W02"));
+                    var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W02");
 
                     if (locat == null)
                     {
@@ -2863,7 +2893,7 @@
                     locat.Status = "3"; //3 鍑哄簱涓�
                     locat.UpdateTime = serverTime; //淇敼鏃堕棿
                     locat.UpdateUser = userId; //淇敼浜�
-                                               //淇敼鍌ㄤ綅淇℃伅
+                    //淇敼鍌ㄤ綅淇℃伅
                     await Db.Updateable(locat).ExecuteCommandAsync();
 
                     //澧炲姞搴撳瓨閿佸畾鏁伴噺
@@ -2908,7 +2938,7 @@
                         Status = "1",
                         LogisticsId = 0,
                         IsAdvance = "0",
-                        OutMode = model.OutMode,//鍑哄簱鍙�
+                        OutMode = model.OutMode,//鍑哄簱鐩爣鍌ㄤ綅
 
                         CreateUser = userId,
                         CreateTime = DateTime.Now
@@ -2959,7 +2989,7 @@
                         EndRoadway = endroad,
 
                         Order = 999,
-                        Type = locat.WareHouseNo == "W01"?PLCTypeEnum.ShuttleCar : PLCTypeEnum.AGV
+                        Type = PLCTypeEnum.AGV,//locat.WareHouseNo == "W01"?PLCTypeEnum.ShuttleCar : PLCTypeEnum.AGV
                     });
                     await Db.Insertable(exTask).ExecuteCommandAsync();
 
@@ -3849,7 +3879,7 @@
                     await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
                     if (allot.Status == "5")
                     {
@@ -3862,6 +3892,10 @@
                     stockDetail.InspectMark = "1"; //鎶芥鎵樻爣璇�
                     stockDetail.Qty -= pickQty;
                     stockDetail.LockQty -= pickQty;
+                    if (stockDetail.LockQty < 0)
+                    {
+                        stockDetail.LockQty = 0;
+                    }
                     if (stockDetail.Qty == stockDetail.LockQty)
                     {
                         stockDetail.Status = "2";
@@ -3885,6 +3919,10 @@
                     }
                     stock.Qty -= pickQty;
                     stock.LockQty -= pickQty;
+                    if (stock.LockQty < 0)
+                    {
+                        stock.LockQty = 0;
+                    }
                     stock.IsSampling = "1";
                     if (stock.Qty <= 0)
                     {
@@ -4317,7 +4355,7 @@
 
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += int.Parse(PickQty);
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
 
                     allot.UpdateTime = DateTime.Now;
                     await Db.Updateable(allot).ExecuteCommandAsync();
@@ -4642,7 +4680,7 @@
                     await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
                     await Db.Updateable(allot).ExecuteCommandAsync();
 
@@ -4853,7 +4891,7 @@
                     await Db.Insertable(comList).ExecuteCommandAsync();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                     allot.UpdateTime = DateTime.Now;
                     if (allot.Status == "5")
                     {
@@ -5177,7 +5215,7 @@
 
                 //淇敼鍑哄簱鍒嗛厤淇℃伅
                 allot.CompleteQty += int.Parse(PickQty);
-                allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                 allot.UpdateTime = DateTime.Now;
                 await Db.Updateable(allot).ExecuteCommandAsync();
 

--
Gitblit v1.8.0