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