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/BllSoServer/ExportNoticeServer.cs | 989 +++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 700 insertions(+), 289 deletions(-) diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index f959f68..e85ca4e 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -108,48 +108,118 @@ } //搴撳瓨 List<DataStock> stocks; + + 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(); + 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} 搴撳瓨鏁伴噺涓嶈冻"); + } + if (qty > d.Qty - q1) + { + q1 += d.Qty - q1; + dic.Add(stocks.First().Id, d.Qty - q1); + } + else + { + q1 += qty; + dic.Add(stocks.First().Id, qty); + } + } else { - stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); + stocks = stockList.Where(m=> m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList(); + + foreach (var demo in stocks) + { + if (q1 >= d.Qty) + { + continue; + } + var q2 = demo.Qty - demo.LockQty - demo.FrozenQty; + + if (q2 > d.Qty - q1) + { + q1 += d.Qty - q1; + dic.Add(demo.Id, d.Qty - q1); + } + else + { + q1 += q2; + dic.Add(demo.Id,q2); + } + + } + if (d.Qty >= q1) + { + stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); + if (stocks.Count == 0) + { + throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻"); + } + var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; + if (q2 > d.Qty - q1) + { + q1 += d.Qty - q1; + dic.Add(stocks.First().Id, d.Qty - q1); + } + else + { + q1 += q2; + dic.Add(stocks.First().Id, q2); + } + } + if (d.Qty > q1) + { + throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻"); + } } - if (stocks.Count < 1) + + foreach (var s in dic) { - throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}"); + var st = stockList.First(a => a.Id == s.Key); + var item = new BllExportNoticeDetail() + { + SONo = billNo, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = st.LotNo, + LotText = st.LotText, + Qty = s.Value, + AllotQty = 0, + FactQty = 0, + CompleteQty = 0, + PackagNo = sku.PackagNo, + Price = sku.Price, + Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty, + IsBale = "", + IsBelt = "", + SupplierLot = stocks.First().SupplierLot, + IsWave = "0", + WaveNo = "", + IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1", + + CreateUser = 0, + }; + list.Add(item); + + st.LockQty += s.Value;//閿佸畾鏁伴噺 + var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty }) + .ExecuteCommand(); } - - var item = new BllExportNoticeDetail() - { - SONo = billNo, - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - LotNo = d.LotNo, - LotText = "", - Qty = d.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 = "", - IsBelt = "", - SupplierLot = stocks.First().SupplierLot, - IsWave = "0", - WaveNo = "", - - CreateUser = 0, - }; - list.Add(item); - stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺 - - var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty }) - .ExecuteCommand(); - + } var notice = new BllExportNotice() { @@ -330,42 +400,60 @@ } } - public List<ExStockInfoDto> GetStockGroupList(string type, string msg) + public List<ExStockInfoDto> GetStockGroupList(string type, string ownerNo, string msg) { try { + if (string.IsNullOrEmpty(type)) + { + throw new Exception("璇烽�夋嫨鍑哄簱鍗曠被鍨�"); + } + if (type == "6" && string.IsNullOrEmpty(ownerNo)) + { + throw new Exception("浠e偍鍗曟嵁璇烽�夋嫨璐т富"); + } var plnList = new List<string>() { "100099" }; var skuList = new List<string>(); var sku = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && !plnList.Contains(m.SkuNo)); //鎺掗櫎绌烘墭鐩樼殑鐗╂枡闆嗗悎 string skuType = string.Empty; + string inspectStatus = string.Empty; switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧 { - case "0"://鎴愬搧鍏ュ簱 + case "0"://鎴愬搧鍑哄簱 skuType = "(2)"; + inspectStatus = "1"; break; case "1"://棰嗘枡鍑哄簱 skuType = "(0,1,3)"; + inspectStatus = "1"; break; case "2"://鎶芥鍑哄簱 - skuType = "(2)"; + skuType = "(0,1,2,3)"; + inspectStatus = "0,1,2"; break; case "3"://鐗╂枡鍙栨牱鍑哄簱 - skuType = "(0)"; + skuType = "(0,1,2,3)"; + inspectStatus = "0"; break; case "4"://涓嶅悎鏍煎搧鍑哄簱 - skuType = "(2)"; + skuType = "(0,1,2,3)"; + inspectStatus = "2"; break; case "5"://涓棿鍝佸嚭搴� skuType = "(4)"; + inspectStatus = "0,1"; break; case "6"://浠e偍鍑哄簱 - skuType = "(2)"; + skuType = "(0,1,2,3)"; + inspectStatus = "0,1"; break; case "8"://瀵勫瓨鍑哄簱 - skuType = "(3)"; + skuType = "(0,1,2,3)"; + inspectStatus = "0,1"; break; default: //鍏跺畠鍑哄簱 skuType = "(0,1,2,3,4)"; + inspectStatus = "0,1"; break; } skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList(); @@ -373,13 +461,23 @@ { throw new Exception("鏈煡鍒板搴斿嚭搴撶被鍨嬬殑鐗╂枡"); } + + if (type!="8") + { + skuList = skuList.Where(m => m != "100088").ToList(); + } + else + { + skuList = skuList.Where(m => m == "100088").ToList(); + } //skuList = sku.Select(m => m.SkuNo).ToList(); var stockRst = new StockServer(); var stockDetailRst = new StockDetailServer(); Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>() //.And(it => it.WareHouseNo == wareHouseNo) - .And(it => it.InspectStatus == "1") + .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus)) .And(m => skuList.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.Status == "0" || it.Status == "1")) @@ -408,7 +506,8 @@ SkuName = it.SkuName, LotNo = it.LotNo, Standard = it.Standard, - Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty + //Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty, + Qty = it.Qty - it.LockQty - it.FrozenQty, }).ToList(); @@ -493,29 +592,82 @@ } //搴撳瓨 List<DataStock> stocks; - //List<DataStockDetail> pallets; + + 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(); - //pallets = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.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} 搴撳瓨鏁伴噺涓嶈冻"); + //} + //if (qty > d.Qty - q1) + //{ + // q1 += d.Qty - q1; + // dic.Add(stocks.First().Id, d.Qty - q1); + //} + //else + //{ + // q1 += qty; + // dic.Add(stocks.First().Id, qty); + //} } else { - stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); - //pallets = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList(); - } - if (stocks.Count < 1) - { - throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}"); - } + //stocks = stockList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList(); - //鍒ゆ柇鏁伴噺 - var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; - if (d.Qty > qty) - { - throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻"); - } + //foreach (var demo in stocks) + //{ + // if (q1 >= d.Qty) + // { + // continue; + // } + // var q2 = demo.Qty - demo.LockQty - demo.FrozenQty; + // if (q2 > d.Qty - q1) + // { + // q1 += d.Qty - q1; + // dic.Add(demo.Id, d.Qty - q1); + // } + // else + // { + // q1 += q2; + // dic.Add(demo.Id, q2); + // } + + //} + //if (d.Qty >= q1) + //{ + stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); + // if (stocks.Count == 0) + // { + // throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻"); + // } + // var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; + // if (q2 > d.Qty - q1) + // { + // q1 += d.Qty - q1; + // dic.Add(stocks.First().Id, d.Qty - q1); + // } + // else + // { + // q1 += q2; + // dic.Add(stocks.First().Id, q2); + // } + //} + //if (d.Qty > q1) + //{ + // throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻"); + //} + } + var item = new BllExportNoticeDetail() { SONo = billNo, @@ -541,10 +693,19 @@ CreateUser = userId, }; list.Add(item); - stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺 + + 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(); + //} } var notice = new BllExportNotice() @@ -687,161 +848,285 @@ try { - //鍒犻櫎鏃� - foreach (var d in noticeDetail) + if (notice.Origin == "WMS") { - var mq = model.Detail.Where(o => o.SkuNo == d.SkuNo).ToList(); - if (!string.IsNullOrWhiteSpace(d.LotNo)) + //鍒犻櫎鏃� + foreach (var d in noticeDetail) { - mq = mq.Where(o => o.LotNo == d.LotNo).ToList(); - } - if (mq.Any()) //濡傛灉鏈夎繖涓墿鏂欏強鎵规鍒欒烦杩� - { - continue; - } - // - var fl = stockList.Where(s => s.SkuNo == d.SkuNo).ToList(); - DataStock fls; - if (!string.IsNullOrWhiteSpace(d.LotNo)) - { - fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo); - } - else - { - fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)); - } - if (fls == null) - { - throw new Exception($"鏈壘鍒扮墿鏂檣d.SkuNo}銆佹壒娆d.LotNo} 鐨勫簱瀛樹俊鎭�"); - } - fls.LockQty -= d.Qty; - d.IsDel = "1"; - d.UpdateUser = userId; - d.UpdateTime = DateTime.Now; - Db.Updateable(d).ExecuteCommand(); - Db.Updateable(fls).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); - } - - //鏇存柊鍑哄簱鍗� - foreach (var d in model.Detail) - { - if (d.Qty < 1) - { - throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0"); - } - var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo); - if (sku == null) - { - throw new Exception("鍑哄簱鐗╁搧涓虹┖"); - } - //搴撳瓨 - List<DataStock> stocks; - List<DataStockDetail> pallet; - if (!string.IsNullOrWhiteSpace(d.LotNo)) - { - stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList(); - pallet = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList(); - } - else - { - stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); - pallet = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList(); - } - - if (stocks.Count < 1) - { - throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻"); - } - var stock = stocks.First();//鎬诲簱瀛� - // - BllExportNoticeDetail old; - if (string.IsNullOrWhiteSpace(d.LotNo)) - { - old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo)); - } - else - { - old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo); - } - - //鏂板姞椤� - if (old == null) - { - //鍒ゆ柇鏁伴噺 - var qty = stock.Qty - stock.LockQty - stock.FrozenQty; - if (d.Qty > qty) + var mq = model.Detail.Where(o => o.SkuNo == d.SkuNo).ToList(); + if (!string.IsNullOrWhiteSpace(d.LotNo)) { - throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻"); + mq = mq.Where(o => o.LotNo == d.LotNo).ToList(); } - - var item = new BllExportNoticeDetail() + if (mq.Any()) //濡傛灉鏈夎繖涓墿鏂欏強鎵规鍒欒烦杩� { - SONo = notice.SONo, - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - LotNo = d.LotNo, - LotText = "", - Status = "0", - Qty = d.Qty, - AllotQty = 0, - FactQty = 0, - CompleteQty = 0, - PackagNo = sku.PackagNo, - Price = sku.Price, - Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty, - IsBale = d.IsBale, - IsBelt = d.IsBelt, - SupplierLot = stocks.First().SupplierLot, - IsWave = "0", - WaveNo = "", - - CreateUser = userId, - }; - - stock.LockQty += d.Qty;//閿佸畾鏁伴噺 - var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand(); - var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); - } - else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt) - { - if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty) - { - throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻"); + continue; } - //澧炲姞 - if (d.Qty > old.Qty) + // + var fl = stockList.Where(s => s.SkuNo == d.SkuNo).ToList(); + DataStock fls; + if (!string.IsNullOrWhiteSpace(d.LotNo)) { - stock.LockQty += d.Qty - old.Qty; + fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo); } else { - stock.LockQty -= old.Qty - d.Qty; + fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)); } - old.IsBale = d.IsBale; - old.IsBelt = d.IsBelt; - old.Qty = d.Qty; - old.UpdateUser = userId; - old.UpdateTime = DateTime.Now; - var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand(); - var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + if (fls == null) + { + throw new Exception($"鏈壘鍒扮墿鏂檣d.SkuNo}銆佹壒娆d.LotNo} 鐨勫簱瀛樹俊鎭�"); + } + fls.LockQty -= d.Qty; + d.IsDel = "1"; + d.UpdateUser = userId; + d.UpdateTime = DateTime.Now; + Db.Updateable(d).ExecuteCommand(); + Db.Updateable(fls).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + } + + //鏇存柊鍑哄簱鍗� + foreach (var d in model.Detail) + { + if (d.Qty < 1) + { + throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0"); + } + var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo); + if (sku == null) + { + throw new Exception("鍑哄簱鐗╁搧涓虹┖"); + } + //搴撳瓨 + List<DataStock> stocks; + List<DataStockDetail> pallet; + if (!string.IsNullOrWhiteSpace(d.LotNo)) + { + stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList(); + pallet = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList(); + } + else + { + stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); + pallet = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList(); + } + + if (stocks.Count < 1) + { + throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻"); + } + var stock = stocks.First();//鎬诲簱瀛� + // + BllExportNoticeDetail old; + if (string.IsNullOrWhiteSpace(d.LotNo)) + { + old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo)); + } + else + { + old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo); + } + + //鏂板姞椤� + if (old == null) + { + //鍒ゆ柇鏁伴噺 + var qty = stock.Qty - stock.LockQty - stock.FrozenQty; + if (d.Qty > qty) + { + throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻"); + } + + var item = new BllExportNoticeDetail() + { + SONo = notice.SONo, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = d.LotNo, + LotText = "", + Status = "0", + Qty = d.Qty, + AllotQty = 0, + FactQty = 0, + CompleteQty = 0, + PackagNo = sku.PackagNo, + Price = sku.Price, + Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty, + IsBale = d.IsBale, + IsBelt = d.IsBelt, + SupplierLot = stocks.First().SupplierLot, + IsWave = "0", + WaveNo = "", + + CreateUser = userId, + }; + + stock.LockQty += d.Qty;//閿佸畾鏁伴噺 + var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand(); + var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + } + else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt) + { + if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty) + { + throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻"); + } + //澧炲姞 + if (d.Qty > old.Qty) + { + stock.LockQty += d.Qty - old.Qty; + } + else + { + stock.LockQty -= old.Qty - d.Qty; + } + old.IsBale = d.IsBale; + old.IsBelt = d.IsBelt; + old.Qty = d.Qty; + old.UpdateUser = userId; + old.UpdateTime = DateTime.Now; + var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand(); + var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + } + } + + //瀹㈡埛淇℃伅 + var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault(); + notice.Type = model.Type; + notice.CustomerNo = model.CustomerNo; + notice.CustomerName = customer == null ? "" : customer.CustomerName; + notice.LogisticsId = model.LogisticsId; + notice.UpdateUser = userId; + notice.UpdateTime = DateTime.Now; + + var n = Db.Updateable(notice).ExecuteCommand(); + if (n <= 0) + { + Db.RollbackTran(); + return false; } } - - //瀹㈡埛淇℃伅 - var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault(); - notice.Type = model.Type; - notice.CustomerNo = model.CustomerNo; - notice.CustomerName = customer == null ? "" : customer.CustomerName; - notice.LogisticsId = model.LogisticsId; - notice.UpdateUser = userId; - notice.UpdateTime = DateTime.Now; - - var n = Db.Updateable(notice).ExecuteCommand(); - if (n <= 0) + else //erp/mes { - Db.RollbackTran(); - return false; + //鏇存柊鍑哄簱鍗� + foreach (var d in model.Detail) + { + if (d.Qty < 1) + { + throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0"); + } + var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo); + if (sku == null) + { + throw new Exception("鍑哄簱鐗╁搧涓虹┖"); + } + //搴撳瓨 + List<DataStock> stocks; + if (!string.IsNullOrWhiteSpace(d.LotNo)) + { + stocks = stockList.Where(s => s.SkuNo == d.SkuNo && d.LotNo.Contains(s.LotNo)).ToList(); + } + else + { + stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); + } + + if (stocks.Count < 1) + { + throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻"); + } + var stock = stocks.First();//鎬诲簱瀛� + // + BllExportNoticeDetail old; + if (string.IsNullOrWhiteSpace(d.LotNo)) + { + old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo)); + } + else + { + old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo); + } + + //鏂板姞椤� + if (old == null) + { + //鍒ゆ柇鏁伴噺 + var qty = stock.Qty - stock.LockQty - stock.FrozenQty; + if (d.Qty > qty) + { + throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻"); + } + + var item = new BllExportNoticeDetail() + { + SONo = notice.SONo, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = d.LotNo, + LotText = "", + Status = "0", + Qty = d.Qty, + AllotQty = 0, + FactQty = 0, + CompleteQty = 0, + PackagNo = sku.PackagNo, + Price = sku.Price, + Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty, + IsBale = d.IsBale, + IsBelt = d.IsBelt, + SupplierLot = stocks.First().SupplierLot, + IsWave = "0", + WaveNo = "", + + CreateUser = userId, + }; + + stock.LockQty += d.Qty;//閿佸畾鏁伴噺 + var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand(); + var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + } + else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt) + { + if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty) + { + throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻"); + } + //澧炲姞 + if (d.Qty > old.Qty) + { + stock.LockQty += d.Qty - old.Qty; + } + else + { + stock.LockQty -= old.Qty - d.Qty; + } + old.IsBale = d.IsBale; + old.IsBelt = d.IsBelt; + old.Qty = d.Qty; + old.UpdateUser = userId; + old.UpdateTime = DateTime.Now; + var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand(); + var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + } + } + + //瀹㈡埛淇℃伅 + var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault(); + notice.Type = model.Type; + notice.CustomerNo = model.CustomerNo; + notice.CustomerName = customer == null ? "" : customer.CustomerName; + notice.LogisticsId = model.LogisticsId; + notice.UpdateUser = userId; + notice.UpdateTime = DateTime.Now; + + var n = Db.Updateable(notice).ExecuteCommand(); + if (n <= 0) + { + Db.RollbackTran(); + return false; + } } //娣诲姞鎿嶄綔鏃ュ織璁板綍 var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "缂栬緫", $"缂栬緫浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId); @@ -1466,11 +1751,11 @@ toLocation = outMode;//鍑哄簱鍙� } } - else + else { unstackingMode2 = "1";//闈炴垚鍝佸嚭搴撹蛋PDA鎷嗗灈 toLocation = outMode;//鍑哄簱鍙� - } + } #endregion // 鍌ㄤ綅鍙� @@ -1597,6 +1882,7 @@ OutMode = "", //鐩爣鍦板潃 Order = 1 }); + taskNoStr = exTask.TaskNo; } else if (locate.Depth == "02") //娣卞害涓�2 { @@ -1685,7 +1971,7 @@ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 StartLocat = stockNew.LocatNo,//璧峰浣嶇疆 - EndLocat = "",//鐩爣浣嶇疆 + EndLocat = toLocation,//鐩爣浣嶇疆 PalletNo = stockNew.PalletNo,//鎵樼洏鐮� IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� @@ -1702,7 +1988,7 @@ StartRoadway = slotBefore.RoadwayNo, //璧峰宸烽亾 PalletNo = stockNew.PalletNo,//鎵樼洏鍙� StartLocate = stockNew.LocatNo, // 璧峰浣嶇疆 - EndLocate = "", // 鐩爣浣嶇疆 + EndLocate = toLocation, // 鐩爣浣嶇疆 EndRoadway = "", // 鐩爣宸烽亾 TaskNo = exYkTask1.TaskNo, // 浠诲姟鍙� TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) @@ -1739,7 +2025,7 @@ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 StartLocat = locate.LocatNo,//璧峰浣嶇疆 - EndLocat = "",//鐩爣浣嶇疆 + EndLocat = toLocation,//鐩爣浣嶇疆 PalletNo = item.PalletNo,//鎵樼洏鐮� IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� @@ -1750,13 +2036,13 @@ Msg = locate.LocatNo + "鐨勫嚭搴撲换鍔�" }; Db.Insertable(exTask1).ExecuteCommand(); - + logTaskList.Add(exTask1); outDto2.Add(new OutCommandDto() { StartRoadway = locate.RoadwayNo, //璧峰宸烽亾 PalletNo = item.PalletNo,//鎵樼洏鍙� StartLocate = locate.LocatNo, // 璧峰浣嶇疆 - EndLocate = "", // 鐩爣浣嶇疆 + EndLocate = toLocation, // 鐩爣浣嶇疆 EndRoadway = locate.RoadwayNo, //鐩爣宸烽亾 TaskNo = exTask1.TaskNo, // 浠诲姟鍙� TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) @@ -1831,7 +2117,7 @@ var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo); if (taskNo == null) { - taskNo = logTaskList.First(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱 + taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱 } if (taskNo == null) { @@ -1850,7 +2136,8 @@ flagList.Add(1); } } - + outDto1.AddRange(moveDto); + outDto1.AddRange(outDto2); //娣诲姞鎿嶄綔鏃ュ織璁板綍 var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId); Db.CommitTran(); @@ -1885,23 +2172,23 @@ try { - var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") - response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); - var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") + //var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); + //var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") - ////瑙f瀽杩斿洖鏁版嵁 - var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); - if (wcsModel.StatusCode == 0) - { - //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// - new TaskServer().EditTaskIssueOk(list2, time1, time2); - str += "涓嬪彂鎴愬姛"; - } - if (wcsModel.StatusCode == -1) - { - new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); - throw new Exception(wcsModel.Msg); - } + //////瑙f瀽杩斿洖鏁版嵁 + //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); + //if (wcsModel.StatusCode == 0) + //{ + // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// + // new TaskServer().EditTaskIssueOk(list2, time1, time2); + // str += "涓嬪彂鎴愬姛"; + //} + //if (wcsModel.StatusCode == -1) + //{ + // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); + // throw new Exception(wcsModel.Msg); + //} } catch (Exception ex) { @@ -2087,6 +2374,86 @@ } } + /// <summary> + /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛� + /// </summary> + /// <param name="taskNo">浠诲姟鍙�</param> + /// <param name="userId">鎿嶄綔浜�</param> + /// <exception cref="Exception"></exception> + public void RelocationSuccess(string taskNo, int userId) + { + try + { + //褰撳墠浠诲姟淇℃伅 + var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + if (task == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); + } + if (task.Status == "2") + { + throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); + } + Db.BeginTran(); + //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); + //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅 + //褰撳墠浠诲姟涓殑鍘熷偍浣� + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat); + if (locate == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); + if (locate2 == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + + try + { + task.Status = "2";//浠诲姟鐘舵�� + task.IsSend = 0; + task.IsCancel = 0; + task.IsFinish = 0; + task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 + Db.Updateable(task).ExecuteCommand(); + + #region 淇敼鍌ㄤ綅鐘舵�� + + //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0 + locate.Status = "0"; + Db.Updateable(locate).ExecuteCommand(); + + //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1 + locate2.Status = "1"; + Db.Updateable(locate2).ExecuteCommand(); + foreach (var item in stockDetail) + { + item.WareHouseNo = locate2.WareHouseNo; + item.AreaNo = locate2.AreaNo; + item.RoadwayNo = locate2.RoadwayNo; + item.LocatNo = locate2.LocatNo; + } + Db.Updateable(stockDetail).ExecuteCommand(); + + #endregion + + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + catch (Exception ex) + { + throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message); + } + } + + //閲嶆柊涓嬪彂鍑哄簱浠诲姟 public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url) { @@ -2182,6 +2549,38 @@ { throw new Exception("鏈煡璇㈠埌浠诲姟淇℃伅"); } + //鑾峰彇瀵瑰簲搴撲綅淇℃伅 + var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); + if (startlocat == null) + { + 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); + 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 + Db.Updateable(endlocat).ExecuteCommand(); + } + //淇敼浠诲姟 task.IsSuccess = 1; task.IsSend = 0; @@ -2205,17 +2604,6 @@ noticeDetail.FactQty -= item.Qty; //淇敼鍑哄簱鍗曟槑缁嗙殑涓嬫灦鏁伴噺 Db.Updateable(noticeDetail).ExecuteCommand(); - - //鑾峰彇鍌ㄤ綅淇℃伅 - var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); - - if (locat == null) - { - Db.RollbackTran(); - throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅锛岃鏍稿疄锛�"); - } - locat.Status = "1"; //鏈夌墿鍝� - Db.Updateable(locat).ExecuteCommand(); if (noticeDetail.FactQty == 0) { @@ -2454,11 +2842,11 @@ { stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList(); } - + } else { - stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0").ToList(); //&& string.IsNullOrWhiteSpace(m.LotNo) + stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0" && string.IsNullOrWhiteSpace(m.LotNo)).ToList(); // } if (stockDetail.Count < 1) @@ -2466,19 +2854,23 @@ throw new Exception("搴撳瓨涓嶈冻,鏃犲彲鍑哄簱搴撳瓨"); } //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆�8:瀵勫瓨鍑哄簱 - if (notice.Type == "0" || notice.Type == "1" || notice.Type == "2" || notice.Type == "5")//鎴愬搧銆佸師杈呮枡鍑哄簱 + if (notice.Type == "0" || notice.Type == "1" )//鎴愬搧銆佸師杈呮枡鍑哄簱 { stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList(); } - else if (notice.Type == "3" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//鍙栨牱鍑哄簱 + else if (notice.Type == "3" )//鍙栨牱鍑哄簱 { stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList(); + } + else if (notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8") + { + stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1").ToList(); } else if (notice.Type == "4")//涓嶅悎鏍煎嚭搴� { stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList(); - } - + } + #region 鍖呰淇℃伅 var pack = packList.FirstOrDefault(p => p.PackagNo == detail.PackagNo); @@ -2570,22 +2962,22 @@ } var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand(); - if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱�� - { - if (string.IsNullOrWhiteSpace(detail.LotNo)) - { - detail.LotNo = s.LotNo; - - } - else - { - if (!detail.LotNo.Contains(s.LotNo)) - { - detail.LotNo += ";" + s.LotNo; - } - } - } - + //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱�� + //{ + // if (string.IsNullOrWhiteSpace(detail.LotNo)) + // { + // detail.LotNo = s.LotNo; + + // } + // else + // { + // if (!detail.LotNo.Contains(s.LotNo)) + // { + // detail.LotNo += ";" + s.LotNo; + // } + // } + //} + } detail.AllotQty += qty; detail.UpdateUser = userId; @@ -2594,7 +2986,7 @@ { detail.Status = "1"; } - + //搴撳瓨鎬昏〃 //var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo); //stock.LockQty += qty; @@ -2724,6 +3116,15 @@ d.Status = "0"; d.UpdateUser = userId; d.UpdateTime = DateTime.Now; + + //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱�� + //{ + // if (d.IsIssueLotNo != "1") + // { + // d.LotNo = ""; + // } + + //} } notice.Status = "0"; notice.UpdateUser = userId; @@ -2886,6 +3287,8 @@ //搴撳瓨鏄庣粏 var stockList = Db.Queryable<DataStockDetail>().Where(a => stockIds.Contains(a.Id)).ToList(); + //鍒嗛厤淇℃伅 + var allots = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == detail.Id && m.Status == "0").ToList(); //搴撳瓨鎬昏〃 //var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo); @@ -2899,37 +3302,48 @@ { throw new Exception("鎿嶄綔澶辫触锛岄儴鍒嗗偍浣嶅簱瀛樺紓甯革紒"); } - if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty - stock.InspectQty)) + if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty)) // 杈撳叆鐨勬暟閲� - 鎵樼洏涓婂彲鐢ㄧ殑鏁伴噺锛堟墭鐩樹笂鏁伴噺-閿佸畾鐨勬暟閲�-鍐荤粨鐨勬暟閲忥級 { throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忚秴鍑哄簱瀛樻暟閲忥紒"); } - //娣诲姞鍒嗛厤琛ㄤ俊鎭� - var allot = new BllExportAllot - { - SONo = notice.SONo, - WaveNo = "", - SODetailNo = detail.Id, - StockId = st.StockId, - LotNo = stock.LotNo, - LotText = stock.LotText, - SupplierLot = stock.SupplierLot, - SkuNo = stock.SkuNo, - SkuName = stock.SkuName, - Standard = stock.Standard, - PalletNo = stock.PalletNo, - IsBale = stock.IsBale, - IsBelt = stock.IsBelt, - Qty = st.Qty, - CompleteQty = 0, - Status = "0", - LogisticsId = notice.LogisticsId, - IsAdvance = "0", - OutMode = "",//鍑哄簱鍙� - CreateUser = userId, - CreateTime = DateTime.Now - }; - allotList.Add(allot); + var bl = allots.FirstOrDefault(m => m.StockId == st.StockId); + if (bl == null) + { + //娣诲姞鍒嗛厤琛ㄤ俊鎭� + var allot = new BllExportAllot + { + SONo = notice.SONo, + WaveNo = "", + SODetailNo = detail.Id, + StockId = st.StockId, + LotNo = stock.LotNo, + LotText = stock.LotText, + SupplierLot = stock.SupplierLot, + SkuNo = stock.SkuNo, + SkuName = stock.SkuName, + Standard = stock.Standard, + PalletNo = stock.PalletNo, + IsBale = stock.IsBale, + IsBelt = stock.IsBelt, + Qty = st.Qty, + CompleteQty = 0, + Status = "0", + LogisticsId = notice.LogisticsId, + IsAdvance = "0", + OutMode = "",//鍑哄簱鍙� + + CreateUser = userId, + CreateTime = DateTime.Now + }; + allotList.Add(allot); + } + else + { + bl.Qty += st.Qty; + Db.Updateable(bl).ExecuteCommand(); + } + //搴撳瓨鏄庣粏 stock.LockQty += st.Qty; stock.Status = stock.LockQty == stock.Qty ? "2" : "1"; @@ -3071,10 +3485,7 @@ var lie = int.Parse(oldAddress.Substring(2, 2)); var ceng = int.Parse(oldAddress.Substring(4, 2)); - var sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng})) as distNum - from SysStorageLocat - where Flag = '0' and Status = '0' and Depth = '02' and RoadwayNo = '{roadWay}' and AreaNo in '{category}' - order by distNum;"; + var sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng})) as distNum from SysStorageLocat where Flag = '0' and Status = '0' and Depth = '02' and RoadwayNo = '{roadWay}' and AreaNo in ('{category.AreaNo}') order by distNum;"; var addressModels = Db.Ado.SqlQuery<AddressCls>(sqlString).ToList(); if (addressModels.Count > 0) // 鍒ゆ柇鍚屽贩閬撳唴鎺掔┖搴撲綅 -- Gitblit v1.8.0