From 047715a5e4f9895fe052f74a6d89a159a1d0c1b1 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期四, 10 七月 2025 08:33:03 +0800
Subject: [PATCH] 编写接受sap下发出库单接口
---
Wms/Wms/Controllers/UpApiController.cs | 10 +
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 124 +++++++++++++++---------------
Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs | 2
Wms/Model/InterFaceModel/HttpModel.cs | 60 +++++++++++++++
4 files changed, 130 insertions(+), 66 deletions(-)
diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs
index cdf457f..e7c4045 100644
--- a/Wms/Model/InterFaceModel/HttpModel.cs
+++ b/Wms/Model/InterFaceModel/HttpModel.cs
@@ -658,5 +658,65 @@
/// </summary>
public string supplyBatch { get; set; }
}
+
+ public class SapSoVm
+ {
+ /// <summary>
+ /// 鎿嶄綔浜�
+ /// </summary>
+ public string @operator { get; set; }
+ public SendSoVm data { get; set; }
+ }
+ public class SendSoVm
+ {
+ /// <summary>
+ /// 鍑哄簱鍗曞彿
+ /// </summary>
+ public string orderNo { get; set; }
+ /// <summary>
+ /// 鍑哄簱鍗曟嵁绫诲瀷
+ /// 0锛氭垚鍝佸嚭搴撱��1锛氶鏂欏嚭搴撱��4锛氫笉鍚堟牸鍝佸嚭搴撱��7锛氬叾浠栧嚭搴� 銆�9 锛氱敓浜ч鏂欏嚭搴�
+ /// </summary>
+ public string orderType { get; set; }
+ /// <summary>
+ /// 瀹㈡埛缂栫爜
+ /// </summary>
+ public string customerNo { get; set; }
+ /// <summary>
+ /// 瀹㈡埛鍚嶇О
+ /// </summary>
+ public string customerName { get; set; }
+ /// <summary>
+ /// 鍑哄簱鍗曟槑缁嗗垪琛�
+ /// </summary>
+ public List<SendSoDetail> orderDetailList { get; set; }
+ }
+ public class SendSoDetail
+ {
+ /// <summary>
+ /// 鍙戝嚭浠撳簱
+ /// </summary>
+ public string wareHouseNo { get; set; }
+ /// <summary>
+ /// 鍑哄簱鍗曡鍙�
+ /// </summary>
+ public string lineNo { get; set; }
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string skuNo { get; set; }
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string skuName { get; set; }
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal skuQty { get; set; }
+ /// <summary>
+ /// 鎵瑰彿
+ /// </summary>
+ public string lotNo { get; set; }
+ }
#endregion
}
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 361b515..4ab2a27 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -305,26 +305,26 @@
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
- public SoResInfo ErpAddExportNotice(SoInfo model)
+ public SoResInfo ErpAddExportNotice(SendSoVm model)
{
try
{
- if (string.IsNullOrEmpty(model.SoType))
+ if (string.IsNullOrEmpty(model.orderType))
{
throw new Exception("鍗曟嵁绫诲瀷涓嶅彲涓虹┖!");
}
- if (string.IsNullOrEmpty(model.OrderCode))
+ if (string.IsNullOrEmpty(model.orderNo))
{
- throw new Exception("绯荤粺鍗曞彿涓嶅彲涓虹┖!");
+ throw new Exception("鍑哄簱鍗曞彿涓嶅彲涓虹┖!");
}
- if (model.SoDetails.Count <= 0)
+ if (model.orderDetailList.Count <= 0)
{
throw new Exception("鍑哄簱鍗曟槑缁嗕笉鍙负绌�!");
}
//杩斿洖淇℃伅
SoResInfo result = new SoResInfo();
- var skuNos = model.SoDetails.Select(a => a.SkuNo).Distinct().ToList();
+ var skuNos = model.orderDetailList.Select(a => a.skuNo).Distinct().ToList();
//鏍规嵁鐗╂枡鍙疯幏鍙栫墿鏂欎俊鎭�
var skuList = Db.Queryable<SysMaterials>().Where(a => skuNos.Contains(a.SkuNo) && a.IsDel == "0").ToList();
//鑾峰彇搴撳瓨鏄庣粏
@@ -333,10 +333,10 @@
var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList();
string CustomerName = string.Empty;
- if (!string.IsNullOrEmpty(model.Customer))
+ if (!string.IsNullOrEmpty(model.customerNo))
{
//瀹㈡埛淇℃伅
- var customer = Db.Queryable<SysCustomer>().First(m => m.IsDel == "0" && m.CustomerNo == model.Customer);
+ var customer = Db.Queryable<SysCustomer>().First(m => m.IsDel == "0" && m.CustomerNo == model.customerNo);
if (customer == null)
{
throw new Exception("瀹㈡埛淇℃伅涓嶅瓨鍦�!");
@@ -344,12 +344,12 @@
CustomerName = customer.CustomerName;
}
//鎵胯繍鍟嗕俊鎭�
- var logistics = Db.Queryable<SysLogisticsInfo>().First(m => m.IsDel == "0" && m.CarrierName == model.LogisticsNo);
- int? logisticsId = null;
- if (logistics != null)
- {
- logisticsId = logistics.Id;
- }
+ //var logistics = Db.Queryable<SysLogisticsInfo>().First(m => m.IsDel == "0" && m.CarrierName == model.LogisticsNo);
+ //int? logisticsId = null;
+ //if (logistics != null)
+ //{
+ // logisticsId = logistics.Id;
+ //}
var billNo = "";
var bl = true;
do
@@ -367,21 +367,21 @@
{
var list = new List<BllExportNoticeDetail>();
//娣诲姞鍑哄簱鍗�
- foreach (var d in model.SoDetails)
+ foreach (var d in model.orderDetailList)
{
- if (d.Qty < 1)
+ if (d.skuQty < 1)
{
throw new Exception("鍑哄簱鏁伴噺蹇呴』澶т簬0");
}
- var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo);
+ var sku = skuList.FirstOrDefault(a => a.SkuNo == d.skuNo);
if (sku == null)
{
- throw new Exception($"鐗╂枡淇℃伅涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.SkuNo}");
+ throw new Exception($"鐗╂枡淇℃伅涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.skuNo}");
}
//0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆� ///2:鎶芥鍑哄簱銆�5:涓棿鍝佸嚭搴撱��8:瀵勫瓨鍑哄簱
- if (model.SoType == "0" || model.SoType == "3" || model.SoType == "4" || model.SoType == "7")
+ if (model.orderType == "0" || model.orderType == "3" || model.orderType == "4" || model.orderType == "7")
{
- if (string.IsNullOrWhiteSpace(d.LotNo))
+ if (string.IsNullOrWhiteSpace(d.lotNo))
{
throw new Exception("鎵规涓嶅彲涓虹┖!");
}
@@ -389,29 +389,29 @@
//搴撳瓨鏄庣粏
List<DataStockDetail> stockDetails;
//鎸囧畾鎵规
- if (!string.IsNullOrWhiteSpace(d.LotNo))
+ if (!string.IsNullOrWhiteSpace(d.lotNo))
{
- stockDetails = stockDetailList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
+ stockDetails = stockDetailList.Where(s => s.SkuNo == d.skuNo && s.LotNo == d.lotNo).ToList();
if (stockDetails.Count < 1)
{
- throw new Exception($"搴撳瓨涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.SkuNo}");
+ throw new Exception($"搴撳瓨涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.skuNo}");
}
//鍒ゆ柇鏁伴噺
var qty = stockDetails.Sum(s => s.Qty - s.FrozenQty - s.LockQty);
- if (d.Qty > qty)
+ if (d.skuQty > qty)
{
- throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo}銆亄d.lotNo} 搴撳瓨鏁伴噺涓嶈冻");
}
//搴撳瓨淇℃伅
- var stockInfo = stockList.First(w => w.SkuNo == d.SkuNo && w.LotNo == d.LotNo);
+ var stockInfo = stockList.First(w => w.SkuNo == d.skuNo && w.LotNo == d.lotNo);
if (stockInfo == null)
{
- throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
+ throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.skuNo}");
}
//鍒ゆ柇鎬诲簱瀛樻暟閲�
- if (d.Qty > stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty)
+ if (d.skuQty > stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty)
{
- throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo}銆亄d.lotNo} 搴撳瓨鏁伴噺涓嶈冻");
}
//娣诲姞鍑哄簱鍗曟槑缁�
var noticeDetail = new BllExportNoticeDetail()
@@ -420,36 +420,36 @@
SkuNo = sku.SkuNo,
SkuName = sku.SkuName,
Standard = sku.Standard,
- LotNo = d.LotNo,
+ LotNo = d.lotNo,
LotText = stockInfo.LotText,
- Qty = d.Qty,
+ Qty = d.skuQty,
AllotQty = 0,
FactQty = 0,
CompleteQty = 0,
PackagNo = sku.PackagNo,
Price = sku.Price,
- Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
+ Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.skuQty,
IsBale = "",
IsBelt = "",
SupplierLot = stockInfo.SupplierLot,
IsWave = "0",
WaveNo = "",
- IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
- IsMixBox = d.IsMixBox,
+ IsIssueLotNo = string.IsNullOrWhiteSpace(d.lotNo) ? "0" : "1",
+ IsMixBox = "0",
- OrderDetailCode = d.OrderDetailCode,
+ OrderDetailCode = d.lineNo,
CreateUser = 0,
};
list.Add(noticeDetail);
//鏇存柊搴撳瓨閿佸畾鏁伴噺
- stockInfo.LockQty += d.Qty;
+ stockInfo.LockQty += d.skuQty;
var i = Db.Updateable(stockInfo).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
SoDetailInfo soDetail = new SoDetailInfo();
- soDetail.OrderDetailCode = d.OrderDetailCode;
- soDetail.LockQty = d.Qty;
- soDetail.LotNo = d.LotNo;
+ soDetail.OrderDetailCode = d.lineNo;
+ soDetail.LockQty = d.skuQty;
+ soDetail.LotNo = d.lotNo;
soDetailList.Add(soDetail);
}
@@ -458,12 +458,12 @@
Dictionary<int, decimal> dic = new Dictionary<int, decimal>();
decimal q1 = 0;
//棣栧厛鏌ヨ褰撳墠杩欑鐗╂枡鎵规鍙蜂负绌虹殑
- stockDetails = stockDetailList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+ stockDetails = stockDetailList.Where(s => s.SkuNo == d.skuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
if (stockDetails.Count > 0)
{
q1 = (decimal)stockDetails.Sum(s => s.Qty - s.FrozenQty - s.LockQty);
//搴撳瓨淇℃伅
- var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(w.LotNo));
+ var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.skuNo && string.IsNullOrWhiteSpace(w.LotNo));
if (stockInfo != null)
{
var q2 = stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty;
@@ -471,29 +471,29 @@
{
q1 = q2;
}
- if (d.Qty > q1)
+ if (d.skuQty > q1)
{
dic.Add(stockInfo.Id, q1);
}
else
{
- dic.Add(stockInfo.Id, d.Qty);
+ dic.Add(stockInfo.Id, d.skuQty);
}
}
}
//濡傛灉鎵规鍙蜂负绌虹殑鏁伴噺涓嶅锛屾牴鎹壒娆″厛杩涘厛鍑哄師鍒欐煡鎵惧叾瀹冩壒娆$殑
- if (d.Qty > q1)
+ if (d.skuQty > q1)
{
- stockDetails = stockDetailList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
+ stockDetails = stockDetailList.Where(m => m.SkuNo == d.skuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
foreach (var demo in stockDetails)
{
- if (q1 >= d.Qty)
+ if (q1 >= d.skuQty)
{
break;
}
var q2 = demo.Qty - demo.FrozenQty - demo.LockQty;
//搴撳瓨淇℃伅
- var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.SkuNo && w.LotNo == demo.LotNo);
+ var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.skuNo && w.LotNo == demo.LotNo);
if (stockInfo == null)
{
continue;
@@ -508,18 +508,18 @@
{
q2 = q3;
}
- if (q2 > d.Qty - q1)
+ if (q2 > d.skuQty - q1)
{
if (!dic.ContainsKey(stockInfo.Id))
{
- dic.Add(stockInfo.Id, d.Qty - q1);
+ dic.Add(stockInfo.Id, d.skuQty - q1);
}
else
{
//鏇存柊鍊�
- dic[stockInfo.Id] += d.Qty - q1;
+ dic[stockInfo.Id] += d.skuQty - q1;
}
- q1 += d.Qty - q1;
+ q1 += d.skuQty - q1;
}
else
{
@@ -536,9 +536,9 @@
}
}
}
- if (d.Qty > q1)
+ if (d.skuQty > q1)
{
- throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻");
+ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo} 搴撳瓨鏁伴噺涓嶈冻");
}
foreach (var s in dic)
{
@@ -546,7 +546,7 @@
var item = new BllExportNoticeDetail()
{
SONo = billNo,
- OrderDetailCode = d.OrderDetailCode,
+ OrderDetailCode = d.lineNo,
SkuNo = sku.SkuNo,
SkuName = sku.SkuName,
Standard = sku.Standard,
@@ -558,14 +558,14 @@
CompleteQty = 0,
PackagNo = sku.PackagNo,
Price = sku.Price,
- Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
+ Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.skuQty,
IsBale = "",
IsBelt = "",
SupplierLot = st.SupplierLot,
IsWave = "0",
WaveNo = "",
- IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
- IsMixBox = d.IsMixBox,
+ IsIssueLotNo = string.IsNullOrWhiteSpace(d.lotNo) ? "0" : "1",
+ IsMixBox = "0",
CreateUser = 0,
};
@@ -575,7 +575,7 @@
var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
SoDetailInfo soDetail = new SoDetailInfo();
- soDetail.OrderDetailCode = d.OrderDetailCode;
+ soDetail.OrderDetailCode = d.lineNo;
soDetail.LockQty = s.Value;
soDetail.LotNo = st.LotNo;
@@ -586,13 +586,13 @@
var notice = new BllExportNotice()
{
SONo = billNo,
- OrderCode=model.OrderCode,
- Type = model.SoType,
+ OrderCode=model.orderNo,
+ Type = model.orderType,
Status = "0",
Origin = "WMS",
- CustomerNo = model.Customer,
+ CustomerNo = model.customerNo,
CustomerName = CustomerName,
- LogisticsId = logisticsId,
+ LogisticsId = null,//logisticsId,
IsWave = "0",
WaveNo = "",
IsDespatch = "0",
diff --git a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
index 80b504d..d3f1f72 100644
--- a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
@@ -17,7 +17,7 @@
/// </summary>
/// <param name="model">妯″瀷</param>
/// <returns></returns>
- SoResInfo ErpAddExportNotice(SoInfo model);
+ SoResInfo ErpAddExportNotice(SendSoVm model);
/// <summary>
/// 鑾峰彇鎵ц瀹屾垚鐨勫崟鎹彂閫佽嚦erp
/// </summary>
diff --git a/Wms/Wms/Controllers/UpApiController.cs b/Wms/Wms/Controllers/UpApiController.cs
index ba15e9e..637e32f 100644
--- a/Wms/Wms/Controllers/UpApiController.cs
+++ b/Wms/Wms/Controllers/UpApiController.cs
@@ -185,12 +185,16 @@
/// <returns></returns>
[AllowAnonymous]
[HttpPost]
- public IActionResult CreateSo(object model)
+ public IActionResult CreateSo(SapSoVm model)
{
-
+ var logStr = $@".\log\SAP\鍑哄簱鍗曚笅鍙�" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
try
{
- LogFile.SaveLogToFile($"Sap鍑哄簱鍗曚笅鍙戯細( {model} ),", logStr);
+ var jsonData = JsonConvert.SerializeObject(model);
+ LogFile.SaveLogToFile($"Sap鍑哄簱鍗曚笅鍙戯細( {jsonData} ),", logStr);
+
+ _exNoticeSvc.ErpAddExportNotice(model.data);
+
return Ok(new { result = true, code = "1", message = "success" });
}
catch (Exception e)
--
Gitblit v1.8.0