From 54c9cb77e93d08bc330b9a421e6232b7f7bba57a Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期五, 19 九月 2025 17:30:36 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 948 +++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 528 insertions(+), 420 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index f6c348e..c5e12c6 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -23,6 +23,7 @@ using System.Threading.Tasks; using Utility; using WMS.BLL.Logic; +using System.Web; namespace WMS.BLL.BllPdaServer { @@ -2093,6 +2094,49 @@ return list; } + /// <summary> + /// 鍑哄簱鎷h揣鑾峰彇鎵弿鏍囩鏁伴噺 + /// </summary> + /// <param name="palletNo"></param> + /// <param name="boxNo"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public decimal CheckBoxForPick(string palletNo ,string boxNo) + { + try + { + decimal boxNum = 0; + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("鎵樼洏鏉$爜涓嶅彲涓虹┖!"); + } + if (string.IsNullOrEmpty(boxNo)) + { + throw new Exception("鏍囩鏉$爜涓嶅彲涓虹┖!"); + } + var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == boxNo && w.PalletNo == palletNo).ToList(); + if (boxInfo.Count <= 0) + { + boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo2 == boxNo && w.PalletNo == palletNo).ToList(); + if (boxInfo.Count <= 0) + { + boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo3 == boxNo && w.PalletNo == palletNo).ToList(); + } + } + if (boxInfo == null || boxInfo.Count <= 0) + { + throw new Exception("鏍囩鏉$爜鏈湪璇ユ墭鐩樺唴!"); + } + boxNum = boxInfo.Sum(s => s.Qty); + + return boxNum; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + //鑾峰彇搴撳唴鏃犵鐮佺殑鎵樼洏鍒嗛厤淇℃伅 public async Task<List<BoxInfo>> GetAllotPlnInfo(string soDetailId, string palletNo) { @@ -2603,451 +2647,515 @@ } } - //public async Task SoSetPick34(string soNo, string soDetailId, string palletNo, string boxNo, string pickQty1, int userId) - //{ - // Db.BeginTran(); - // try - // { - // #region 鍒ゆ柇 + /// <summary> + /// 鍑哄簱pda鎷h揣-JC34 + /// </summary> + /// <param name="soNo"></param> + /// <param name="soDetailId"></param> + /// <param name="palletNo"></param> + /// <param name="boxNo">绠辩爜/鐩掔爜/鏀爜</param> + /// <param name="pickQty1"></param> + /// <param name="userId"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + 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("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�"); - // //} + 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 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 + //搴撳瓨鏄庣粏 + 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, + 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, + 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); + 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(); - // } + //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 + 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(); + //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� + 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 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(); + } + 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) + { + biaoShi = "1"; + boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo2 == boxNo); + if (await boxInfo.CountAsync() == 0) + { + biaoShi = "2"; + boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo3 == boxNo); + if (await boxInfo.CountAsync() == 0) + { + throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); + } + } + } + if (biaoShi == "0" && !string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0) + { + biaoShi = "3"; + } + if (biaoShi == "2" && !string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 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[0].SkuNo != allot.SkuNo || boxInfos[0].LotNo != allot.LotNo) + { + throw Oops.Bah("绠辩爜鐗╂枡鎵规鍜岄�夋嫨鐗╂枡鎵规涓嶄竴鑷达紒"); + } - // if (boxInfos.Count() == 0) - // { - // throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); - // } - // if (boxInfos.Count() > 1) - // { - // throw Oops.Bah("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�"); - // } + var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList(); + if (biaoShi == "2") //鏁f敮鎷h揣 + { + boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo).ToList(); - // if (boxInfos.Any(m => m.PalletNo != palletNo)) - // { - // throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); - // } - // var boxQty = boxInfos.First().Qty; - // //if (boxQty > needQty) - // //{ - // // throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); - // //} + if (boxInfos.Count() == 0) + { + throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); + } + if (boxInfos.Count() > 1) + { + throw Oops.Bah("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�"); + } - // foreach (var item in boxInfos) - // { - // if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) - // { - // throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); - // } - // } + if (boxInfos.Any(m => m.PalletNo != palletNo)) + { + throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); + } + var boxQty = boxInfos.First().Qty; + //if (boxQty > needQty) + //{ + // throw Oops.Bah("鎷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揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); - // //} + foreach (var item in boxInfos) + { + if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + { + throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + } + } + else if (biaoShi == "1")//鏁寸洅鎷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.BoxNo2).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync(); + //if (boxQty[0] > 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 (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) + { + throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + } + } + else if (biaoShi == "3")//鏁伴噺鎷h揣 + { + if (boxInfo.Count() > 1) + { + throw Oops.Bah("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣"); + } + decimal boxQty = boxInfo.First().Qty; + if (Convert.ToDecimal(pickQty1) > boxQty) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + //if (Convert.ToInt32(pickQty1) > needQty) + //{ + // throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); + //} + } + 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揣鐨勬暟閲� + foreach (var item in boxInfos) + { + if (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, + 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, + LotNo = allot.LotNo, + LotText = allot.LotText, + SupplierLot = allot.SupplierLot, + SkuNo = allot.SkuNo, + SkuName = allot.SkuName, + Standard = allot.Standard, + PalletNo = palletNo, + CompleteQty = biaoShi == "3" ? decimal.Parse(pickQty1) : item.Qty, - // CreateUser = userId - // }; - // comList.Add(completeDetail); + 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(); - // } - // } + if (biaoShi != "3") + { + //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 + await Db.Deleteable(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(); + pickQty += item.Qty; + } + 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 += decimal.Parse(pickQty1); + } + } + //鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅 + if (biaoShi == "1" || biaoShi == "2") + { + var boxSurplusList = new List<DataBoxInfo>(); + if (biaoShi == "1") + { + boxSurplusList = boxInfo.Where(m => m.BoxNo2 != boxNo).ToList(); + } + else + { + boxSurplusList = boxInfo.Where(m => m.BoxNo3 != boxNo).ToList(); + } + foreach (var item in boxSurplusList) + { + item.BitBoxMark = "1"; + await Db.Updateable(item).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"; - // } + 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(); - // 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(); + //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� + 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"; + } - // 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); - // } - //} + 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) { -- Gitblit v1.8.0