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 | 860 ++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 580 insertions(+), 280 deletions(-)
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 08845ff..e85ca4e 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -108,49 +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 = "",
- IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo)? "0":"1",
-
- 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()
{
@@ -331,10 +400,18 @@
}
}
- 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)); //鎺掗櫎绌烘墭鐩樼殑鐗╂枡闆嗗悎
@@ -342,7 +419,7 @@
string inspectStatus = string.Empty;
switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
{
- case "0"://鎴愬搧鍏ュ簱
+ case "0"://鎴愬搧鍑哄簱
skuType = "(2)";
inspectStatus = "1";
break;
@@ -364,25 +441,34 @@
break;
case "5"://涓棿鍝佸嚭搴�
skuType = "(4)";
- inspectStatus = "0";
+ inspectStatus = "0,1";
break;
case "6"://浠e偍鍑哄簱
skuType = "(0,1,2,3)";
- inspectStatus = "0";
+ inspectStatus = "0,1";
break;
case "8"://瀵勫瓨鍑哄簱
skuType = "(0,1,2,3)";
- inspectStatus = "0";
+ inspectStatus = "0,1";
break;
default: //鍏跺畠鍑哄簱
skuType = "(0,1,2,3,4)";
- inspectStatus = "0";
+ inspectStatus = "0,1";
break;
}
skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList();
if (skuList == null)
{
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();
@@ -391,6 +477,7 @@
//.And(it => it.WareHouseNo == wareHouseNo)
.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"))
@@ -419,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();
@@ -504,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,
@@ -552,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()
@@ -698,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);
@@ -1608,6 +1882,7 @@
OutMode = "", //鐩爣鍦板潃
Order = 1
});
+ taskNoStr = exTask.TaskNo;
}
else if (locate.Depth == "02") //娣卞害涓�2
{
@@ -1696,7 +1971,7 @@
IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
StartLocat = stockNew.LocatNo,//璧峰浣嶇疆
- EndLocat = "",//鐩爣浣嶇疆
+ EndLocat = toLocation,//鐩爣浣嶇疆
PalletNo = stockNew.PalletNo,//鎵樼洏鐮�
IsSend = 1,//鏄惁鍙啀娆′笅鍙�
IsCancel = 1,//鏄惁鍙彇娑�
@@ -1713,7 +1988,7 @@
StartRoadway = slotBefore.RoadwayNo, //璧峰宸烽亾
PalletNo = stockNew.PalletNo,//鎵樼洏鍙�
StartLocate = stockNew.LocatNo, // 璧峰浣嶇疆
- EndLocate = "", // 鐩爣浣嶇疆
+ EndLocate = toLocation, // 鐩爣浣嶇疆
EndRoadway = "", // 鐩爣宸烽亾
TaskNo = exYkTask1.TaskNo, // 浠诲姟鍙�
TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
@@ -1750,7 +2025,7 @@
IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
StartLocat = locate.LocatNo,//璧峰浣嶇疆
- EndLocat = "",//鐩爣浣嶇疆
+ EndLocat = toLocation,//鐩爣浣嶇疆
PalletNo = item.PalletNo,//鎵樼洏鐮�
IsSend = 1,//鏄惁鍙啀娆′笅鍙�
IsCancel = 1,//鏄惁鍙彇娑�
@@ -1761,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",// 浠诲姟绫诲瀷 (鍑哄簱)
@@ -1842,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)
{
@@ -1861,7 +2136,8 @@
flagList.Add(1);
}
}
-
+ outDto1.AddRange(moveDto);
+ outDto1.AddRange(outDto2);
//娣诲姞鎿嶄綔鏃ュ織璁板綍
var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId);
Db.CommitTran();
@@ -2273,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;
@@ -2296,31 +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);
- //鑾峰彇绉诲簱浠诲姟瀵瑰簲鐩爣鍌ㄤ綅淇℃伅
- SysStorageLocat endlocat = new SysStorageLocat();
- if (task.Type == "2")
- {
- endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W03" && 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();
- }
if (noticeDetail.FactQty == 0)
{
@@ -2563,7 +2846,7 @@
}
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)
@@ -2575,9 +2858,13 @@
{
stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
}
- else if (notice.Type == "3" || notice.Type == "5" || 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")//涓嶅悎鏍煎嚭搴�
{
@@ -2675,21 +2962,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;
@@ -2830,14 +3117,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;
@@ -3000,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);
@@ -3013,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";
--
Gitblit v1.8.0