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