From 7631b07ef475e8372811b01563a9719033a0a074 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期二, 11 三月 2025 19:57:08 +0800 Subject: [PATCH] Merge branch 'wxw' --- Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 327 ++++++++++++++---------------------------------------- 1 files changed, 85 insertions(+), 242 deletions(-) diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index 8726081..35e9210 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -959,10 +959,11 @@ Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>() //.And(it => it.WareHouseNo == wareHouseNo) .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus)) - .And(m => skuStrList.Contains(m.SkuNo)) + //.And(m => skuStrList.Contains(m.SkuNo)) .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓� .AndIF(!string.IsNullOrWhiteSpace(msg), it => (it.SkuNo.Contains(msg) || it.SkuName.Contains(msg) || it.LotNo.Contains(msg))) - .And(it => (it.Qty - it.LockQty - it.FrozenQty) > 0) + //.And(it => (it.Qty - it.LockQty - it.FrozenQty) > 0) + .And(it=>!string.IsNullOrEmpty(it.LotNo)) .And(it => (it.Status == "0" || it.Status == "1")) .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏� //搴撳瓨鏄庣粏 @@ -983,42 +984,42 @@ }).ToList(); //搴撳瓨鎬昏〃 - var stock = stockRst.GetAllAsync().Select(it => new ExStockInfoDto - { - SkuNo = it.SkuNo, - SkuName = it.SkuName, - LotNo = it.LotNo, - Standard = it.Standard, - //Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty, - Qty = it.Qty - it.LockQty - it.FrozenQty, + //var stock = stockRst.GetAllAsync().Select(it => new ExStockInfoDto + //{ + // SkuNo = it.SkuNo, + // SkuName = it.SkuName, + // LotNo = it.LotNo, + // Standard = it.Standard, + // //Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty, + // Qty = it.Qty - it.LockQty - it.FrozenQty, - }).ToList(); + //}).ToList(); - foreach (var l in stockDetail.ToArray()) - { - var fq = stock.Where(s => s.SkuNo == l.SkuNo); - if (!string.IsNullOrWhiteSpace(l.LotNo)) - { - fq = fq.Where(s => s.LotNo == l.LotNo); - } - else - { - fq = fq.Where(s => string.IsNullOrWhiteSpace(s.LotNo)); - } - var f = fq.FirstOrDefault(); - if (f == null) - { - throw new Exception("搴撳瓨淇℃伅閿欒锛岃鏍稿疄"); - } - if (f.Qty != null && f.Qty.Value < l.Qty) - { - l.Qty = f.Qty.Value; - } - if (l.Qty <= 0) - { - stockDetail.Remove(l); - } - } + //foreach (var l in stockDetail.ToArray()) + //{ + // var fq = stock.Where(s => s.SkuNo == l.SkuNo); + // if (!string.IsNullOrWhiteSpace(l.LotNo)) + // { + // fq = fq.Where(s => s.LotNo == l.LotNo); + // } + // else + // { + // fq = fq.Where(s => string.IsNullOrWhiteSpace(s.LotNo)); + // } + // var f = fq.FirstOrDefault(); + // if (f == null) + // { + // throw new Exception("搴撳瓨淇℃伅閿欒锛岃鏍稿疄"); + // } + // if (f.Qty != null && f.Qty.Value < l.Qty) + // { + // l.Qty = f.Qty.Value; + // } + // if (l.Qty <= 0) + // { + // stockDetail.Remove(l); + // } + //} return stockDetail; @@ -1037,14 +1038,7 @@ if (model == null || model.Detail.Count == 0) { throw new Exception("鍙傛暟寮傚父"); - } - var skuNos = model.Detail.Select(a => a.SkuNo).Distinct().ToList(); - //鏍规嵁鐗╂枡鍙疯幏鍙栫墿鏂欎俊鎭�佸簱瀛樻槑缁嗕腑鑾峰彇鎵规鎻忚堪渚涜揣鎵规绛� - var skuList = Db.Queryable<SysMaterials>().Where(a => skuNos.Contains(a.SkuNo) && a.IsDel == "0").ToList(); - var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList(); - //var palletList = contextDb.Queryable<DataStockDetail>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList(); - //瀹㈡埛淇℃伅 - var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList(); + } var billNo = ""; var bl = true; do @@ -1055,111 +1049,58 @@ bl = Db.Queryable<BllExportNotice>().Any(m => m.SONo == no); } while (bl); - Db.BeginTran();//寮�鍚簨鍔� - try { var list = new List<BllExportNoticeDetail>(); //娣诲姞鍑哄簱鍗� - foreach (var d in model.Detail) + foreach (var item in model.Detail) { - if (d.Qty < 1) + if (item.Qty < 1) { throw new Exception("鍑哄簱鏁伴噺蹇呴』澶т簬0"); } - var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo); - if (sku == null) + if (string.IsNullOrWhiteSpace(item.LotNo)) { - throw new Exception($"鐗╂枡淇℃伅涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.SkuNo}"); + throw new Exception("鎵规涓嶅彲涓虹┖!"); } - - //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�4:涓嶅悎鏍煎搧鍑哄簱銆�6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆� ///3锛氱墿鏂欏彇鏍峰嚭搴撱��5:涓棿鍝佸嚭搴撱��8:瀵勫瓨鍑哄簱 - if (model.Type == "0" || model.Type == "2" || model.Type == "4" || model.Type == "7") + var soNoticeDetail = Db.Queryable<BllExportNoticeDetail>().First(w => w.IsDel == "0" && w.LotNo == item.LotNo); + if (soNoticeDetail != null) { - if (string.IsNullOrWhiteSpace(d.LotNo)) + var soNotice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == soNoticeDetail.SONo && (w.Status == "0" || w.Status == "1" || w.Status == "2" || w.Status == "3")); + if (soNotice != null) { - throw new Exception("鎵规涓嶅彲涓虹┖!"); - } - } - - if (model.Type == "1") - { - if (list.Count(m=>m.SkuNo == d.SkuNo)>=2) - { - throw new Exception("棰嗘枡鍑哄簱鍗曞悓鍗曟嵁鍚岀墿鏂欎笉鍏佽瓒呰繃3涓壒娆℃贩鎵瑰嚭搴�"); - } - } - else - { - if (list.Count(m => m.SkuNo == d.SkuNo) >= 1) - { - throw new Exception("鍑哄簱鍗曞悓鍗曟嵁鍚岀墿鏂欎笉鍏佽瓒呰繃2涓壒娆℃贩鎵瑰嚭搴�"); + throw new Exception($"璇ユ壒娆℃湁鏈畬鎴愮殑鍑哄簱鍗曪紝鎵规鍙凤細{soNoticeDetail.LotNo}!"); } } //搴撳瓨 - List<DataStock> stocks; + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LotNo == item.LotNo); - decimal q1 = 0; - Dictionary<int, decimal> dic = new Dictionary<int, decimal>(); - if (!string.IsNullOrWhiteSpace(d.LotNo)) - { - stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList(); - } - else - { - stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); - } - if (stocks.Count < 1) - { - throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}"); - } - //鍒ゆ柇鏁伴噺 - var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; - if (d.Qty > qty) - { - throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻"); - } - - var item = new BllExportNoticeDetail() + var noticeDetail = new BllExportNoticeDetail() { SONo = billNo, - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - LotNo = d.LotNo, + SkuNo = stockDetail.SkuNo, + SkuName = stockDetail.SkuName, + Standard = stockDetail.Standard, + LotNo = stockDetail.LotNo, LotText = "", Status = "0", - Qty = d.Qty, + Qty = item.Qty, AllotQty = 0, FactQty = 0, CompleteQty = 0, - PackagNo = sku.PackagNo, - Price = sku.Price, - Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty, - IsBale = d.IsBale, - IsBelt = d.IsBelt, - SupplierLot = stocks.First().SupplierLot, - IsWave = "0", - WaveNo = "", + //PackagNo = sku.PackagNo, + //Price = sku.Price, + //Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty, + //IsBale = d.IsBale, + //IsBelt = d.IsBelt, + //SupplierLot = stocks.First().SupplierLot, + //IsWave = "0", + //WaveNo = "", CreateUser = userId, }; - list.Add(item); - - - stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺 - var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty }) - .ExecuteCommand(); - - //foreach (var s in dic) - //{ - // var st = stockList.First(m => m.Id == s.Key); - // st.LockQty += s.Value;//閿佸畾鏁伴噺 - // var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty }) - // .ExecuteCommand(); - //} - + list.Add(noticeDetail); } var notice = new BllExportNotice() { @@ -1167,8 +1108,8 @@ Type = model.Type, Status = "0", Origin = "WMS", - CustomerNo = model.CustomerNo, - CustomerName = customer.FirstOrDefault() == null ? "" : customer.First().CustomerName, + //CustomerNo = model.CustomerNo, + //CustomerName = customer.FirstOrDefault() == null ? "" : customer.First().CustomerName, LogisticsId = model.LogisticsId, IsWave = "0", WaveNo = "", @@ -1674,37 +1615,16 @@ throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︽湭绛夊緟鎵ц鎴栨潵婧愭槸鍚︽槸WMS"); } - //鎬诲簱瀛樹俊鎭� - var stockList = Db.Queryable<DataStock>().ToList(); //鍑哄簱鍗曟槑缁� var noticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).ToList(); Db.BeginTran();//寮�鍚簨鍔� try { - foreach (var d in noticeDetail) + foreach (var item in noticeDetail) { - //鎬诲簱瀛� - var sq = stockList.Where(s => s.SkuNo == d.SkuNo); - if (!string.IsNullOrWhiteSpace(d.LotNo)) - { - sq = sq.Where(s => s.LotNo == d.LotNo); - } - else - { - sq = sq.Where(s => string.IsNullOrWhiteSpace(s.LotNo)); - } - var fd = sq.FirstOrDefault(); - if (fd == null) - { - throw new Exception($"鏈壘鍒扮墿鏂檣d.SkuNo}銆佹壒娆d.LotNo} 鐨勫簱瀛樹俊鎭�"); - } - fd.LockQty -= d.Qty; - d.IsDel = "1"; - d.UpdateUser = userId; - d.UpdateTime = DateTime.Now; - Db.Updateable(d).ExecuteCommand(); - Db.Updateable(fd).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + item.IsDel = "1"; } + Db.Updateable(noticeDetail).ExecuteCommand(); //鍒犻櫎鍑哄簱鍗� notice.IsDel = "1"; notice.UpdateUser = userId; @@ -4078,38 +3998,30 @@ { throw new Exception("鏈煡璇㈠埌浠诲姟淇℃伅"); } - //鑾峰彇瀵瑰簲搴撲綅淇℃伅 - var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); - if (startlocat == null) + if (task.OrderType == "0" || task.OrderType == "3")//鍏ュ簱鎴栫Щ搴� { - throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅"); - } - startlocat.Status = "0";//淇敼鍒嗛厤淇℃伅鐘舵�� - //鑾峰彇鍌ㄤ綅淇℃伅 - var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); - //鑾峰彇绉诲簱浠籨鍔″搴旂洰鏍囧偍浣嶄俊鎭� - SysStorageLocat endlocat = new SysStorageLocat(); - if (task.Type == "2") - { - endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.EndLocat); + //鑾峰彇鐩爣搴撲綅淇℃伅 + var endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.EndLocat); if (endlocat == null) { throw new Exception("鏈煡璇㈠埌鐩爣鍌ㄤ綅淇℃伅"); } - } - if (locat == null) - { - Db.RollbackTran(); - throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅锛岃鏍稿疄锛�"); - } - locat.Status = "1"; //鏈夌墿鍝� - Db.Updateable(locat).ExecuteCommand(); - if (endlocat != null) - { - endlocat.Status = "0"; //绌哄偍浣� 0 + endlocat.Status = "0";//绌哄偍浣� + //淇敼鐩爣鍌ㄤ綅鐘舵�� Db.Updateable(endlocat).ExecuteCommand(); } - + if (task.OrderType == "1" || task.OrderType == "3")//鍑哄簱鎴栫Щ搴� + { + //鑾峰彇璧峰搴撲綅淇℃伅 + var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.StartLocat); + if (startlocat == null) + { + throw new Exception("鏈煡璇㈠埌璧峰鍌ㄤ綅淇℃伅"); + } + startlocat.Status = "1";//鏈夌墿鍝� + //淇敼璧峰鍌ㄤ綅鐘舵�� + Db.Updateable(startlocat).ExecuteCommand(); + } //淇敼浠诲姟 task.IsSuccess = 1; task.IsSend = 0; @@ -4118,75 +4030,6 @@ task.Status = "4"; task.CancelDate = DateTime.Now; Db.Updateable(task).ExecuteCommand(); - - //鍑哄簱鍒嗛厤淇℃伅 - var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.TaskNo == taskNo).ToList(); - foreach (var item in allot) - { - item.Status = "0";//淇敼鍒嗛厤淇℃伅鐘舵�� - item.TaskNo = ""; - var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); - if (noticeDetail == null) - { - throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟槑缁嗕俊鎭�"); - } - - noticeDetail.FactQty -= item.Qty; //淇敼鍑哄簱鍗曟槑缁嗙殑涓嬫灦鏁伴噺 - Db.Updateable(noticeDetail).ExecuteCommand(); - - if (noticeDetail.FactQty == 0) - { - var noticeDetail2 = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo && m.Id != noticeDetail.Id).ToList(); - var num = noticeDetail2.Count(m => m.FactQty > 0); - //鍒ゆ柇鍑哄簱鍗曠殑鎵�鏈夋槑缁嗘槸鍚﹂兘涓�0锛涘鏋滀负0鍙樻洿鍑哄簱鍗曠姸鎬佷负宸插垎閰� - if (num == 0) - { - var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo); - notice.Status = "2"; - Db.Updateable(notice).ExecuteCommand(); - } - } - } - //鍒ゆ柇鏄惁瀛樺湪鍒嗛厤淇℃伅 - if (allot == null) - { - //鑾峰彇搴撳瓨鏄庣粏 - var stockDetail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.PalletNo == task.PalletNo); - //鑾峰彇搴撳瓨 - var datastock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo); - //鑾峰彇鍌ㄤ綅淇℃伅 - var locate = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == stockDetail.LocatNo); - - //鍒ゆ柇鏄惁涓虹┖鎵樼洏 - if (stockDetail.SkuNo == "100099") - { - //淇敼搴撳瓨鏄庣粏 - stockDetail.LockQty -= stockDetail.Qty; //閿佸畾鏁伴噺 - stockDetail.Status = "0"; //搴撳瓨鐘舵�� 0锛氬緟鍒嗛厤 - - //淇敼搴撳瓨鎬昏〃 - datastock.LockQty -= (int)stockDetail.Qty; //閿佸畾鏁伴噺 - - //淇敼鍌ㄤ綅鐘舵�� - locate.Status = "1"; //鍌ㄤ綅鐘舵�� 1锛氭湁鐗╁搧 - - Db.Updateable(stockDetail).ExecuteCommand(); - Db.Updateable(datastock).ExecuteCommand(); - Db.Updateable(locate).ExecuteCommand(); - } - else - { - //淇敼鍌ㄤ綅鐘舵�� - locate.Status = "1"; //鍌ㄤ綅鐘舵�� 1锛氭湁鐗╁搧 - Db.Updateable(locate).ExecuteCommand(); - - } - - } - else - { - Db.Updateable(allot).ExecuteCommand(); - } //娣诲姞鎿嶄綔鏃ュ織璁板綍 var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "鍙栨秷", $"鐐瑰嚮鍙栨秷鎸夐挳銆佸彇娑堜簡浠诲姟鍙蜂负锛歿taskNo}鐨勪换鍔�", (int)userId); -- Gitblit v1.8.0