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 | 140 +++++++++++++++++++++++++++++----------------- 1 files changed, 89 insertions(+), 51 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index ad3c91d..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"; @@ -2728,10 +2748,8 @@ else { stockDetail.Status = "0"; - } - //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂� - var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != stockDetail.Id); - if (stockDetail.Qty <= 0 && palletData == null) + } + if (stockDetail.Qty <= 0) { await Db.Deleteable(stockDetail).ExecuteCommandAsync(); } @@ -2760,7 +2778,9 @@ } //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣� - if (isDel == 0) + //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂� + var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != stockDetail.Id); + if (isDel == 0 && palletData == null) { pallet.Status = "0"; await Db.Updateable(pallet).ExecuteCommandAsync(); @@ -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