From 5b4f00ff3ea04a3246a8f6f86bdefe749fcfd0c4 Mon Sep 17 00:00:00 2001 From: yuyou_x <2336760928@qq.com> Date: 星期二, 26 三月 2024 08:24:28 +0800 Subject: [PATCH] 合并代码 --- Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 1054 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 988 insertions(+), 66 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index c340e8b..78c8489 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -67,6 +67,11 @@ { throw new Exception("鎵樼洏鐮佷负绌猴紝璇疯緭鍏ユ墭鐩樼爜"); } + var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo); + if (!string.IsNullOrEmpty(palletInfo.WareHouseNo)) + { + 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(); @@ -242,7 +247,19 @@ { foreach (var demo in list) { - var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 == demo.BoxNo); + //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; @@ -296,24 +313,30 @@ { throw new Exception($"{palletNo}鎵樼洏涓婂瓨鍦ㄧ鐮佷俊鎭紝鏃犳硶鍦ㄦ暟閲忔嫞璐ц繘琛屾搷浣滐紒"); } - //鍑哄簱鍗曟槑缁� - var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0"); - if (noticeDetail == null) + + BllExportAllot allot = null; + if (!string.IsNullOrWhiteSpace(soDetailId)) { - throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟槑缁嗕俊鎭紝璇锋牳瀹烇紒"); + //鍑哄簱鍗曟槑缁� + 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 notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo); - if (notice == null) - { - throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟�诲崟淇℃伅锛岃鏍稿疄锛�"); - } - //鍒嗛厤淇℃伅 - var 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) @@ -329,8 +352,8 @@ { SkuNo = detail.SkuNo, BoxNo = detail.SkuNo, - Qty = (int)allot.Qty, - PickedQty = (int)allot.CompleteQty, + Qty = allot == null ? (int)(detail.Qty - detail.LockQty) : (int)allot.Qty, + PickedQty = allot == null ? 0 : (int)allot.CompleteQty, }; pdaInfo.Add(info); @@ -409,6 +432,7 @@ throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�"); } #endregion + if (string.IsNullOrWhiteSpace(boxNo))//鏁存墭鎷h揣 { List<DataBoxInfo> boxInfos; @@ -428,7 +452,7 @@ var comList = new List<BllCompleteDetail>(); foreach (var item in boxInfos) { - if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3) && item.BoxNo3 != null) { throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); } @@ -469,6 +493,7 @@ //淇敼鍑哄簱鍒嗛厤淇℃伅 allot.CompleteQty += pickQty; allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + allot.UpdateTime = DateTime.Now; Db.Updateable(allot).ExecuteCommand(); //鍒犻櫎搴撳瓨鏄庣粏 Db.Deleteable(stockDetail).ExecuteCommand(); @@ -514,6 +539,8 @@ throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); } boxInfos = boxInfo.ToList(); + + 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(); @@ -535,6 +562,14 @@ if (boxQty > needQty) { throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); + } + + foreach (var item in boxInfos) + { + if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + { + throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } } biaoShi = "1"; @@ -572,16 +607,20 @@ { throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺"); } + + foreach (var item in boxInfos) + { + if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo)) + { + throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + } } var pickQty = 0;//鎷h揣鐨勬暟閲� - var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList(); + var comList = new List<BllCompleteDetail>(); foreach (var item in boxInfos) { - if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) - { - throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); - } //娣诲姞鎷h揣鏄庣粏 var completeDetail = new BllCompleteDetail() { @@ -609,7 +648,7 @@ if (biaoShi != "2") { //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 - Db.Deleteable(item).ExecuteCommand(); + Db.Deleteable(item).ExecuteCommand(); } else//鏁伴噺鎷h揣 { @@ -642,6 +681,7 @@ //淇敼鍑哄簱鍒嗛厤淇℃伅 allot.CompleteQty += pickQty; allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + allot.UpdateTime = DateTime.Now; if (allot.Status == "5") { //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴� @@ -797,6 +837,7 @@ var comList = new List<BllCompleteDetail>(); //鍒ゆ柇鏄惁瀛樺湪鎷h揣鏄庣粏 + isComplete = 0;// 鎵�鏈夋棤绠辩爜鎴栦竴绾х鐮佹嫞璐ф椂锛屾嫞璐ф槑缁嗗簲閲嶆柊鎻掑叆鏁版嵁(浣撶幇澶氭鎷h揣娴佺▼璁板綍) if (isComplete == 0) { //娣诲姞鎷h揣鏄庣粏 @@ -835,12 +876,11 @@ Db.Updateable(complete).ExecuteCommand(); } - - //淇敼鍑哄簱鍒嗛厤淇℃伅 allot.CompleteQty += int.Parse(PickQty); allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + allot.UpdateTime = DateTime.Now; Db.Updateable(allot).ExecuteCommand(); int isDel = 0; @@ -895,7 +935,7 @@ pallet.Status = "0"; Db.Updateable(pallet).ExecuteCommand(); } - + //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� noticeDetail.CompleteQty += int.Parse(PickQty); Db.Updateable(noticeDetail).ExecuteCommand(); @@ -1290,25 +1330,25 @@ { var type = ""; var detail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); - if (detail== null) + 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) + 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 @@ -1351,7 +1391,7 @@ } //鍙栨牱鍑哄簱鎷h揣(鏍囩) - public void SampleSoSetPick(string soType,string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string asnNo, int userId) + public void SampleSoSetPick(string soType, string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string asnNo, int userId) { Db.BeginTran(); try @@ -1360,7 +1400,7 @@ { throw new Exception("鍙栨牱鏍囪瘑涓嶈兘涓虹┖"); } - + //soType: 0搴撳唴鍙栨牱锛屾湁鍑哄簱鍗曞強鍒嗛厤淇℃伅锛� 1搴撳墠鍙栨牱锛屽弽鍚戞坊鍔犲嚭搴撳崟鍙婂垎閰嶄俊鎭� if (soType == "1") { @@ -1370,7 +1410,7 @@ if (string.IsNullOrWhiteSpace(asnNo)) { throw new Exception("鍏ュ簱鍗曚笉鑳戒负绌�"); - } + } if (string.IsNullOrWhiteSpace(palletNo)) { throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�"); @@ -1395,7 +1435,7 @@ throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑搴撳瓨鏄庣粏淇℃伅锛�"); } - var sku = Db.Queryable<SysMaterials>().First(m=>m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo); + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo); if (sku == null) { throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏涓婄殑鐗╂枡淇℃伅"); @@ -1410,7 +1450,7 @@ //鍑哄簱鍗� var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo); //鍒涘缓鍑哄簱鍗� - if (notice == null || notice.Status == "6") + if (notice == null || notice.Status == "6") { var billNo = ""; var bl = true; @@ -1422,7 +1462,7 @@ bl = Db.Queryable<BllExportNotice>().Any(m => m.SONo == no); } while (bl); - + var addNotice = new BllExportNotice() { SONo = billNo, @@ -1434,7 +1474,7 @@ WaveNo = "", IsDespatch = "0", CompleteTime = DateTime.Now, - CreateUser = userId, + CreateUser = userId, }; var n = Db.Insertable(addNotice).ExecuteReturnEntity(); @@ -1468,7 +1508,7 @@ IsIssueLotNo = "0", Status = "3", CreateUser = userId, - + }; var m = Db.Insertable(addNoticeDetail).ExecuteReturnEntity(); noticeDetail = m; @@ -1491,8 +1531,8 @@ SkuName = sku.SkuName, Standard = sku.Standard, PalletNo = palletNo, - IsBale = "0" , //鏄惁瑁瑰寘 - IsBelt = "0" , //鏄惁鎵撳甫 + IsBale = "0", //鏄惁瑁瑰寘 + IsBelt = "0", //鏄惁鎵撳甫 Qty = 0, CompleteQty = 0, @@ -1503,12 +1543,13 @@ OutMode = "",//鍑哄簱鍙� CreateUser = userId, + UpdateTime = DateTime.Now }; var fp = Db.Insertable(addAllot).ExecuteReturnEntity(); allot2 = fp; } - + #endregion @@ -1522,7 +1563,7 @@ throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); } boxInfos = boxInfo.ToList(); - + var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot2.Id && m.PalletNo == palletNo).ToList(); if (!string.IsNullOrWhiteSpace(boxNo3)) //鏁f敮鎷h揣 { boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList(); @@ -1540,7 +1581,13 @@ { throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); } - + foreach (var item in boxInfos) + { + if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + { + throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + } biaoShi = "1"; } else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣 @@ -1567,17 +1614,23 @@ { throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); } - + foreach (var item in boxInfos) + { + if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo)) + { + throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + } } var pickQty = 0;//鎷h揣鐨勬暟閲� - var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot2.Id && m.PalletNo == palletNo).ToList(); + var comList = new List<BllCompleteDetail>(); foreach (var item in boxInfos) { - if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) - { - throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); - } + //if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + //{ + // throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + //} //娣诲姞鎷h揣鏄庣粏 var completeDetail = new BllCompleteDetail() { @@ -1625,7 +1678,7 @@ } pickQty += biaoShi == "2" ? int.Parse(pickQty1) : item.Qty; } - + //鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅 if (biaoShi == "1") @@ -1642,13 +1695,13 @@ Db.Insertable(comList).ExecuteCommand(); //淇敼鍑哄簱鍒嗛厤淇℃伅 allot2.Qty += pickQty; - allot2.CompleteQty += pickQty; + allot2.CompleteQty += pickQty; Db.Updateable(allot2).ExecuteCommand(); //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� stockDetail.Qty -= pickQty; - + if (stockDetail.Qty <= 0) { Db.Deleteable(stockDetail).ExecuteCommand(); @@ -1687,7 +1740,7 @@ Db.Updateable(noticeDetail).ExecuteCommand(); } - else if(soType == "0") + else if (soType == "0") { #region 鍒ゆ柇 @@ -1759,6 +1812,7 @@ throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); } boxInfos = boxInfo.ToList(); + 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(); @@ -1781,7 +1835,13 @@ { throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); } - + foreach (var item in boxInfos) + { + if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + { + throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + } biaoShi = "1"; } else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣 @@ -1817,16 +1877,23 @@ { throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺"); } + foreach (var item in boxInfos) + { + if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo)) + { + throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + } } var pickQty = 0;//鎷h揣鐨勬暟閲� - var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList(); + var comList = new List<BllCompleteDetail>(); foreach (var item in boxInfos) { - if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) - { - throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); - } + //if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + //{ + // throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + //} //娣诲姞鎷h揣鏄庣粏 var completeDetail = new BllCompleteDetail() { @@ -1887,6 +1954,7 @@ //淇敼鍑哄簱鍒嗛厤淇℃伅 allot.CompleteQty += pickQty; allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + allot.UpdateTime = DateTime.Now; if (allot.Status == "5") { //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴� @@ -2108,6 +2176,7 @@ OutMode = "",//鍑哄簱鍙� CreateUser = userId, + UpdateTime = DateTime.Now }; var fp = Db.Insertable(addAllot).ExecuteReturnEntity(); @@ -2146,7 +2215,7 @@ SkuName = allot2.SkuName, Standard = allot2.Standard, PalletNo = palletNo, - CompleteQty = int.Parse(PickQty) , + CompleteQty = int.Parse(PickQty), InspectMark = "1", CreateUser = userId @@ -2169,7 +2238,7 @@ //淇敼鍑哄簱鍒嗛厤淇℃伅 allot2.Qty += int.Parse(PickQty); - allot2.CompleteQty += int.Parse(PickQty); + allot2.CompleteQty += int.Parse(PickQty); Db.Updateable(allot2).ExecuteCommand(); int isDel = 0; @@ -2178,7 +2247,7 @@ stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� stockDetail.InspectMark = "1";//淇敼涓烘娊妫�鎵樻爣璇� stockDetail.Qty -= int.Parse(PickQty); - if (stockDetail.Qty == stockDetail.LockQty&& stockDetail.Qty != 0) + if (stockDetail.Qty == stockDetail.LockQty && stockDetail.Qty != 0) { stockDetail.Status = "2"; } @@ -2231,7 +2300,7 @@ noticeDetail.CompleteQty += int.Parse(PickQty); noticeDetail.Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * noticeDetail.Qty; Db.Updateable(noticeDetail).ExecuteCommand(); - + } else if (soType == "0") { @@ -2351,6 +2420,8 @@ //淇敼鍑哄簱鍒嗛厤淇℃伅 allot.CompleteQty += int.Parse(PickQty); allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + + allot.UpdateTime = DateTime.Now; Db.Updateable(allot).ExecuteCommand(); int isDel = 0; @@ -2431,5 +2502,856 @@ throw new Exception(e.Message); } } + + #region 鎷h揣鎷兼墭 + /// <summary> + /// 鎷兼墭鍑哄簱pda鎷h揣-鏍囩 + /// </summary> + /// <param name="soNo"></param> + /// <param name="soDetailId"></param> + /// <param name="palletNo"></param> + /// <param name="boxNo"></param> + /// <param name="boxNo3"></param> + /// <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) + { + Db.BeginTran(); + try + { + var nowDate = DateTime.Now;//褰撳墠鏃堕棿 + #region 鍒ゆ柇 + + if (string.IsNullOrWhiteSpace(soNo)) + { + throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖"); + } + if (string.IsNullOrWhiteSpace(soDetailId)) + { + throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖"); + } + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�"); + } + if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0) + { + throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�"); + } + if (string.IsNullOrWhiteSpace(palletNoNew)) + { + throw new Exception("鏂版墭鐩樼爜涓嶈兘涓虹┖"); + } + if (palletNo == palletNoNew)//鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷� + { + if (!string.IsNullOrEmpty(boxNo)) + { + throw new Exception("鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷达紝璇烽�夋嫨鏁存墭鍑哄簱"); + } + } + + //鍑哄簱鍗� + var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo); + if (notice == null) + { + throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�"); + } + if (notice.Status != "3") + { + throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣"); + } + //鍑哄簱鍗曟槑缁� + var noticeDetail = Db.Queryable<BllExportNoticeDetail>() + .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); + if (noticeDetail == null) + { + throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�"); + } + //鍑哄簱鍒嗛厤淇℃伅 + var allot = Db.Queryable<BllExportAllot>().First(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("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅"); + } + //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級 + var needQty = allot.Qty - allot.CompleteQty; + + //搴撳瓨鏄庣粏 + var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId); + if (stockDetail == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�"); + } + //搴撳瓨鎬昏〃 + var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); + if (stock == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�"); + } + + #endregion + + #region 鎷兼墭淇℃伅 + var sdId = 0; + bool isNew = false; + var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew); + if (pinStockDetail != null) + { + if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐� + { + if (pinStockDetail.SONo != notice.SONo) + { + throw new Exception("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�"); + } + if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo) + { + isNew = true; + } + } + sdId = pinStockDetail.Id; + } + else + { + isNew = true; + + var newPalletInfo = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0"); + if (newPalletInfo == null) + { + throw new Exception("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒"); + } + //淇敼鏂版墭鐩樼姸鎬� + newPalletInfo.Status = "1"; + Db.Updateable(newPalletInfo).ExecuteCommand(); + } + var sd = new DataStockDetail(); + if (isNew) + { + sd.LotNo = stockDetail.LotNo; + sd.LotText = stockDetail.LotText; + sd.SupplierLot = stockDetail.SupplierLot; + sd.SkuNo = stockDetail.SkuNo; + sd.SkuName = stockDetail.SkuName; + sd.Standard = stockDetail.Standard; + + sd.FrozenQty = 0; + sd.InspectQty = 0; + sd.ASNNo = ""; + sd.ASNDetailNo = null; + sd.SONo = soNo;//鍑哄簱鍗曞彿 + sd.WareHouseNo = ""; + sd.RoadwayNo = ""; + sd.AreaNo = ""; + sd.LocatNo = ""; + sd.PalletNo = palletNoNew; + sd.PalletNo2 = ""; + sd.PalletNo3 = ""; + //PalletType = item.PalletType, + sd.CompleteTime = nowDate; + sd.ProductionTime = stockDetail.ProductionTime; + sd.ExpirationTime = stockDetail.ExpirationTime; + sd.Status = "2";//鐘舵�侊紝宸插垎閰� + sd.InspectMark = stockDetail.InspectMark; + sd.InspectStatus = stockDetail.InspectStatus; + sd.BitPalletMark = "0"; + sd.PackagNo = noticeDetail.PackagNo; + sd.IsBale = stockDetail.IsBale; + sd.IsBelt = stockDetail.IsBelt; + sd.Demo = stockDetail.Demo; + sd.OwnerName = stockDetail.OwnerName; + sd.OwnerNo = stockDetail.OwnerNo; + sd.SupplierName = stockDetail.SupplierName; + sd.SupplierNo = stockDetail.SupplierNo; + + sd.IsDel = "0"; + sd.CreateUser = userId; + sd.CreateTime = nowDate; + + //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅 + sdId = Db.Insertable(sd).ExecuteReturnIdentity(); + } + #endregion + + var pickQty = 0;//鎷h揣鐨勬暟閲� + if (string.IsNullOrWhiteSpace(boxNo))//鏁存墭鎷h揣 + { + List<DataBoxInfo> boxInfos; + var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo);//鎵惧埌鎵樼洏涓婃墍鏈夌鐮� + boxInfos = boxInfo.ToList(); + if (boxInfo.Count() <= 0) + { + throw new Exception("璇ユ墭鐩樹笂娌℃湁鍙嫞璐х殑绠卞瓙"); + } + var boxQty = boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList(); + if (boxQty[0] > needQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺"); + } + + var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList(); + 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揣"); + } + if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo) + { + throw new Exception("褰撳墠鎵樼洏涓婃湁鍏朵粬涓嶅悓鐗╂枡鎵规锛屾嫞璐уけ璐�"); + } + //娣诲姞鎷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); + + if (palletNo != palletNoNew) + { + item.StockDetailId = sdId; + item.BindNo = null;//鎵樼洏缁戝畾鍙� + item.PalletNo = palletNoNew; + } + item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣 + //淇敼搴撳瓨绠辩爜鏄庣粏 + Db.Updateable(item).ExecuteCommand(); + + pickQty += item.Qty; + } + //娣诲姞鎷h揣鏄庣粏 + Db.Insertable(comList).ExecuteCommand(); + //淇敼鍑哄簱鍒嗛厤淇℃伅 + allot.CompleteQty += pickQty; + allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + allot.UpdateTime = DateTime.Now; + Db.Updateable(allot).ExecuteCommand(); + + if (palletNo != palletNoNew) + { + //鍒犻櫎鍘熸墭鐩樺簱瀛樻槑缁� + Db.Deleteable(stockDetail).ExecuteCommand(); + + //鏀瑰彉鍘熸墭鐩樼姸鎬佷负锛氭湭浣跨敤 + var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); + if (pallet == null) + { + throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + } + pallet.Status = "0"; + Db.Updateable(pallet).ExecuteCommand(); + } + else + { + stockDetail.SONo = soNo; + Db.Updateable(stockDetail).ExecuteCommand(); + } + + //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� + noticeDetail.CompleteQty += pickQty; + Db.Updateable(noticeDetail).ExecuteCommand(); + + var num = Db.Queryable<BllExportNoticeDetail>() + .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); + if (num <= 0) + { + notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴� + } + //淇敼鍑哄簱鍗曚俊鎭� + Db.Updateable(notice).ExecuteCommand(); + } + 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) + { + throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); + } + boxInfos = boxInfo.ToList(); + + 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 new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); + } + if (boxInfos.Count() > 1) + { + throw new Exception("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�"); + } + + if (boxInfos.Any(m => m.PalletNo != palletNo)) + { + throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); + } + var boxQty = boxInfos.First().Qty; + if (boxQty > needQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); + } + + foreach (var item in boxInfos) + { + if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + { + throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + } + + biaoShi = "1"; + } + else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣 + { + if (boxInfo.Count() > 1) + { + throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣"); + } + int boxQty = boxInfo.First().Qty; + if (Convert.ToInt32(pickQty1) > boxQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + if (Convert.ToInt32(pickQty1) > needQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); + } + + biaoShi = "2"; + } + else //鏁寸鎷h揣 + { + if (boxInfo.Count() == 0) + { + throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅"); + } + if (boxInfo.Any(m => m.PalletNo != palletNo)) + { + throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); + } + var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList(); + if (boxQty[0] > needQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺"); + } + + foreach (var item in boxInfos) + { + if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo)) + { + throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷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" ? int.Parse(pickQty1) : item.Qty, + + CreateUser = userId + }; + comList.Add(completeDetail); + + if (biaoShi == "0")//鏁寸鎷h揣 + { + //淇敼搴撳瓨绠辩爜鏄庣粏 + item.StockDetailId = sdId; + item.BindNo = null;//鎵樼洏缁戝畾鍙� + item.PalletNo = palletNoNew; + item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣 + Db.Updateable(item).ExecuteCommand(); + + pickQty += item.Qty; + } + else if (biaoShi == "1")//鏁f敮鎷h揣 + { + //淇敼搴撳瓨绠辩爜鏄庣粏 + item.StockDetailId = sdId; + item.BindNo = null;//鎵樼洏缁戝畾鍙� + item.PalletNo = palletNoNew; + item.BoxNo = item.BoxNo3;//灏嗘敮鐮佽祴缁欑鐮� + item.BitBoxMark = "1";//闆剁鏍囪 + item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣 + Db.Updateable(item).ExecuteCommand(); + + pickQty += item.Qty; + } + else//鏁伴噺鎷h揣 + { + if (int.Parse(pickQty1) == item.Qty) + { + //淇敼搴撳瓨绠辩爜鏄庣粏 + item.StockDetailId = sdId; + item.BindNo = null;//鎵樼洏缁戝畾鍙� + item.PalletNo = palletNoNew; + item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣 + Db.Updateable(item).ExecuteCommand(); + } + else + { + item.Qty -= int.Parse(pickQty1); + item.BitBoxMark = "1";//闆剁鏍囪瘑 + Db.Updateable(item).ExecuteCommand(); + } + + pickQty += int.Parse(pickQty1); + } + } + //鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅 + if (biaoShi == "1") + { + var boxSurplusList = boxInfo.Where(m => m.BoxNo3 != boxNo3).ToList(); + foreach (var item in boxSurplusList) + { + item.BitBoxMark = "1"; + Db.Updateable(item).ExecuteCommand(); + } + } + + Db.Insertable(comList).ExecuteCommand(); + //淇敼鍑哄簱鍒嗛厤淇℃伅 + allot.CompleteQty += pickQty; + allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + allot.UpdateTime = DateTime.Now; + if (allot.Status == "5") + { + //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴� + } + Db.Updateable(allot).ExecuteCommand(); + + //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� + stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� + stockDetail.Qty -= pickQty; + stockDetail.LockQty -= 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) + { + Db.Deleteable(stockDetail).ExecuteCommand(); + } + else + { + Db.Updateable(stockDetail).ExecuteCommand(); + } + var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == palletNo); + if (num2 <= 0) + { + //鏀瑰彉鎵樼洏鐘舵�� + var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); + if (pallet == null) + { + throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + } + pallet.Status = "0"; + Db.Updateable(pallet).ExecuteCommand(); + } + //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� + noticeDetail.CompleteQty += pickQty; + Db.Updateable(noticeDetail).ExecuteCommand(); + + var num = Db.Queryable<BllExportNoticeDetail>() + .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); + if (num <= 0) + { + notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴� + } + //淇敼鍑哄簱鍗曚俊鎭� + Db.Updateable(notice).ExecuteCommand(); + } + + if (isNew) + { + sd.Qty = pickQty; + sd.LockQty = pickQty; + } + else + { + if (palletNo != palletNoNew) + { + //淇敼鎷兼墭鎵樼洏搴撳瓨鏄庣粏 + pinStockDetail.Qty += pickQty; + pinStockDetail.LockQty += pickQty; + Db.Updateable(pinStockDetail).ExecuteCommand(); + } + } + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鎷兼墭", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勫師鎵樼洏鐮佷负锛歿palletNo}锛屾柊鎵樼洏鐮佷负锛歿palletNoNew}鐨勬嫞璐ф嫾鎵樻搷浣�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + /// <summary> + /// 鎷兼墭鍑哄簱pda鎷h揣-鏁伴噺 + /// </summary> + /// <param name="soNo"></param> + /// <param name="soDetailId"></param> + /// <param name="palletNo"></param> + /// <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) + { + Db.BeginTran(); + try + { + var nowDate = DateTime.Now;//褰撳墠鏃堕棿 + #region 鍒ゆ柇 + + if (string.IsNullOrWhiteSpace(soNo)) + { + throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖"); + } + //if (string.IsNullOrWhiteSpace(soDetailId)) + //{ + // throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖"); + //} + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�"); + } + if (string.IsNullOrWhiteSpace(palletNoNew)) + { + throw new Exception("鏂版墭鐩樼爜涓嶈兘涓虹┖"); + } + + //鍑哄簱鍗� + var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo); + if (notice == null) + { + throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�"); + } + if (notice.Status != "3") + { + throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣"); + } + //鍑哄簱鍗曟槑缁� + var noticeDetail = Db.Queryable<BllExportNoticeDetail>() + .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); + if (noticeDetail == null) + { + throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�"); + } + //鍑哄簱鍒嗛厤淇℃伅 + var allot = Db.Queryable<BllExportAllot>().First(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("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅"); + } + //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級 + var needQty = allot.Qty - allot.CompleteQty; + if (int.Parse(PickQty) > needQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺"); + } + + //搴撳瓨鏄庣粏 + var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId); + if (stockDetail == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�"); + } + //搴撳瓨鎬昏〃 + var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); + if (stock == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�"); + } + if (palletNo == palletNoNew)//鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷� + { + if (int.Parse(PickQty) != stockDetail.Qty) + { + throw new Exception("鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷达紝闇�瑕佹妸鎵樼洏涓婃墍鏈夋暟閲忔嫞璐�"); + } + } + #endregion + + #region 鎷兼墭淇℃伅 + bool isNew = false; + var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew); + if (pinStockDetail != null) + { + if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐� + { + if (pinStockDetail.SONo != notice.SONo) + { + throw new Exception("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�"); + } + if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo) + { + isNew = true; + } + } + } + else + { + isNew = true; + + var newPalletInfo = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0"); + if (newPalletInfo == null) + { + throw new Exception("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒"); + } + //淇敼鏂版墭鐩樼姸鎬� + newPalletInfo.Status = "1"; + Db.Updateable(newPalletInfo).ExecuteCommand(); + } + + if (isNew) + { + var sd = new DataStockDetail(); + + sd.LotNo = stockDetail.LotNo; + sd.LotText = stockDetail.LotText; + sd.SupplierLot = stockDetail.SupplierLot; + sd.SkuNo = stockDetail.SkuNo; + sd.SkuName = stockDetail.SkuName; + sd.Standard = stockDetail.Standard; + + sd.Qty = int.Parse(PickQty); + sd.LockQty = int.Parse(PickQty); + + sd.FrozenQty = 0; + sd.InspectQty = 0; + sd.ASNNo = ""; + sd.ASNDetailNo = null; + sd.SONo = soNo;//鍑哄簱鍗曞彿 + sd.WareHouseNo = ""; + sd.RoadwayNo = ""; + sd.AreaNo = ""; + sd.LocatNo = ""; + sd.PalletNo = palletNoNew; + sd.PalletNo2 = ""; + sd.PalletNo3 = ""; + //PalletType = item.PalletType, + sd.CompleteTime = nowDate; + sd.ProductionTime = stockDetail.ProductionTime; + sd.ExpirationTime = stockDetail.ExpirationTime; + sd.Status = "2";//鐘舵�侊紝宸插垎閰� + sd.InspectMark = stockDetail.InspectMark; + sd.InspectStatus = stockDetail.InspectStatus; + sd.BitPalletMark = "0"; + sd.PackagNo = noticeDetail.PackagNo; + sd.IsBale = stockDetail.IsBale; + sd.IsBelt = stockDetail.IsBelt; + sd.Demo = stockDetail.Demo; + sd.OwnerName = stockDetail.OwnerName; + sd.OwnerNo = stockDetail.OwnerNo; + sd.SupplierName = stockDetail.SupplierName; + sd.SupplierNo = stockDetail.SupplierNo; + + sd.IsDel = "0"; + sd.CreateUser = userId; + sd.CreateTime = nowDate; + + //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅 + Db.Insertable(sd).ExecuteReturnIdentity(); + } + else + { + if (palletNo != palletNoNew) + { + //淇敼鎷兼墭鎵樼洏搴撳瓨鏄庣粏 + pinStockDetail.Qty += int.Parse(PickQty); + pinStockDetail.LockQty += int.Parse(PickQty); + Db.Updateable(pinStockDetail).ExecuteCommand(); + } + else + { + pinStockDetail.SONo = soNo; + Db.Updateable(pinStockDetail).ExecuteCommand(); + } + } + #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); + + //鍒よ鏄惁瀛樺湪鎷h揣鏄庣粏 + int isComplete = 0; + if (complete != null) + { + isComplete = 1; + } + + var comList = new List<BllCompleteDetail>(); + //鍒ゆ柇鏄惁瀛樺湪鎷h揣鏄庣粏 + isComplete = 0;//鎵�鏈夋棤绠辩爜鎴栦竴绾х鐮佹嫞璐ф椂锛屾嫞璐ф槑缁嗗簲閲嶆柊鎻掑叆鏁版嵁(浣撶幇澶氭鎷h揣娴佺▼璁板綍) + if (isComplete == 0) + { + //娣诲姞鎷h揣鏄庣粏 + var completeDetail = new BllCompleteDetail() + { + SONo = soNo, + SODetailNo = int.Parse(soDetailId), + ExportAllotId = allot.Id, + StockId = allot.StockId, + BoxNo = "", + BoxNo2 = "", + BoxNo3 = "", + + LotNo = allot.LotNo, + LotText = allot.LotText, + SupplierLot = allot.SupplierLot, + SkuNo = allot.SkuNo, + SkuName = allot.SkuName, + Standard = allot.Standard, + PalletNo = palletNo, + CompleteQty = int.Parse(PickQty), + + CreateUser = userId, + CreateTime = Db.GetDate(), + }; + comList.Add(completeDetail); + + //娣诲姞鎷h揣鏄庣粏 + Db.Insertable(comList).ExecuteCommand(); + } + else if (isComplete == 1) + { + complete.CompleteQty += int.Parse(PickQty); + complete.UpdateUser = userId; + complete.UpdateTime = Db.GetDate(); + + Db.Updateable(complete).ExecuteCommand(); + } + + //淇敼鍑哄簱鍒嗛厤淇℃伅 + allot.CompleteQty += int.Parse(PickQty); + allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + allot.UpdateTime = DateTime.Now; + Db.Updateable(allot).ExecuteCommand(); + + int isDel = 0; + + if (palletNo != palletNoNew) + { + //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� + stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� + stockDetail.Qty -= int.Parse(PickQty); + stockDetail.LockQty -= int.Parse(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) + { + Db.Deleteable(stockDetail).ExecuteCommand(); + } + else + { + isDel = 1; + Db.Updateable(stockDetail).ExecuteCommand(); + } + } + else + { + isDel = 1; + } + //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣� + if (isDel == 0) + { + //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤 + var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); + if (pallet == null) + { + throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + } + + pallet.Status = "0"; + Db.Updateable(pallet).ExecuteCommand(); + } + + //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� + noticeDetail.CompleteQty += int.Parse(PickQty); + Db.Updateable(noticeDetail).ExecuteCommand(); + + var num = Db.Queryable<BllExportNoticeDetail>() + .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); + if (num <= 0) + { + notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴� + } + //淇敼鍑哄簱鍗曚俊鎭� + Db.Updateable(notice).ExecuteCommand(); + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鎷兼墭", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}锛屾柊鎵樼洏鐮佷负锛歿palletNoNew}鐨勬嫞璐ф搷浣�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + #endregion } } -- Gitblit v1.8.0