From 0e2425d59ffe4c698182f134a47dc84585bc8439 Mon Sep 17 00:00:00 2001
From: hudong <Administrator@PC-20250329JZUF>
Date: 星期一, 12 五月 2025 17:34:28 +0800
Subject: [PATCH] 成本中心退料出库接口实现

---
 api/WmsSpaHelper.cs         |  131 ++++++++++++++++++++++++++++----
 models/TN_Ll_Order.cs       |    2 
 api/ApiModel.cs             |    2 
 api/ZSCM2_CBZX.cs           |    2 
 models/TN_Outbound_Order.cs |    3 
 api/WmsSapController.cs     |   43 ++++++++++
 6 files changed, 162 insertions(+), 21 deletions(-)

diff --git a/api/ApiModel.cs b/api/ApiModel.cs
index 63059bc..f78ca83 100644
--- a/api/ApiModel.cs
+++ b/api/ApiModel.cs
@@ -348,7 +348,7 @@
             public string arrival_no { get; set; }
             public string item_code { get; set; }
             public string S_BATCH_NO { get; set; }
-            public string S_SERIAL_NO { get; set; }
+            //public string S_SERIAL_NO { get; set; }
             public string N_ROW_NO { get; set; }
             public float qty { get; set; }
         }
diff --git a/api/WmsSapController.cs b/api/WmsSapController.cs
index 1ffb9e2..d520c95 100644
--- a/api/WmsSapController.cs
+++ b/api/WmsSapController.cs
@@ -22,7 +22,48 @@
 {
     public class WmsSapController : System.Web.Http.ApiController
     {
-     
+        /// <summary>
+        /// 渚涘簲鍟嗘帴鏀舵帴鍙h幏鍙�+        /// </summary>
+        /// <param name="xmlData"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public Orderback.Root GYSReceiveXmlData([FromBody] GYSDto.Root xmlData)
+        {
+            #region xml鏁版嵁鎺ユ敹杞暟缁�+
+            LogHelper.Info("渚涘簲鍟嗘帴鏀舵帴鍙o細" + JsonConvert.SerializeObject(xmlData));
+
+            ////鎺ユ敹xml鏁版嵁
+            //XmlDocument xmlDoc = new XmlDocument();
+            //xmlDoc.LoadXml(xmlData.ToString());
+
+            //// 灏�XmlDocument 杞崲涓�JSON 瀛楃涓�+            //JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc));
+
+            //// 澶勭悊鐗瑰畾瀛楁锛屽己鍒惰浆鎹负鏁扮粍
+            //WmsSpaHelper.EnsureArrayFormats(jsonObject, "ITEM");
+            //// 鍙嶅簭鍒楀寲涓篟ootWithArray
+            //var data = JsonConvert.DeserializeObject<OrderDto.Root>(jsonObject.ToString());
+            #endregion
+
+            #region 澶栭噰鍏ュ簱涓氬姟娴佺▼
+            Orderback.Root simpleResult = WmsSpaHelper.GYS_In(xmlData);
+            //鎺ユ敹杩斿洖鍙傛暟 鐢熸垚sap瀵规帴鏂囨。杩斿洖鏍煎紡
+            //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg);
+
+            #endregion
+            #region  杩斿洖xml
+            //string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml;
+            ////杩斿洖json
+            //var response = new HttpResponseMessage()
+            //{
+            //    Content = new StringContent(xml, Encoding.UTF8, "application/xml")
+            //};
+            //return response;
+            return simpleResult;
+            #endregion
+        }
 
 
         /// <summary>
diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs
index d3ab124..6b46ba6 100644
--- a/api/WmsSpaHelper.cs
+++ b/api/WmsSpaHelper.cs
@@ -654,7 +654,87 @@
             }
             return simpleResults;
         }
