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 | 216 +++++++++++++++++-------------------------------------
1 files changed, 68 insertions(+), 148 deletions(-)
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 0586c97..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;
--
Gitblit v1.8.0