From 22428c74e4b57c87a979a8f2f199e0e8e34dbb86 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期六, 28 六月 2025 16:48:09 +0800
Subject: [PATCH] 编写接收SAP下发入库单接口

---
 Wms/Wms/Controllers/UpApiController.cs             |   36 +++++++++--
 Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs |    2 
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs    |   61 ++++++++------------
 Wms/Model/InterFaceModel/HttpModel.cs              |   72 ++++++++++++++++++++++++
 4 files changed, 127 insertions(+), 44 deletions(-)

diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs
index b40bde9..cdf457f 100644
--- a/Wms/Model/InterFaceModel/HttpModel.cs
+++ b/Wms/Model/InterFaceModel/HttpModel.cs
@@ -586,5 +586,77 @@
         /// </summary>
         public string contactMobile { get; set; }
     }
+
+    public class SapAsnVm
+    {
+        /// <summary>
+        /// 鎿嶄綔浜�
+        /// </summary>
+        public string @operator{ get; set; }
+        public SendAsnVm data { get; set; }
+    }
+    public class SendAsnVm
+    { 
+        /// <summary>
+        /// 鍏ュ簱鍗曞彿
+        /// </summary>
+        public long orderNo { get; set; }
+        /// <summary>
+        /// 鍏ュ簱鍗曠被鍨�
+        /// 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 锛堥攢鍞��璐э級4锛氫綑鏂欓��鍥炲叆搴�  8 锛氱敓浜ч��鏂欏叆搴�
+        /// </summary>
+        public int billType { get; set; }
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鍙�
+        /// </summary>
+        public string vendorNo { get; set; }
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public string vendorName { get; set; }
+        /// <summary>
+        /// 鍏ュ簱鍗曟槑缁嗗垪琛�
+        /// </summary>
+        public List<SendAsnDetail> orderDCmdList { get; set; }
+    }
+    public class SendAsnDetail
+    {
+        /// <summary>
+        /// 鍏ュ簱鍗曡鍙�
+        /// </summary>
+        public string lineNo { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public long skuNo { get; set; }
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string skuName { get; set; }
+        /// <summary>
+        /// 搴旀敹鐗╂枡鏁伴噺
+        /// </summary>
+        public string expectedQty { get; set; }
+        /// <summary>
+        /// 鎵瑰彿
+        /// </summary>
+        public long lotNo { get; set; }
+        /// <summary>
+        /// 鐢熶骇鏃ユ湡
+        /// </summary>
+        public string productionDate { get; set; }
+        /// <summary>
+        /// 鍒版湡鏃ユ湡
+        /// </summary>
+        public string expireDate { get; set; }
+        /// <summary>
+        /// 澶嶆鏃ユ湡
+        /// </summary>
+        public string retestDate { get; set; }
+        /// <summary>
+        /// 渚涘簲鍟嗘壒鍙�
+        /// </summary>
+        public string supplyBatch { get; set; }
+    }
     #endregion
 }
diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index dc4a007..715a0b7 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -1256,77 +1256,64 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public ErpModel CreateAsn(AsnInfo model)
+        public ErpModel CreateAsn(SendAsnVm model,string userName)
         {
             try
             {
                 var resultModel = new ErpModel() { Success = -1, Message = "" };
-                if (string.IsNullOrEmpty(model.AsnType))
+                if (string.IsNullOrEmpty(model.billType.ToString()))
                 {
                     resultModel.Message = "鍗曟嵁绫诲瀷涓嶅彲涓虹┖!";
                     return resultModel;
                 }
-                if (string.IsNullOrEmpty(model.Customer))
-                {
-                    resultModel.Message = "瀹㈡埛涓嶅彲涓虹┖!";
-                    return resultModel;
-                }
-                if (string.IsNullOrEmpty(model.OrderCode))
+               
+                if (string.IsNullOrEmpty(model.orderNo.ToString()))
                 {
                     resultModel.Message = "涓婃父绯荤粺鍗曞彿涓嶅彲涓虹┖!";
                     return resultModel;
                 }
-                if (model.AsnDetails.Count <= 0)
+                if (model.orderDCmdList.Count <= 0)
                 {
                     resultModel.Message = "鍏ュ簱鍗曟槑缁嗕笉鍙负绌�!";
                     return resultModel;
                 }
-
-                // 鏍规嵁瀹㈡埛缂栧彿鑾峰彇瀹㈡埛鍚嶇О
-                var CustomerModel = Db.Queryable<SysCustomer>().First(it => it.CustomerNo == model.Customer && it.IsDel == "0");
-                if (CustomerModel == null)
-                {
-                    resultModel.Message = "瀹㈡埛缂栧彿涓嶅瓨鍦�!";
-                    return resultModel;
-                }
-
                 // 鍏ュ簱鎬昏〃淇℃伅
                 string asnNo = new Common().GetMaxNo("ASN");
                 var asnModel = new BllArrivalNotice()
                 {
                     ASNNo = asnNo,
                     Status = "0",//绛夊緟鎵ц
-                    Type = model.AsnType,
-                    Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin,
-                    CustomerNo = model.Customer,
-                    CustomerName = CustomerModel.CustomerName,
-                    OrderCode = model.OrderCode,
-                    UserName = model.Username
+                    Type = model.billType.ToString(),
+                    Origin = "SAP",
+                    CustomerNo = model.vendorNo,
+                    CustomerName = model.vendorName,
+                    OrderCode = model.orderNo.ToString(),
+                    UserName = userName
                 };
 
                 // 鍏ュ簱鏄庣粏琛ㄤ俊鎭�
                 List<BllArrivalNoticeDetail> detailModels = new List<BllArrivalNoticeDetail>();
-                foreach (AsnDetail asnDetailModel in model.AsnDetails)
+                foreach (var asnDetailModel in model.orderDCmdList)
                 {
-                    if (string.IsNullOrEmpty(asnDetailModel.SkuNo))
+                    if (string.IsNullOrEmpty(asnDetailModel.skuNo.ToString()))
                     {
                         resultModel.Message = "鐗╂枡缂栫爜涓嶅彲涓虹┖!";
                         return resultModel;
                     }
 
-                    if (asnDetailModel.Qty <= 0)
+                    if (Convert.ToDecimal(asnDetailModel.expectedQty) <= 0)
                     {
-                        resultModel.Message = "鏁伴噺搴斾负姝f暣鏁�!";
+                        resultModel.Message = "搴旀敹鐗╂枡鏁伴噺搴斿ぇ浜�0!";
                         return resultModel;
                     }
-                    if (string.IsNullOrEmpty(asnDetailModel.LotNo))
+                    if (string.IsNullOrEmpty(asnDetailModel.lotNo.ToString()))
                     {
                         resultModel.Message = "鎵规鍙蜂笉鍙负绌�!";
                         return resultModel;
                     }
 
                     // 鑾峰彇鐗╂枡璇︾粏淇℃伅
-                    var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == asnDetailModel.SkuNo && it.IsDel == "0");
+                    var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == asnDetailModel.skuNo.ToString() && it.IsDel == "0");
                     if (skuModel == null)
                     {
                         resultModel.Message = "涓嶅瓨鍦ㄥ綋鍓嶇墿鏂欎俊鎭�!";
@@ -1338,16 +1325,18 @@
                     var detailModel = new BllArrivalNoticeDetail()
                     {
                         ASNNo = asnNo,
-                        SkuNo = asnDetailModel.SkuNo,
+                        SkuNo = asnDetailModel.skuNo.ToString(),
                         SkuName = skuModel.SkuName,
                         Standard = skuModel.Standard,
-                        LotNo = asnDetailModel.LotNo,
+                        LotNo = asnDetailModel.lotNo.ToString(),
                         LotText = "",
-                        Qty = (decimal)asnDetailModel.Qty,
-                        FactQty=0,
-                        CompleteQty=0,
+                        Qty = Convert.ToDecimal(asnDetailModel.expectedQty),
+                        FactQty = 0,
+                        CompleteQty = 0,
                         PackagNo = skuModel.PackagNo,
-                        SupplierLot = asnDetailModel.SupplierLot,
+                        SupplierLot = asnDetailModel.supplyBatch,//鐢熶骇鏃ユ湡
+                        Lot1 = asnDetailModel.productionDate,//杩囨湡鏃ユ湡
+                        Lot2 = asnDetailModel.expireDate,
                         Status = "0",
                         IsSampling = "0",
                         InspectStatus = "0",
diff --git a/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs b/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
index 9e737c0..70af5d0 100644
--- a/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
@@ -96,7 +96,7 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        ErpModel CreateAsn(AsnInfo model);
+        ErpModel CreateAsn(SendAsnVm model, string userName);
         /// <summary>
         /// 璁㈠崟鍥炰紶涓婃父绯荤粺
         /// </summary>
diff --git a/Wms/Wms/Controllers/UpApiController.cs b/Wms/Wms/Controllers/UpApiController.cs
index 3f77a43..ba15e9e 100644
--- a/Wms/Wms/Controllers/UpApiController.cs
+++ b/Wms/Wms/Controllers/UpApiController.cs
@@ -29,6 +29,7 @@
 using ZXing.QrCode.Internal;
 using System.Xml.Linq;
 using WMS.IBLL.ISysServer;
+using ZXing;
 
 namespace Wms.Controllers
 {
@@ -122,11 +123,16 @@
                 if (!str.Contains("0"))
                 {
                     list = new { Success = -1, Message = str };
+
+                    LogFile.SaveLogToFile($"瀹㈡埛渚涘簲鍟嗕富鏁版嵁鍚屾锛�( {JsonConvert.SerializeObject(list)} ),", logStr);
+                    return Ok(new { result = false, code = "400", message = str });
                 }
+                else
+                {
+                    LogFile.SaveLogToFile($"瀹㈡埛渚涘簲鍟嗕富鏁版嵁鍚屾锛�( {JsonConvert.SerializeObject(list)} ),", logStr);
 
-                LogFile.SaveLogToFile($"瀹㈡埛渚涘簲鍟嗕富鏁版嵁鍚屾锛�( {JsonConvert.SerializeObject(list)} ),", logStr);
-
-                return Ok(new { result = true, code = "1", message = "success" });
+                    return Ok(new { result = true, code = "1", message = "success" });
+                }                
             }
             catch (Exception e)
             {
@@ -142,13 +148,29 @@
         /// <returns></returns>
         [AllowAnonymous]
         [HttpPost]
-        public IActionResult CreateAsn(object model)
+        public IActionResult CreateAsn(SapAsnVm model)
         {
-
+            var logStr = $@".\log\SAP\鍏ュ簱鍗曚笅鍙�" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
             try
             {
-                LogFile.SaveLogToFile($"Sap鍏ュ簱鍗曚笅鍙戯細( {model} ),", logStr);
-                return Ok(new { result = true, code = "1", message = "success" });
+                var jsonData = JsonConvert.SerializeObject(model);
+                LogFile.SaveLogToFile($"Sap鍏ュ簱鍗曚笅鍙戯細( {jsonData} ),", logStr);
+
+                var _result = _arrivalNoticeSvc.CreateAsn(model.data, model.@operator);
+
+                var list = new { Success = 0, Message = "涓嬪彂鎴愬姛" };
+                if (_result.Success == 0)
+                {
+                    LogFile.SaveLogToFile($"瀹㈡埛渚涘簲鍟嗕富鏁版嵁鍚屾锛�( {JsonConvert.SerializeObject(list)} ),", logStr);
+                    return Ok(new { result = true, code = "1", message = "success" });
+                }
+                else
+                {
+                    list = new { Success = -1, Message = _result.Message };
+
+                    LogFile.SaveLogToFile($"瀹㈡埛渚涘簲鍟嗕富鏁版嵁鍚屾锛�( {JsonConvert.SerializeObject(list)} ),", logStr);
+                    return Ok(new { result = false, code = "400", message = _result.Message });
+                }                
             }
             catch (Exception e)
             {

--
Gitblit v1.8.0