-   
+        /// <summary>
+        /// sap-wmsg渚涘簲鍟嗘伅娣诲姞SimpleResult
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        internal static Orderback.Root GYS_In(GYSDto.Root model)
+        {
+            var orderResponse = new Orderback.Root
+            {
+                ROOT = new Orderback.ROOT
+                {
+                    ITEM = new List<Orderback.ITEM> { }
+
+                }
+            };
+
+            List<Orderback.ITEM> tEMs = new List<Orderback.ITEM>();
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
+                db.BeginTran();
+                foreach (var item in model.ROOT.GYSXX)
+                {
+                    Orderback.ITEM iTEM = new Orderback.ITEM();
+
+                   
+                    //鍒涘缓鍏ュ簱鍗曚富瀛愯〃
+                    var po = WMSHelper.GetGYSBMOrder(item.JBXX.GYSBM);
+                    if (po == null)
+                    {
+                        po = new TN_Supplier { S_GYSBM= item.JBXX.GYSBM , S_MDMBM = item.JBXX.MDMBM, };
+                        po.Details = new List<TN_Supplier_detial>();
+                        if (item.GYSHB.Count > 0)
+                        {
+                            item.GYSHB.ForEach(a =>
+                            {
+                                po.Details.Add(new TN_Supplier_detial
+                                {
+                                    S_DO_GYSBM = a.GYSBM,
+                                    S_CGZZ = a.CGZZ,
+                                    S_HB = a.HB,
+                                 
+                                });
+                                //}
+                            });
+                            db.Insertable<TN_Supplier>(po).ExecuteCommand();
+                            db.Insertable<TN_Supplier_detial>(po.Details).ExecuteCommand();
+                        }
+                    }
+                    else
+                    {
+                        db.Deleteable<TN_Supplier>().Where(it => it.S_GYSBM == po.S_GYSBM).ExecuteCommand();
+                        db.Deleteable<TN_Supplier_detial>().Where(it => it.S_DO_GYSBM == po.S_GYSBM).ExecuteCommand();
+                        //iTEM.SCDDH = item.JBXX.GYSBM;
+                        //iTEM.MSGCODE = "1";
+                        //iTEM.MSGDESP = $"{item.JBXX.GYSBM}宸插瓨鍦�;
+                        //tEMs.Add(iTEM);
+                    }
+                    iTEM.SCDDH = item.JBXX.GYSBM;
+                    iTEM.MSGCODE = "0";
+                    iTEM.MSGDESP = $"鎴愬姛";
+                    tEMs.Add(iTEM);
+                }
+                orderResponse.ROOT.ITEM = tEMs;
+                db.CommitTran();
+            }
+            catch (Exception e)
+            {
+                Orderback.ITEM iTEM = new Orderback.ITEM();
+                iTEM.SCDDH = "";
+                iTEM.GC = "";
+                iTEM.MSGCODE = "1";
+                iTEM.MSGDESP = e.Message;
+                tEMs.Add(iTEM);
+                orderResponse.ROOT.ITEM = tEMs;
+                db.RollbackTran();
+                return orderResponse;
+                throw;
+            }
+            return orderResponse;
+        }
         /// <summary>
         /// sap-wms鐢熶骇璁㈠崟淇℃伅娣诲姞SimpleResult
         /// </summary>
@@ -1735,6 +1815,7 @@
                     result.resultCode = 1;
                     return result;
                 }
+              
                 //浜哄伐鍒嗘嫞 瀹瑰櫒璐у搧琛ㄦ暟閲忋�鍒嗛厤閲忓崌闄�                 //鍑哄簱鍗曡鎯�                 var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == model.arrival_no).First();
@@ -1745,7 +1826,6 @@
                     return result;
 
                 }
-                po.S_OUT_TYPE = "鎴愭湰涓績鍑哄簱";
                 //鏍规嵁涓嶅悓鍑哄簱绫诲瀷 鍥炶皟sap
                 if (po.S_OUT_TYPE == "鍐查攢鍑哄簱")
                 {
@@ -1923,21 +2003,36 @@
                     //鍥炲弬鐗╂枡淇℃伅
                     List<CBcenterBackDto.HEADItem> iTEMs = new List<CBcenterBackDto.HEADItem>();
                     List<OutboundRecord> records = new List<OutboundRecord>();
+                    string GZRQ = "";
+                    string PZZDRQ = "";
+                    if (po.BUDAT != null)
+                    {
+                        GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd");
+                    }
+                    if (po.BLDAT != null)
+                    {
+                        PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd");
+
+                    }
                     foreach (var item in MaterList)
                     {
                         var podetail = po.Details.Where(s => s.S_ITEM_CODE == item.item_code).FirstOrDefault();
                         CBcenterBackDto.HEADItem ckbitem = new CBcenterBackDto.HEADItem();
+                        ckbitem.KEY = arrival_no;
                         ckbitem.WLBH = item.item_code;
 
-                        ckbitem.SL = item.qty;
                         ckbitem.CBZX = po.S_CBZX;
+                        ckbitem.SL = item.qty;
+
+                        ckbitem.KCDD = podetail?.S_KCDD;
                         ckbitem.ZZKM = po.S_ZZKM;
                         ckbitem.GC = po.S_FACTORY;
                         ckbitem.GZRY = po.S_CREATOR_NAME;
-                        ckbitem.PZRQ = DateTime.Now.ToString();
 
-                        ckbitem.KCDD = podetail?.S_KCDD;
                         ckbitem.PC = podetail?.S_BATCH_NO;
+                        ckbitem.PZRQ = PZZDRQ;
+                        ckbitem.GZRQ = GZRQ;
+
 
 
                         CBcenterBackDto.ITEM listitem1 = new CBcenterBackDto.ITEM();
@@ -1947,7 +2042,7 @@
                         //                .Where(s => s.S_ITEM_CODE == item.item_code)
                         //                .Select(s => s.S_SERIAL_NO));
                         //string[] xlhValues = serialNos.Split(',');
-                        string[] xlhValues = item.S_SERIAL_NO.Split(',');
+                       // string[] xlhValues = item.S_SERIAL_NO.Split(',');
                         listitem1.XLH= podetail?.S_SERIAL_NO.Split(',').ToList();
                         //foreach (var xlhValue in xlhValues)
                         //{
@@ -2001,16 +2096,20 @@
                     xmlDoc.LoadXml(responses.Output.ToString());
                     JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc));
                     var data = JsonConvert.DeserializeObject<ReturnWcBcak.Root>(jsonObject.ToString());
