From 9cbdf67973c15ddbebb8c3e754f616c7024c692f Mon Sep 17 00:00:00 2001 From: Demo <Demo@DESKTOP-CPA90BF> Date: 星期日, 17 三月 2024 17:00:29 +0800 Subject: [PATCH] 修改bug问题 --- Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 632 ++++++++++++++++++++++++++++++++++++--------------- Wms/WMS.BLL/Logic/AllotSku.cs | 65 ++++- Wms/Model/ModelDto/DataDto/StockDetailDto.cs | 8 3 files changed, 498 insertions(+), 207 deletions(-) diff --git a/Wms/Model/ModelDto/DataDto/StockDetailDto.cs b/Wms/Model/ModelDto/DataDto/StockDetailDto.cs index fff1025..7707123 100644 --- a/Wms/Model/ModelDto/DataDto/StockDetailDto.cs +++ b/Wms/Model/ModelDto/DataDto/StockDetailDto.cs @@ -49,17 +49,17 @@ /// <summary> /// 閿佸畾鏁伴噺 /// </summary> - public int? LockQty { get; set; } + public decimal? LockQty { get; set; } /// <summary> /// 鍐荤粨鏁伴噺 /// </summary> - public int? FrozenQty { get; set; } + public decimal? FrozenQty { get; set; } /// <summary> /// 鍙娊妫�鏁伴噺 /// </summary> - public int? InspectQty { get; set; } + public decimal? InspectQty { get; set; } /// <summary> /// 鍏ュ簱鍗曞彿 @@ -69,7 +69,7 @@ /// <summary> /// 鍏ュ簱鏄庣粏鍙� /// </summary> - public int ASNDetailNo { get; set; } + public int? ASNDetailNo { get; set; } /// <summary> /// 鎵�灞炰粨搴� diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index 6cf26c6..93c1488 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -108,19 +108,84 @@ } //搴撳瓨 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) - { - throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}"); - } - + var item = new BllExportNoticeDetail() { SONo = billNo, @@ -146,11 +211,14 @@ CreateUser = 0, }; 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(); + } + } var notice = new BllExportNotice() { @@ -522,29 +590,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, @@ -570,10 +691,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() @@ -716,161 +846,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); @@ -2697,21 +2951,21 @@ } 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; + //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; - } - } - } + // } + // else + // { + // if (!detail.LotNo.Contains(s.LotNo)) + // { + // detail.LotNo += ";" + s.LotNo; + // } + // } + //} } detail.AllotQty += qty; @@ -2852,14 +3106,14 @@ 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 = ""; - } + //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; diff --git a/Wms/WMS.BLL/Logic/AllotSku.cs b/Wms/WMS.BLL/Logic/AllotSku.cs index 37dc98c..e54bfcb 100644 --- a/Wms/WMS.BLL/Logic/AllotSku.cs +++ b/Wms/WMS.BLL/Logic/AllotSku.cs @@ -275,31 +275,68 @@ var Db = DataContext.Db; var data = new List<StockDetailDto>(); - //搴撳鎵樼洏 - var detail1 = palletList.Where(m => string.IsNullOrWhiteSpace(m.LocatNo)).ToList(); - //骞冲簱鍐呮墭鐩� - var detail2 = palletList.Where(m => m.WareHouseNo == "W02").ToList(); - //绔嬪簱鍐呮墭鐩� - var detail3 = palletList.Where(m => m.WareHouseNo == "W01").ToList(); + var list = palletList.Select(m => new StockDetailDto() + { + Id = m.Id, + LotNo = m.LotNo, + LotText = m.LotText, + SupplierLot = m.SupplierLot, + OwnerNo = m.OwnerNo, + OwnerName = m.OwnerName, + SupplierNo = m.SupplierNo, + SupplierName = m.SupplierName, + SkuNo = m.SkuNo, + SkuName = m.SkuName, + Standard = m.Standard, + Qty = m.Qty, + LockQty = m.LockQty, + FrozenQty = m.FrozenQty, + InspectQty = m.InspectQty, + ASNNo = m.ASNNo, + ASNDetailNo = m.ASNDetailNo, + WareHouseNo = m.WareHouseNo, + RoadwayNo = m.RoadwayNo, + AreaNo = m.AreaNo, + LocatNo = m.LocatNo, + PalletNo = m.PalletNo, + PalletNo2 = m.PalletNo2, + PalletNo3 = m.PalletNo3, + CompleteTime = m.CompleteTime, + ProductionTime = m.ProductionTime, + ExpirationTime = m.ExpirationTime, + Status = m.Status, + InspectMark = m.InspectMark, + BitPalletMark = m.BitPalletMark, + InspectStatus = m.InspectStatus, + InspectTime = m.InspectTime, + PackagNo = m.PackagNo, + IsBale = m.IsBale, + IsBelt = m.IsBelt, + Demo = m.Demo, - var data1 = detail1.Select(m => new StockDetailDto()).ToList(); - var data2 = detail2.Select(m => new StockDetailDto()).ToList(); - var data3 = detail3.Select(m => new StockDetailDto()).ToList(); - foreach (var item in data2) + }).ToList(); + //搴撳鎵樼洏 + var detail1 = list.Where(m => string.IsNullOrWhiteSpace(m.LocatNo)).ToList(); + //骞冲簱鍐呮墭鐩� + var detail2 = list.Where(m => m.WareHouseNo == "W02").ToList(); + //绔嬪簱鍐呮墭鐩� + var detail3 = list.Where(m => m.WareHouseNo == "W01").ToList(); + + foreach (var item in detail2) { var dept = item.LocatNo.Substring(5,2); item.Dept = int.Parse(dept); } - foreach (var item in data3) + foreach (var item in detail3) { var dept = item.LocatNo.Substring(6, 2); item.Dept = int.Parse(dept); } - data.AddRange(data1); - data.AddRange(data2.OrderBy(m => m.Dept).ToList()); - data.AddRange(data3.OrderBy(m => m.Dept).ToList()); + data.AddRange(detail1); + data.AddRange(detail2.OrderBy(m => m.Dept).ToList()); + data.AddRange(detail3.OrderBy(m => m.Dept).ToList()); return data; } -- Gitblit v1.8.0