From e34a92fc8833d3434511225939302cac0b75f3f3 Mon Sep 17 00:00:00 2001 From: Demo <Demo@DESKTOP-CPA90BF> Date: 星期四, 14 三月 2024 16:47:16 +0800 Subject: [PATCH] 修改PDA取样出库 --- Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 524 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 491 insertions(+), 33 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index 785537c..c340e8b 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -1410,7 +1410,7 @@ //鍑哄簱鍗� var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo); //鍒涘缓鍑哄簱鍗� - if (notice == null || (notice != null && notice.Status != "6")) + if (notice == null || notice.Status == "6") { var billNo = ""; var bl = true; @@ -1429,16 +1429,16 @@ Type = "3", Status = "4", Origin = "WMS", - + AsnSampleNo = asnNo, IsWave = "0", WaveNo = "", IsDespatch = "0", CompleteTime = DateTime.Now, - CreateUser = 0, + CreateUser = userId, }; - var n = Db.Insertable(addNotice).ExecuteCommand(); - notice = addNotice; + var n = Db.Insertable(addNotice).ExecuteReturnEntity(); + notice = n; } //鍒涘缓鍑哄簱鍗曟槑缁� @@ -1467,10 +1467,11 @@ WaveNo = "", IsIssueLotNo = "0", Status = "3", - CreateUser = 0, + CreateUser = userId, + }; - var m = Db.Insertable(addNoticeDetail).ExecuteCommand(); - noticeDetail = addNoticeDetail; + var m = Db.Insertable(addNoticeDetail).ExecuteReturnEntity(); + noticeDetail = m; } //鍑哄簱鍒嗛厤淇℃伅 var allot2 = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.Status == "5" && m.SONo == notice.SONo && m.PalletNo == palletNo); @@ -1502,11 +1503,10 @@ OutMode = "",//鍑哄簱鍙� CreateUser = userId, - CreateTime = DateTime.Now }; - var fp = Db.Insertable(addAllot).ExecuteCommand(); - allot2 = addAllot; + var fp = Db.Insertable(addAllot).ExecuteReturnEntity(); + allot2 = fp; } @@ -1570,7 +1570,7 @@ } var pickQty = 0;//鎷h揣鐨勬暟閲� - var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList(); + 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) { @@ -1581,20 +1581,20 @@ //娣诲姞鎷h揣鏄庣粏 var completeDetail = new BllCompleteDetail() { - SONo = soNo, - SODetailNo = int.Parse(soDetailId), - ExportAllotId = allot.Id, - StockId = allot.StockId, + SONo = notice.SONo, + SODetailNo = noticeDetail.Id, + ExportAllotId = allot2.Id, + StockId = allot2.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, + LotNo = allot2.LotNo, + LotText = allot2.LotText, + SupplierLot = allot2.SupplierLot, + SkuNo = allot2.SkuNo, + SkuName = allot2.SkuName, + Standard = allot2.Standard, PalletNo = palletNo, CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty, InspectMark = "1", @@ -1623,7 +1623,7 @@ Db.Updateable(item).ExecuteCommand(); } } - pickQty += item.Qty; + pickQty += biaoShi == "2" ? int.Parse(pickQty1) : item.Qty; } @@ -1643,7 +1643,7 @@ //淇敼鍑哄簱鍒嗛厤淇℃伅 allot2.Qty += pickQty; allot2.CompleteQty += pickQty; - Db.Updateable(allot).ExecuteCommand(); + Db.Updateable(allot2).ExecuteCommand(); //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� @@ -1683,16 +1683,8 @@ noticeDetail.AllotQty += pickQty; noticeDetail.FactQty += pickQty; noticeDetail.CompleteQty += pickQty; + noticeDetail.Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * noticeDetail.Qty; 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 if(soType == "0") @@ -1972,6 +1964,472 @@ } } + //鍙栨牱鍑哄簱鎷h揣(鏃犳爣绛�) + public void SampleSoSetQtyPick(string soType, string soNo, string soDetailId, string palletNo, string PickQty, string asnNo, int userId) + { + Db.BeginTran(); + try + { + if (string.IsNullOrWhiteSpace(soType)) + { + throw new Exception("鍙栨牱鏍囪瘑涓嶈兘涓虹┖"); + } + if (soType == "1") + { + if (string.IsNullOrWhiteSpace(asnNo)) + { + throw new Exception("鍏ュ簱鍗曟嵁涓嶈兘涓虹┖"); + } + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�"); + } + //鍏堝垽鏂槸鍚︽槸搴撳鍙栨牱鎵樼洏 + var allot = Db.Queryable<BllExportAllot>().First(m => + m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6"); + if (allot != null) + { + throw new Exception("褰撳墠鎵樼洏涓嶅睘浜庡簱鍓嶅彇鏍�"); + } + + + //搴撳瓨鏄庣粏 + var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNNo == asnNo && m.PalletNo == palletNo); + if (stockDetail == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑搴撳瓨鏄庣粏淇℃伅锛�"); + } + + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo); + if (sku == 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("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�"); + } + + //鍑哄簱鍗� + var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo); + //鍒涘缓鍑哄簱鍗� + if (notice == null || notice.Status == "6") + { + var billNo = ""; + var bl = true; + do + { + //鑾峰彇鑷鍗曟嵁鍙� + billNo = new Common().GetMaxNo("SO"); + var no = billNo; + bl = Db.Queryable<BllExportNotice>().Any(m => m.SONo == no); + } while (bl); + + var addNotice = new BllExportNotice() + { + SONo = billNo, + Type = "3", + Status = "4", + Origin = "WMS", + AsnSampleNo = asnNo, + IsWave = "0", + WaveNo = "", + IsDespatch = "0", + CompleteTime = DateTime.Now, + CreateUser = userId, + }; + + var n = Db.Insertable(addNotice).ExecuteReturnEntity(); + notice = n; + } + + //鍒涘缓鍑哄簱鍗曟槑缁� + var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.SONo == notice.SONo && m.SkuNo == stockDetail.SkuNo && m.LotNo.Contains(stockDetail.LotNo)); + if (noticeDetail == null) + { + var addNoticeDetail = new BllExportNoticeDetail() + { + SONo = notice.SONo, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = stockDetail.LotNo, + LotText = "", + Qty = 0, + AllotQty = 0, + FactQty = 0, + CompleteQty = 0, + PackagNo = sku.PackagNo, + Price = sku.Price, + //Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * pickQty, + IsBale = "", + IsBelt = "", + SupplierLot = stock.SupplierLot, + IsWave = "0", + WaveNo = "", + IsIssueLotNo = "0", + Status = "3", + CreateUser = userId, + + }; + var m = Db.Insertable(addNoticeDetail).ExecuteReturnEntity(); + noticeDetail = m; + } + //鍑哄簱鍒嗛厤淇℃伅 + var allot2 = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.Status == "5" && m.SONo == notice.SONo && m.PalletNo == palletNo); + if (allot2 == null) + { + //娣诲姞鍒嗛厤琛ㄤ俊鎭� + var addAllot = new BllExportAllot + { + SONo = notice.SONo, + WaveNo = "", + SODetailNo = noticeDetail.Id, + StockId = stockDetail.Id, + LotNo = stockDetail.LotNo, + LotText = stockDetail.LotText, + SupplierLot = stockDetail.SupplierLot, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + PalletNo = palletNo, + IsBale = "0", //鏄惁瑁瑰寘 + IsBelt = "0", //鏄惁鎵撳甫 + + Qty = 0, + CompleteQty = 0, + + Status = "5", + LogisticsId = notice.LogisticsId, + IsAdvance = "0", + OutMode = "",//鍑哄簱鍙� + + CreateUser = userId, + }; + + var fp = Db.Insertable(addAllot).ExecuteReturnEntity(); + allot2 = fp; + } + + //鑾峰彇褰撳墠鎵樼洏鎷h揣鏄庣粏 + var complete = Db.Queryable<BllCompleteDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.ExportAllotId == allot2.Id && a.StockId == stockDetail.Id); + + //鍒よ鏄惁瀛樺湪鎷h揣鏄庣粏 + int isComplete = 0; + if (complete != null) + { + isComplete = 1; + } + + var comList = new List<BllCompleteDetail>(); + //鍒ゆ柇鏄惁瀛樺湪鎷h揣鏄庣粏 + if (isComplete == 0) + { + //娣诲姞鎷h揣鏄庣粏 + var completeDetail = new BllCompleteDetail() + { + SONo = notice.SONo, + SODetailNo = noticeDetail.Id, + ExportAllotId = allot2.Id, + StockId = allot2.StockId, + BoxNo = "", + BoxNo2 = "", + BoxNo3 = "", + + LotNo = allot2.LotNo, + LotText = allot2.LotText, + SupplierLot = allot2.SupplierLot, + SkuNo = allot2.SkuNo, + SkuName = allot2.SkuName, + Standard = allot2.Standard, + PalletNo = palletNo, + CompleteQty = int.Parse(PickQty) , + InspectMark = "1", + + CreateUser = userId + }; + 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(); + } + + + + //淇敼鍑哄簱鍒嗛厤淇℃伅 + allot2.Qty += int.Parse(PickQty); + allot2.CompleteQty += int.Parse(PickQty); + Db.Updateable(allot2).ExecuteCommand(); + + int isDel = 0; + + //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� + stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� + stockDetail.InspectMark = "1";//淇敼涓烘娊妫�鎵樻爣璇� + stockDetail.Qty -= int.Parse(PickQty); + if (stockDetail.Qty == stockDetail.LockQty&& stockDetail.Qty != 0) + { + 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(); + } + //鍒犻櫎鎴栦慨鏀瑰簱瀛� + stock.Qty -= int.Parse(PickQty); + if (stock.Qty <= 0) + { + Db.Deleteable(stock).ExecuteCommand(); + } + else + { + Db.Updateable(stock).ExecuteCommand(); + } + + //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤 + var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); + if (pallet == null) + { + throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + } + + //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣� + if (isDel == 0) + { + pallet.Status = "0"; + Db.Updateable(pallet).ExecuteCommand(); + } + + //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� + noticeDetail.Qty += int.Parse(PickQty); + noticeDetail.AllotQty += int.Parse(PickQty); + noticeDetail.FactQty += int.Parse(PickQty); + 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") + { + #region 鍒ゆ柇 + + if (string.IsNullOrWhiteSpace(soNo)) + { + throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖"); + } + //if (string.IsNullOrWhiteSpace(soDetailId)) + //{ + // throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖"); + //} + if (string.IsNullOrWhiteSpace(palletNo)) + { + 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("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�"); + } + #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揣鏄庣粏 + 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"; + Db.Updateable(allot).ExecuteCommand(); + + int isDel = 0; + + //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� + 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(); + } + //鍒犻櫎鎴栦慨鏀瑰簱瀛� + stock.Qty -= int.Parse(PickQty); + stock.LockQty -= int.Parse(PickQty); + if (stock.Qty <= 0) + { + Db.Deleteable(stock).ExecuteCommand(); + } + else + { + Db.Updateable(stock).ExecuteCommand(); + } + + //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤 + var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); + if (pallet == null) + { + throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + } + + //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣� + if (isDel == 0) + { + 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}鐨勬嫞璐ф搷浣�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } } } -- Gitblit v1.8.0