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