From 950fac9fd7b9477fc2bbe3253d217f62ac7608e5 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期一, 21 七月 2025 17:01:21 +0800
Subject: [PATCH] SAP接口开发

---
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs |  117 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 63 insertions(+), 54 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 83b9df7..46d5205 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -4,12 +4,14 @@
 using Model.ModelDto.SysDto;
 using Model.ModelVm;
 using Model.ModelVm.SysVm;
+using Newtonsoft.Json;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq.Expressions;
 using System.Threading.Tasks;
+using Utility.Tools;
 using WMS.BLL.LogServer;
 using WMS.DAL;
 using WMS.Entity.BllAsnEntity;
@@ -370,7 +372,9 @@
                         if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                         {
                             string toDayTime = DateTime.Now.ToString("yyyyMM");
-                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") && m.CreateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd")).Max(m => m.BoxCodeStr);
+                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>()
+                                .Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") 
+                                && m.CreateTime.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM")).Max(m => m.BoxCodeStr);
                             if(string.IsNullOrWhiteSpace(maxBoxCodeStr))
                             {
                                 maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
@@ -405,18 +409,18 @@
                         }
                         string lot1 = detailModel.Lot1;
                         string lot2 = detailModel.Lot2;
-                        if (sku.IsPasteCode == "0")
+                        if (sku.IsInspect == "0")//鏄惁鍏嶆锛�0锛氬惁 1锛氭槸
                         {
-                            //涓嶈创鏍囩墿鏂� 鐢熶骇鏃ユ湡銆佹湁鏁堟湡涓嶈兘涓虹┖
+                            //涓嶅厤妫�鐗╂枡 鐢熶骇鏃ユ湡銆佹湁鏁堟湡涓嶈兘涓虹┖
                             DateTime lot12;
                             DateTime lot22;
                             if (!DateTime.TryParse(detailModel.Lot1, out lot12))
                             {
-                                throw new Exception("闈炶创鏍囩墿鏂欑敓浜ф棩鏈熻浆鎹㈠け璐�");
+                                throw new Exception("涓嶅厤妫�鐗╂枡鐢熶骇鏃ユ湡杞崲澶辫触");
                             }
                             if (!DateTime.TryParse(detailModel.Lot2, out lot22))
                             {
-                                throw new Exception("闈炶创鏍囩墿鏂欒繃鏈熸棩鏈熻浆鎹㈠け璐�");
+                                throw new Exception("涓嶅厤妫�鐗╂枡杩囨湡鏃ユ湡杞崲澶辫触");
                             }
                             lot1 = lot12.ToString();
                             lot2 = lot22.ToString();
@@ -634,7 +638,9 @@
                             //    }
                             //}
                             //detailModel.LotNo = maxLotNo;
-                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") && m.CreateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd")).Max(m => m.BoxCodeStr);
+                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>()
+                                .Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") 
+                                && m.CreateTime.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM")).Max(m => m.BoxCodeStr);
                             if (string.IsNullOrWhiteSpace(maxBoxCodeStr))
                             {
                                 maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
@@ -701,6 +707,7 @@
                                              && it.IsBelt == detailModel.IsBelt
                                              && it.Lot1 == detailModel.Lot1                                 // 鐢熶骇鏃ユ湡
                                              && it.Lot2 == detailModel.Lot2                                 // 杩囨湡鏃ユ湡
+                                             && it.BoxCodeStr == detailModel.BoxCodeStr
                                              && it.UDF1 == detailModel.UDF1
                                              && it.UDF2 == detailModel.UDF2
                                              && it.UDF3 == detailModel.UDF3
@@ -735,6 +742,7 @@
                             dbDetail.IsBale = detailModel.IsBale;
                             dbDetail.Lot1 = detailModel.Lot1;
                             dbDetail.Lot2 = detailModel.Lot2;
+                            dbDetail.BoxCodeStr = detailModel.BoxCodeStr;
                             dbDetail.UDF1 = detailModel.UDF1;
                             dbDetail.UDF2 = detailModel.UDF2;
                             dbDetail.UDF3 = detailModel.UDF3;
@@ -1250,77 +1258,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 = "涓嶅瓨鍦ㄥ綋鍓嶇墿鏂欎俊鎭�!";
@@ -1331,17 +1326,20 @@
 
                     var detailModel = new BllArrivalNoticeDetail()
                     {
+                        OrderDetailCode = asnDetailModel.lineNo,
                         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",
@@ -1394,28 +1392,39 @@
                 {
                     throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�");
                 }
-                var list = new List<AsnDetail>();
+                var list = new List<BackAsnDetail>();
                 foreach (var d in detail)
                 {
-                    var item = new AsnDetail()
+                    var mater = Db.Queryable<SysMaterials>().First(w => w.IsDel == "0" && w.SkuNo == d.SkuNo);
+                    if (mater == null)
                     {
-                        SkuNo = d.SkuNo,
-                        LotNo = d.LotNo,
-                        Qty = d.CompleteQty,
-                        PackagNo = d.PackagNo,
-                        SupplierLot = d.SupplierLot
+                        throw new Exception($"澶嶆牳澶辫触锛岀墿鏂欑紪鐮�:{d.SkuNo}鐨勭墿鏂欎俊鎭笉瀛樺湪");
+                    }
+                    var item = new BackAsnDetail()
+                    {
+                        POSNR=d.OrderDetailCode,
+                        MATNR = d.SkuNo,
+                        MAKTX=d.SkuName,
+                        LFIMG = d.CompleteQty.ToString(),
+                        MEINS= mater.UnitNo,
+                        CHARG = d.LotNo,
+                        HSDAT = d.Lot1,
+                        VFDAT = d.Lot2
                     };
                     list.Add(item);
                 }
-                var soInfo = new AsnInfo()
+                var soInfo = new BackAsnVm()
                 {
-                    OrderCode = notice.OrderCode,
-                    AsnDetails = list
+                    ZUUID = Guid.NewGuid().ToString(),
+                    VBELN = notice.OrderCode,
+                    LFART = notice.Type,
+                    WADAT_IST = Convert.ToDateTime(notice.CompleteTime).ToString("yyyy-MM-dd"),
+                    ITEM = list
                 };
 
                 #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp 
                 //绯荤粺瀵规帴鍚庢斁寮�
-                /*var jsonData = JsonConvert.SerializeObject(soInfo);
+                var jsonData = JsonConvert.SerializeObject(soInfo);
 
                 var response = HttpHelper.DoPost(url, jsonData, "鍏ュ簱鍗曞畬鎴愪笂浼�", "ERP");
 
@@ -1423,7 +1432,7 @@
                 if (obj.Success != 0)
                 {
                     throw new Exception("涓婁紶澶辫触" + obj.Message);
-                }*/
+                }
                 #endregion
 
                 notice.Status = "4";

--
Gitblit v1.8.0