From c5ba5ced45cddbe2fb4964dddc620f8fcecce6af Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期三, 17 九月 2025 17:54:24 +0800 Subject: [PATCH] 修改PDA组托收货功能 --- Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 812 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 741 insertions(+), 71 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index bdd23ce..f6c348e 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -92,7 +92,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) { @@ -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(); @@ -322,7 +322,7 @@ else { List<DataBoxInfo> boxInfos; - var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo); + var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo && m.Status == "2"); if (await boxInfo.CountAsync() == 0) { throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅"); @@ -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(); @@ -1475,7 +1479,7 @@ } } - //杞﹂棿pda鎷h揣 + //杞﹂棿pda鎷h揣 - 鏍囩 public async Task ChejianPick(string palletNo, string boxNo, int userId) { Db.BeginTran(); @@ -1489,7 +1493,7 @@ } if (string.IsNullOrEmpty(boxNo)) { - throw Oops.Bah("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�"); + throw Oops.Bah("绠辩爜涓嶅彲涓虹┖"); } //绠辩爜鏄庣粏 @@ -1502,26 +1506,37 @@ boxInfos = await boxInfo.ToListAsync(); //搴撳瓨鏄庣粏 - var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == boxInfos.First().SkuNo && m.LotNo == boxInfos.First().LotNo); + var stockDetail = await Db.Queryable<DataStockDetail>() + .FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo + && m.SkuNo == boxInfos.First().SkuNo && m.LotNo == boxInfos.First().LotNo); if (stockDetail == null) { throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�"); } + string lotNpstr = boxInfos.First().LotNo; + string skuNo = boxInfos.First().SkuNo; + string skuName = boxInfos.First().SkuName; + + // 楠岃瘉鏄惁杞﹂棿绾胯竟浠撳簱 var areaList = new List<string>() { "B06", "B07", "B09" }; if (!areaList.Contains(stockDetail.AreaNo)) { throw Oops.Bah("鎵樼洏涓嶆槸杞﹂棿鎵樼洏锛�"); } + //搴撳瓨鎬昏〃 - var stock = await Db.Queryable<DataStock>().FirstAsync(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 Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�"); } #endregion - var pickQty = boxInfos.Sum(m => m.Qty); + + // 鍒犻櫎绠变换鍔� + await Db.Deleteable(boxInfos).ExecuteCommandAsync(); //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� @@ -1558,6 +1573,7 @@ { await Db.Updateable(stock).ExecuteCommandAsync(); } + var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo); if (num2 <= 0) { @@ -1570,9 +1586,179 @@ pallet.Status = "0"; await Db.Updateable(pallet).ExecuteCommandAsync(); } - + + #region 鎻掑叆杞﹂棿鍑哄叆搴撹褰曡〃 + //鎻掑叆鍏ュ簱鏃ュ織 + var _log = new LogWorkShop + { + Type = "1",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴� + PalletNo = palletNo, + BoxNo = boxNo, + LotNo = lotNpstr, + SkuNo = skuNo, + SkuName = skuName, + Qty = pickQty + }; + // 鎻掑叆杞﹂棿鍑哄簱璁板綍 + Db.Insertable(_log).ExecuteCommand(); + #endregion + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱", boxNo, "鎷h揣", $"鍦≒DA涓婂绠卞彿涓猴細{boxNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱", + boxNo, "鍑哄簱", $"鍦≒DA涓婂绠卞彿涓猴細{boxNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); + Db.CommitTran(); + } + catch (AppFriendlyException e) + { + Db.RollbackTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + // 杞﹂棿Pda鎷h揣-鏁伴噺 + public async Task ChejianPickNum(PdaSoVm model, int userId) + { + Db.BeginTran(); + try + { + #region 鍒ゆ柇 + + if (string.IsNullOrWhiteSpace(model.PalletNo)) + { + throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�"); + } + if (string.IsNullOrWhiteSpace(model.SkuNo)) + { + throw Oops.Bah("鐗╂枡缂栫爜涓嶈兘涓虹┖"); + } + + decimal skuNum = 0; + if (string.IsNullOrEmpty(model.PickQty)) + { + throw Oops.Bah("鐗╂枡鏁伴噺涓嶅彲涓簄ull"); + } + else + { + skuNum = decimal.Parse(model.PickQty); + if (skuNum <= 0) + { + throw Oops.Bah("鐗╂枡鏁伴噺搴斿ぇ浜�0锛�"); + } + } + + // 鍒ゆ柇鏄惁璐存爣鐗╂枡 + var skuModel = await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == model.SkuNo); + if (skuModel == null) + { + throw Oops.Bah("鐗╂枡涓嶅瓨鍦紝璇锋鏌ョ墿鏂欑紪鐮佹槸鍚︽嫰鍗达紒"); + } + else + { + if (skuModel.IsPasteCode != "0") + { + throw Oops.Bah("璇ョ墿鏂欎负璐存爣鐗╂枡锛岃鍒版爣绛鹃〉闈㈡嫞璐э紒"); + } + } + + + //搴撳瓨鏄庣粏 + var stockDetail = await Db.Queryable<DataStockDetail>() + .FirstAsync(m => m.IsDel == "0" && m.PalletNo == model.PalletNo + && m.SkuNo == model.SkuNo && m.LotNo == model.LotNo); + if (stockDetail == null) + { + throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樹笂璐х墿鐨勫簱瀛樻槑缁嗕俊鎭紒"); + } + + // 楠岃瘉鏄惁杞﹂棿绾胯竟浠撳簱 + var areaList = new List<string>() { "B06", "B07", "B09" }; + if (!areaList.Contains(stockDetail.AreaNo)) + { + throw Oops.Bah("鎵樼洏涓嶆槸杞﹂棿鎵樼洏锛�"); + } + + //搴撳瓨鎬昏〃 + var stock = await Db.Queryable<DataStock>() + .FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); + if (stock == null) + { + throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樹笂璐х墿鐨勫簱瀛樹俊鎭紒"); + } + #endregion + + var pickQty = skuNum; + + //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� + stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� + stockDetail.Qty -= pickQty; + if (stockDetail.Qty == stockDetail.LockQty) + { + stockDetail.Status = "2"; + } + else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0) + { + stockDetail.Status = "1"; + } + else + { + stockDetail.Status = "0"; + } + + if (stockDetail.Qty <= 0) + { + await Db.Deleteable(stockDetail).ExecuteCommandAsync(); + } + else + { + await Db.Updateable(stockDetail).ExecuteCommandAsync(); + } + stock.Qty -= pickQty; + if (stock.Qty <= 0) + { + await Db.Deleteable(stock).ExecuteCommandAsync(); + } + else + { + await Db.Updateable(stock).ExecuteCommandAsync(); + } + + var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); + if (num2 <= 0) + { + //鏀瑰彉鎵樼洏鐘舵�� + var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == model.PalletNo && m.IsDel == "0"); + if (pallet == null) + { + throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + } + pallet.Status = "0"; + await Db.Updateable(pallet).ExecuteCommandAsync(); + } + + #region 鎻掑叆杞﹂棿鍑哄叆搴撹褰曡〃 + // 鍒涘缓瀹炰綋 + var _log = new LogWorkShop + { + Type = "1",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴� + PalletNo = model.PalletNo, + BoxNo = "", + LotNo = model.LotNo, + SkuNo = skuModel.SkuNo, + SkuName = skuModel.SkuName, + Qty = pickQty + }; + // 鎻掑叆杞﹂棿鍑哄簱璁板綍 + Db.Insertable(_log).ExecuteCommand(); + #endregion + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱", + skuModel.SkuName, "鎷h揣", $"鍦≒DA杞﹂棿鍑哄簱椤典笂瀵癸細锛歿skuModel.SkuName}鐨勭墿鏂欒繘琛屾嫞璐ф搷浣�", userId); Db.CommitTran(); } catch (AppFriendlyException e) @@ -1666,7 +1852,7 @@ 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 allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && 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(); //鑾峰彇鍑哄簱鍗曟嵁涓嶄负寰呮嫞璐� 鎵ц瀹屾瘯 璁㈠崟鍏抽棴 绛夊緟鎵ц鐨勫崟鎹� @@ -1741,7 +1927,7 @@ throw Oops.Bah("鎵樼洏鐮佷负绌猴紝璇疯緭鍏ユ墭鐩樼爜"); } //鑾峰彇鐘舵�佷负寰呮嫞璐ф垨鑰呴儴鍒嗘嫞璐х殑鍑哄簱鍗� - 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.Status == "2" || m.Status == "3" || m.Status == "5") && 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)) { @@ -1763,7 +1949,7 @@ //鑾峰彇鍑哄簱鍙c�佽鏍笺�佸緟鎷e強宸叉嫞鏁伴噺锛堟牴鎹嚭搴撳崟鏄庣粏ID銆佹墭鐩樺彿锛� public async Task<OutPdaInfo> GetOutlets(string soDetailId, string palletNo) { - 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(); + 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" || m.Status == "5")).ToListAsync(); if (allotInfo.Count == 0) { throw Oops.Bah($"{palletNo}鎵樼洏涓婃湭鏌ヨ鍒板垎閰嶄俊鎭紝璇锋牳瀹�"); @@ -1847,7 +2033,7 @@ } 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(); + 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" || m.Status == "5")).ToListAsync(); if (allotInfos.Count == 0) { throw Oops.Bah($"{palletNo}鎵樼洏涓婃湭鏌ヨ鍒板垎閰嶄俊鎭紝璇锋牳瀹�"); @@ -2001,7 +2187,7 @@ { throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�"); } - if (notice.Status != "3") + if (notice.Status != "3" && notice.Status != "4") { throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣"); } @@ -2014,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) { @@ -2040,7 +2226,7 @@ if (string.IsNullOrWhiteSpace(boxNo))//鏁存墭鎷h揣 { List<DataBoxInfo> boxInfos; - var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo);//鎵惧埌鎵樼洏涓婃墍鏈夌鐮� + var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);//鎵惧埌鎵樼洏涓婃墍鏈夌鐮� boxInfos = await boxInfo.ToListAsync(); if (boxInfo.Count() <= 0) { @@ -2096,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(); //鍒犻櫎搴撳瓨鏄庣粏 @@ -2104,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(); @@ -2112,14 +2302,20 @@ { await Db.Updateable(stock).ExecuteCommandAsync(); } - //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤 - var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); - if (pallet == null) + //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂� + var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != stockDetail.Id); + if (palletData == null) { - throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤 + var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); + if (pallet == null) + { + throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + } + pallet.Status = "0"; + await Db.Updateable(pallet).ExecuteCommandAsync(); } - pallet.Status = "0"; - await Db.Updateable(pallet).ExecuteCommandAsync(); + //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� noticeDetail.CompleteQty += pickQty; await Db.Updateable(noticeDetail).ExecuteCommandAsync(); @@ -2179,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) { @@ -2205,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"; } @@ -2223,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) { @@ -2300,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") { @@ -2312,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"; @@ -2335,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(); @@ -2388,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(); @@ -2399,6 +2603,451 @@ } } + //public async Task SoSetPick34(string soNo, string soDetailId, string palletNo, string boxNo, string pickQty1, int userId) + //{ + // Db.BeginTran(); + // try + // { + // #region 鍒ゆ柇 + + // if (string.IsNullOrWhiteSpace(soNo)) + // { + // throw Oops.Bah("鍑哄簱鍗曟嵁涓嶈兘涓虹┖"); + // } + // if (string.IsNullOrWhiteSpace(soDetailId)) + // { + // throw Oops.Bah("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖"); + // } + // if (string.IsNullOrWhiteSpace(palletNo)) + // { + // throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�"); + // } + // //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0) + // //{ + // // throw Oops.Bah("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�"); + // //} + + // //鍑哄簱鍗� + // var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.SONo == soNo); + // if (notice == null) + // { + // throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�"); + // } + // if (notice.Status != "3" && notice.Status != "4") + // { + // throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣"); + // } + // //鍑哄簱鍗曟槑缁� + // var noticeDetail = await Db.Queryable<BllExportNoticeDetail>() + // .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); + // if (noticeDetail == null) + // { + // throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�"); + // } + // //鍑哄簱鍒嗛厤淇℃伅 + // var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => + // 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) + // { + // throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅"); + // } + // //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級 + // var needQty = allot.Qty - allot.CompleteQty; + + // //搴撳瓨鏄庣粏 + // var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId); + // if (stockDetail == null) + // { + // throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�"); + // } + // //搴撳瓨鎬昏〃 + // var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); + // if (stock == null) + // { + // throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�"); + // } + // #endregion + + // if (string.IsNullOrWhiteSpace(boxNo))//鏁存墭鎷h揣 + // { + // List<DataBoxInfo> boxInfos; + // var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);//鎵惧埌鎵樼洏涓婃墍鏈夌鐮� + // boxInfos = await boxInfo.ToListAsync(); + // if (boxInfo.Count() <= 0) + // { + // 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揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺"); + // } + // decimal pickQty = 0;//鎷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>(); + // foreach (var item in boxInfos) + // { + // if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3) && item.BoxNo3 != null) + // { + // throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + // } + // if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo) + // { + // throw Oops.Bah("褰撳墠鎵樼洏涓婃湁鍏朵粬涓嶅悓鐗╂枡鎵规锛屾嫞璐уけ璐�"); + // } + // //娣诲姞鎷h揣鏄庣粏 + // var completeDetail = new BllCompleteDetail() + // { + // SONo = soNo, + // SODetailNo = int.Parse(soDetailId), + // ExportAllotId = allot.Id, + // StockId = allot.StockId, + // BoxNo = item.BoxNo, + // BoxNo2 = item.BoxNo2, + // BoxNo3 = item.BoxNo3, + + // LotNo = allot.LotNo, + // LotText = allot.LotText, + // SupplierLot = allot.SupplierLot, + // SkuNo = allot.SkuNo, + // SkuName = allot.SkuName, + // Standard = allot.Standard, + // PalletNo = palletNo, + // CompleteQty = item.Qty, + + // CreateUser = userId + // }; + // comList.Add(completeDetail); + + // //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 + // await Db.Deleteable(item).ExecuteCommandAsync(); + // pickQty += item.Qty; + // } + // //娣诲姞鎷h揣鏄庣粏 + // await Db.Insertable(comList).ExecuteCommandAsync(); + // //淇敼鍑哄簱鍒嗛厤淇℃伅 + // allot.CompleteQty += pickQty; + // allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; + // allot.UpdateTime = DateTime.Now; + // await Db.Updateable(allot).ExecuteCommandAsync(); + // //鍒犻櫎搴撳瓨鏄庣粏 + // await Db.Deleteable(stockDetail).ExecuteCommandAsync(); + // //鍒犻櫎鎴栦慨鏀瑰簱瀛� + // stock.Qty -= pickQty; + // stock.LockQty -= pickQty; + // if (stock.LockQty < 0) + // { + // stock.LockQty = 0; + // } + // if (stock.Qty <= 0) + // { + // await Db.Deleteable(stock).ExecuteCommandAsync(); + // } + // else + // { + // await Db.Updateable(stock).ExecuteCommandAsync(); + // } + // //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂� + // var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != stockDetail.Id); + // if (palletData == null) + // { + // //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤 + // var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); + // if (pallet == null) + // { + // throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + // } + // pallet.Status = "0"; + // await Db.Updateable(pallet).ExecuteCommandAsync(); + // } + + // //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� + // noticeDetail.CompleteQty += pickQty; + // await Db.Updateable(noticeDetail).ExecuteCommandAsync(); + + // var num = await Db.Queryable<BllExportNoticeDetail>() + // .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); + // if (num <= 0) + // { + // notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴� + // //淇敼鍑哄簱鍗曚俊鎭� + // await Db.Updateable(notice).ExecuteCommandAsync(); + // if (notice.IsWave == "1") + // { + // var waveNum = await Db.Queryable<BllExportNotice>().CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4"); + // if (waveNum == 0) + // { + // 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; + // await Db.Updateable(wave).ExecuteCommandAsync(); + // } + // } + // } + // } + + // } + // else + // { + // var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暣鐩掓嫞璐с�� 2锛氭暎鏀嫞璐с��3锛氭暟閲忔嫞璐� + // List<DataBoxInfo> boxInfos; + // var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo); + // if (await boxInfo.CountAsync() == 0) + // { + // throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); + // } + // 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揣 + // { + // boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList(); + + // if (boxInfos.Count() == 0) + // { + // throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); + // } + // if (boxInfos.Count() > 1) + // { + // throw Oops.Bah("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�"); + // } + + // if (boxInfos.Any(m => m.PalletNo != palletNo)) + // { + // throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); + // } + // var boxQty = boxInfos.First().Qty; + // //if (boxQty > needQty) + // //{ + // // throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); + // //} + + // foreach (var item in boxInfos) + // { + // if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + // { + // throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + // } + // } + + // biaoShi = "1"; + // } + // else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣 + // { + // if (boxInfo.Count() > 1) + // { + // throw Oops.Bah("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣"); + // } + // decimal boxQty = boxInfo.First().Qty; + // if (Convert.ToInt32(pickQty1) > boxQty) + // { + // throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + // } + // //if (Convert.ToInt32(pickQty1) > needQty) + // //{ + // // throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); + // //} + + // biaoShi = "2"; + // } + // else //鏁寸鎷h揣 + // { + // if (boxInfo.Count() == 0) + // { + // throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅"); + // } + // if (boxInfo.Any(m => m.PalletNo != palletNo)) + // { + // 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揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺"); + // //} + + // foreach (var item in boxInfos) + // { + // if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo)) + // { + // throw Oops.Bah($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + // } + // } + // } + // decimal pickQty = 0;//鎷h揣鐨勬暟閲� + + // var comList = new List<BllCompleteDetail>(); + // foreach (var item in boxInfos) + // { + // //娣诲姞鎷h揣鏄庣粏 + // var completeDetail = new BllCompleteDetail() + // { + // SONo = soNo, + // SODetailNo = int.Parse(soDetailId), + // ExportAllotId = allot.Id, + // StockId = allot.StockId, + // BoxNo = item.BoxNo, + // BoxNo2 = item.BoxNo2, + // BoxNo3 = item.BoxNo3, + + // LotNo = allot.LotNo, + // LotText = allot.LotText, + // SupplierLot = allot.SupplierLot, + // SkuNo = allot.SkuNo, + // SkuName = allot.SkuName, + // Standard = allot.Standard, + // PalletNo = palletNo, + // CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty, + + // CreateUser = userId + // }; + // comList.Add(completeDetail); + + // if (biaoShi != "2") + // { + // //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 + // await Db.Deleteable(item).ExecuteCommandAsync(); + // } + // else//鏁伴噺鎷h揣 + // { + // if (decimal.Parse(pickQty1) == item.Qty) + // { + // //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 + // await Db.Deleteable(item).ExecuteCommandAsync(); + // } + // else + // { + // item.Qty -= decimal.Parse(pickQty1); + // item.BitBoxMark = "1";//闆剁鏍囪瘑 + // await Db.Updateable(item).ExecuteCommandAsync(); + // } + // } + // pickQty += item.Qty; + // } + // //鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅 + // if (biaoShi == "1") + // { + // var boxSurplusList = boxInfo.Where(m => m.BoxNo3 != boxNo3).ToList(); + // foreach (var item in boxSurplusList) + // { + // item.BitBoxMark = "1"; + // await Db.Updateable(item).ExecuteCommandAsync(); + // } + // } + + // await Db.Insertable(comList).ExecuteCommandAsync(); + // //淇敼鍑哄簱鍒嗛厤淇℃伅 + // allot.CompleteQty += pickQty; + // allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; + // allot.UpdateTime = DateTime.Now; + // if (allot.Status == "5") + // { + // //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴� + // } + // await Db.Updateable(allot).ExecuteCommandAsync(); + + // //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� + // stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� + // stockDetail.Qty -= pickQty; + // stockDetail.LockQty -= pickQty; + // if (stockDetail.LockQty < 0) + // { + // stockDetail.LockQty = 0; + // } + // if (stockDetail.Qty == stockDetail.LockQty) + // { + // stockDetail.Status = "2"; + // } + // else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0) + // { + // stockDetail.Status = "1"; + // } + // else + // { + // stockDetail.Status = "0"; + // } + + // if (stockDetail.Qty <= 0) + // { + // await Db.Deleteable(stockDetail).ExecuteCommandAsync(); + // } + // else + // { + // await Db.Updateable(stockDetail).ExecuteCommandAsync(); + // } + // stock.Qty -= pickQty; + // stock.LockQty -= pickQty; + // if (stock.LockQty < 0) + // { + // stock.LockQty = 0; + // } + // if (stock.Qty <= 0) + // { + // await Db.Deleteable(stock).ExecuteCommandAsync(); + // } + // else + // { + // await Db.Updateable(stock).ExecuteCommandAsync(); + // } + // var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo); + // if (num2 <= 0) + // { + // //鏀瑰彉鎵樼洏鐘舵�� + // var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0"); + // if (pallet == null) + // { + // throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + // } + // pallet.Status = "0"; + // await Db.Updateable(pallet).ExecuteCommandAsync(); + // } + // //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� + // noticeDetail.CompleteQty += pickQty; + // await Db.Updateable(noticeDetail).ExecuteCommandAsync(); + + // var num = await Db.Queryable<BllExportNoticeDetail>() + // .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); + // if (num <= 0) + // { + // notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴� + // //淇敼鍑哄簱鍗曚俊鎭� + // await Db.Updateable(notice).ExecuteCommandAsync(); + // if (notice.IsWave == "1") + // { + // var waveNum = await Db.Queryable<BllExportNotice>() + // .CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4"); + // if (waveNum == 0) + // { + // 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; + // await Db.Updateable(wave).ExecuteCommandAsync(); + // } + // } + // } + // } + // } + // //娣诲姞鎿嶄綔鏃ュ織璁板綍 + // 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(); + // throw new Exception(e.Message); + // } + //} //鍑哄簱pda鎷h揣 public async Task SoSetQtyPick(string soNo, string soDetailId, string palletNo, string PickQty, int userId) { @@ -2439,7 +3088,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) { @@ -2519,7 +3168,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(); @@ -2529,6 +3178,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"; @@ -2540,7 +3193,7 @@ else { stockDetail.Status = "0"; - } + } if (stockDetail.Qty <= 0) { await Db.Deleteable(stockDetail).ExecuteCommandAsync(); @@ -2570,7 +3223,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(); @@ -2632,8 +3287,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) { //鍒ゆ柇鏄惁澶т簬闇�瑕佸灈鏁� @@ -2642,7 +3297,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"); //楠岃瘉搴撳瓨鎬昏〃鏄惁涓虹┖ @@ -2650,16 +3305,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) { @@ -2673,7 +3338,7 @@ locat.Status = "3"; //3 鍑哄簱涓� locat.UpdateTime = serverTime; //淇敼鏃堕棿 locat.UpdateUser = userId; //淇敼浜� - //淇敼鍌ㄤ綅淇℃伅 + //淇敼鍌ㄤ綅淇℃伅 await Db.Updateable(locat).ExecuteCommandAsync(); //澧炲姞搴撳瓨閿佸畾鏁伴噺 @@ -2718,7 +3383,7 @@ Status = "1", LogisticsId = 0, IsAdvance = "0", - OutMode = model.OutMode,//鍑哄簱鍙� + OutMode = model.OutMode,//鍑哄簱鐩爣鍌ㄤ綅 CreateUser = userId, CreateTime = DateTime.Now @@ -2769,7 +3434,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(); @@ -3659,7 +4324,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") { @@ -3672,6 +4337,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"; @@ -3695,6 +4364,10 @@ } stock.Qty -= pickQty; stock.LockQty -= pickQty; + if (stock.LockQty < 0) + { + stock.LockQty = 0; + } stock.IsSampling = "1"; if (stock.Qty <= 0) { @@ -4127,7 +4800,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(); @@ -4452,7 +5125,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(); @@ -4663,7 +5336,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") { @@ -4987,7 +5660,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(); @@ -5111,9 +5784,6 @@ return data; } - - - #endregion } -- Gitblit v1.8.0