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.BLL/BllSoServer/ExportNoticeServer.cs |  124 ++++++++++++++++++++--------------------
 1 files changed, 62 insertions(+), 62 deletions(-)

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",

--
Gitblit v1.8.0