+
                     //娣诲姞鍑瘉璁板綍琛�                     result.resultMsg = data.ROOT.ITEM.MSGDESP;
                     result.resultCode = data.ROOT.ITEM.MSGCODE;
-                    MaterialVoucher materialVoucher = new MaterialVoucher();
-                    materialVoucher.S_NO = po.S_NO;
-                    materialVoucher.S_TYPE = po.S_OUT_TYPE;
-                    materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZBH;
-                    materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
-                    materialVoucher.STATUS = 0;
-                    db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
+                    if (data.ROOT.ITEM.MSGCODE == 0)
+                    {
+                        MaterialVoucher materialVoucher = new MaterialVoucher();
+                        materialVoucher.S_NO = po.S_NO;
+                        materialVoucher.S_TYPE = po.S_OUT_TYPE;
+                        materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZBH;
+                        materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
+                        materialVoucher.STATUS = 0;
+                        db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
+                    }
                     #endregion
 
                     db.CommitTran();
@@ -2018,7 +2117,7 @@
                 catch (Exception ex)
                 {
                     db.RollbackTran();
-                    LogHelper.Info("璁″垝澶栭�鏂欏洖璋冩姤閿� + ex.Message);
+                    LogHelper.Info("鎴愭湰涓績鍥炶皟鎶ラ敊" + ex.Message);
                     Console.WriteLine(ex.Message);
 
                     throw;
@@ -2570,8 +2669,8 @@
                                     }
                                     else
                                     {
-                                        //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉锛�-                                        cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), S_BATCH_NO = item.S_BATCH_NO, S_SERIAL_NO = item.S_SERIAL_NO, N_BS_ROW_NO = item.N_ROW_NO, F_QTY = item.qty, S_ITEM_CODE = item.item_code, S_BS_NO = item.arrival_no };
+                                        //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉S_SERIAL_NO = item.S_SERIAL_NO,锛�+                                        cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), S_BATCH_NO = item.S_BATCH_NO,  N_BS_ROW_NO = item.N_ROW_NO, F_QTY = item.qty, S_ITEM_CODE = item.item_code, S_BS_NO = item.arrival_no };
                                         db.Insertable<CntrItemRel>(cir).ExecuteCommand();
                                     }
                                     var count = db.Queryable<CntrItemRel>().Count(a => a.S_CNTR_CODE == cntr.S_CODE);
diff --git a/api/ZSCM2_CBZX.cs b/api/ZSCM2_CBZX.cs
index 2524ce4..709a2a4 100644
--- a/api/ZSCM2_CBZX.cs
+++ b/api/ZSCM2_CBZX.cs
@@ -32,7 +32,7 @@
     
     /// <remarks/>
     public ZSCM2_CBZX() {
-        this.Url = "http://ceerptest.cee.com.cn:8000/sap/bc/srt/rfc/sap/zscm2_cbzx/110/zscm2_cbzx/bin" +
+        this.Url = "http://10.89.33.217:8000/sap/bc/srt/rfc/sap/zscm2_cbzx/110/zscm2_cbzx/bin" +
             "ding";
     }
     
diff --git a/models/TN_Ll_Order.cs b/models/TN_Ll_Order.cs
index f150a08..2e9c719 100644
--- a/models/TN_Ll_Order.cs
+++ b/models/TN_Ll_Order.cs
@@ -16,7 +16,7 @@
         /// 年份
         /// </summary>
         public string S_WLPZNF { get; set; }
-        public int S_WLPZND { get; set; }
+        public string S_WLPZND { get; set; }
         /// <summary>
         /// 仓库编码
         /// </summary>
diff --git a/models/TN_Outbound_Order.cs b/models/TN_Outbound_Order.cs
index 6fba4da..30edd2f 100644
--- a/models/TN_Outbound_Order.cs
+++ b/models/TN_Outbound_Order.cs
@@ -23,7 +23,7 @@
         public string S_WLPZNF { get; set; }
         public string S_WLPZHXM { get; set; }
         public string S_WLPZ { get; set; }
-        public int S_WLPZND { get; set; }
+        public string S_WLPZND { get; set; }
         /// <summary>
         /// 仓库编码
         /// </summary>
@@ -66,6 +66,7 @@
         /// 工厂
         /// </summary>
         public string S_FACTORY { get; set; }
+        //public string S_GZRY { get; set; }
         public string S_CBZX { get; set; }
         public string S_LRZX { get; set; }
         public string S_ZZKM { get; set; }

--
Gitblit v1.9.1