From a9513fe0529abf7d63a955b83a4e784ce531be4b Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期三, 10 九月 2025 08:58:25 +0800
Subject: [PATCH] PDA AGV转运功能增加货架库到平库转运

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |  106 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 67 insertions(+), 39 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 0b84754..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";
@@ -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");
                 //楠岃瘉搴撳瓨鎬昏〃鏄惁涓虹┖
@@ -3859,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")
                     {
@@ -3872,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";
@@ -3895,6 +3919,10 @@
                     }
                     stock.Qty -= pickQty;
                     stock.LockQty -= pickQty;
+                    if (stock.LockQty < 0)
+                    {
+                        stock.LockQty = 0;
+                    }
                     stock.IsSampling = "1";
                     if (stock.Qty <= 0)
                     {
@@ -4327,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();
@@ -4652,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();
 
@@ -4863,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")
                     {
@@ -5187,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