From 17c1c9bb4537f3915e5b53e1a26a1a0b9c8e7c85 Mon Sep 17 00:00:00 2001
From: hudong <Administrator@PC-20250329JZUF>
Date: 星期一, 16 六月 2025 08:37:58 +0800
Subject: [PATCH] 1.定时充电问题排查,增加状态字段增加定时更新状态2.删除webservice所有日志 api接口日志(超时问题优化)

---
 util/SqlHelper.cs            |    6 
 dispatch/NDC.cs              |   38 +++++++++
 Program.cs                   |    1 
 api/WmsSpaHelper.cs          |   40 +++++++--
 models/TN_CD.cs              |   16 ++++
 process/TaskProcess.cs       |   81 ++++++++++++++++----
 core/WCSCore.cs              |    5 +
 api/WmsSapController.cs      |   38 +--------
 HH.WCS.Mobox3.pinggao.csproj |    1 
 9 files changed, 163 insertions(+), 63 deletions(-)

diff --git a/HH.WCS.Mobox3.pinggao.csproj b/HH.WCS.Mobox3.pinggao.csproj
index f4cc209..1ac1a38 100644
--- a/HH.WCS.Mobox3.pinggao.csproj
+++ b/HH.WCS.Mobox3.pinggao.csproj
@@ -195,6 +195,7 @@
     <Compile Include="models\OutboundRecord.cs" />
     <Compile Include="models\SapReturn.cs" />
     <Compile Include="models\SapRoot.cs" />
+    <Compile Include="models\TN_CD.cs" />
     <Compile Include="models\TN_DPRECORD.cs" />
     <Compile Include="models\TN_GENERATE_ORDER.cs" />
     <Compile Include="models\TN_Location_Ext.cs" />
diff --git a/Program.cs b/Program.cs
index 01502e7..e9e3307 100644
--- a/Program.cs
+++ b/Program.cs
@@ -116,6 +116,7 @@
                 tasks.Add(GetTask(WMSCore.CheckDistributionCNTROrder));
                 //tasks.Add(GetTask(WMSCore.TransportTask));
                 tasks.Add(GetTask(WCSCore.Dispatch));
+                tasks.Add(GetTask(WCSCore.Dispatch1));
                 //娣诲姞鑷畾涔夌嚎绋� 
                 //tasks.Add(GetTask(Monitor.CheckDevice));
diff --git a/api/WmsSapController.cs b/api/WmsSapController.cs
index b85f30f..f97141d 100644
--- a/api/WmsSapController.cs
+++ b/api/WmsSapController.cs
@@ -291,37 +291,11 @@
         [HttpPost]
         public WLReturnRoot.Root MaterReceiveXmlData([FromBody] MaterDto.Root xmlData)
         {
-            #region xml鏁版嵁鎺ユ敹杞暟缁�-
-            //LogHelper.Info("鐗╂枡鎺ユ敹鎺ュ彛锛� + 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<MaterDto.Root>(jsonObject.ToString());
-            #endregion
+            
 
             #region 澶栭噰鍏ュ簱涓氬姟娴佺▼
             WLReturnRoot.Root simpleResult = WmsSpaHelper.Mater_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;
+         
 
             var json = JsonConvert.SerializeObject(simpleResult);
             return simpleResult;
@@ -593,17 +567,17 @@
             #region xml鏁版嵁鎺ユ敹杞暟缁�             //LogHelper.Info("鐢熶骇璁㈠崟棰嗘枡鍗�鐢熸垚棰嗘枡鍗�鎺ュ彛锛� + JsonConvert.SerializeObject(xmlData));
 
-        
+
             #endregion
 
             #region 鍑哄簱涓氬姟娴佺▼
-           return WmsSpaHelper.Out_Order_Ins(xmlData);
+            return WmsSpaHelper.Out_Order_Ins(xmlData);
 
-          
+
             //sw.Stop();
             //long elapsedMilliseconds = sw.ElapsedMilliseconds;
             //LogHelper.Info("鐢熶骇璁㈠崟棰嗘枡鍗�鐢熸垚棰嗘枡鍗�杩斿洖鏃堕暱锛� + elapsedMilliseconds);
-          
+
             #endregion
         }
 
diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs
index 2a8c992..cf42f12 100644
--- a/api/WmsSpaHelper.cs
+++ b/api/WmsSpaHelper.cs
@@ -56,7 +56,7 @@
             bool panduan = true;
             var db = new SqlHelper<object>().GetInstance();
 
-            var po = db.Queryable<TN_Material_KC>().Where(a => a.S_ITEM_CODE == ItemCode).First();
+            var po = db.Queryable<TN_Material_KC>().Where(a => a.S_ITEM_CODE== ItemCode).First();
 
             var po1 = db.Queryable<CntrItemRel>().Where(a => a.S_ITEM_CODE == ItemCode).First();
             if (po != null)
@@ -893,8 +893,8 @@
             db.BeginTran();
             List<WLReturnRoot.ITEM> list = new List<WLReturnRoot.ITEM>();
 
-
-            var itemCodes = model.ROOT.ITEM.Select(item => item.WLBM).ToList();
+            List<TN_Material> tN_Materials = new List<TN_Material>();
+            var itemCodes = model.ROOT.ITEM.Select(item => item.WLBM).Distinct().ToList();
             var itemlist = db.Queryable<TN_Material>()
             .Where(it => itemCodes.Contains(it.S_ITEM_CODE))
             .ToList();
@@ -903,10 +903,8 @@
             {
                 try
                 {
-
                     var result = new WLReturnRoot.ITEM();
-
-                    var materlist = itemlist.Where(it => it.S_ITEM_CODE == item.WLBM).First();
+                    var materlist = itemlist.Where(it => it.S_ITEM_CODE == item.WLBM).FirstOrDefault();
                     if (materlist == null)
                     {
                         TN_Material tN_Material = new TN_Material();
@@ -923,7 +921,8 @@
                         tN_Material.S_CPZ = item.CPZ;
                         tN_Material.S_CPZMS = item.CPZMS;
                         tN_Material.S_ITEM_NAME = item.VTEXT;
-                        db.Insertable<TN_Material>(tN_Material).ExecuteCommand();
+                        tN_Materials.Add(tN_Material);
+                        //db.Insertable<TN_Material>(tN_Material).ExecuteCommand();
                         result.MSGDESP = "鎴愬姛";
                         result.MSGCODE = 0;
                         result.GCBM = item.GCBM;
@@ -966,6 +965,24 @@
                 }
             }
             response.ROOT.ITEM = list;
+            if (tN_Materials.Count()>0)
+            {
+                db.Insertable<TN_Material>(tN_Materials).ExecuteCommand();
+                //using (var bulkCopy = new SqlBulkCopy(util.Settings.SqlServer))
+                //{
+                //    bulkCopy.DestinationTableName = "TN_Material";
+                //    bulkCopy.BatchSize = 500;
+                //    var dataTable = new DataTable();
+                //    dataTable = list.ToDataTable();
+                //    // 娣诲姞鍒楁槧灏勶紙纭繚鍚嶇О鍖归厤锛�+                //    foreach (DataColumn col in dataTable.Columns)
+                //    {
+                //        bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
+                //    }
+                //    bulkCopy.WriteToServer(tN_Materials.ToDataTable());
+                //}
+            }
+          
             //db.Insertable<TN_Material>(list).ExecuteCommand();
             db.CommitTran();
 
@@ -3694,10 +3711,11 @@
                         var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(), UNAME = po.UNAME, S_FACTORY = po.S_FACTORY, S_CBZX = po.S_CBZX, S_ZZKM = po.S_ZZKM, S_LRZX = po.S_LRZX, BLDAT = po.BLDAT, BUDAT = po.BUDAT, S_OUT_TYPE = po.S_OUT_TYPE, S_BS_TYPE = po.S_BS_TYPE, S_AREA_CODE = po.S_AREA_CODE, S_BS_NO = po.S_NO };
                         List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>();
                         po1.Details = new List<TN_Outbound_Detail>();
-                        var list = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY).Select(s => s.S_ITEM_CODE).Distinct().ToArray();
-                        var Sitemlist = db.Queryable<CntrItemRel>().Where(s => list.Contains(s.S_ITEM_CODE)).Select(s => s.S_ITEM_CODE).ToArray();
-
-                        po.Details = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY && Sitemlist.Contains(s.S_ITEM_CODE)).ToList();
+                        var list = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY&&s.S_ERP_WH_CODE=="4004").Select(s => s.S_ITEM_CODE).Distinct().ToArray();
+                     
+                        var Sitemlist = db.Queryable<CntrItemRel>().Where(s => list.Contains(s.S_ITEM_CODE)).Select(s => s.S_ITEM_CODE).ToArray().Select(x => x.Trim()).ToArray(); ;
+                      
+                        po.Details = po.Details.Where(s => Sitemlist.Contains(s.S_ITEM_CODE)).ToList();
                         if (po.Details.Count() > 0)
                         {
                           
diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index f41c066..c60542f 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -7,6 +7,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Threading.Tasks;
 using static HH.WCS.Mobox3.pinggao.api.ApiModel;
 
 namespace HH.WCS.Mobox3.pinggao.core {
@@ -140,6 +141,10 @@
 
 
             }
+        } internal static void Dispatch1() {
+            //鏌ヨ浠诲姟
+            //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�+            TaskProcess.SendCd();
         }
 
         /// <summary>
diff --git a/dispatch/NDC.cs b/dispatch/NDC.cs
index edeb2ee..ae83b31 100644
--- a/dispatch/NDC.cs
+++ b/dispatch/NDC.cs
@@ -83,7 +83,7 @@
         {
             //< Order  TS = '60'  Pri = '" + mst.CN_N_PRIORITY.ToString() + "' From = '" + start.CN_N_AGV_TN_Location + "' To = '" + end.CN_N_AGV_TN_Location + "'  No = '" + mst.S_CODE + "_1' Ext1 = '1' Ext2 = '" + Constants.TN_MID_COMMANDEQ_CALLAGVOrderCommandType + "'  N_CNTR_COUNT = ''   FRow = '" + sFloor + "'  TRow = '" + eFloor + "' />
             var sb = new StringBuilder();
-            sb.Append($"<Req><Order ");
+            sb.Append($"<Req> ");
             if (ts != 0)
             {
                 sb.Append($"TS='{ts}'");
@@ -95,6 +95,23 @@
             sb.Append("/></Req>");
             return sb.ToString();
         }
+
+        private static string GetReqStrcd(int ts, Dictionary<string, string> param)
+        {
+            //< Order  TS = '60'  Pri = '" + mst.CN_N_PRIORITY.ToString() + "' From = '" + start.CN_N_AGV_TN_Location + "' To = '" + end.CN_N_AGV_TN_Location + "'  No = '" + mst.S_CODE + "_1' Ext1 = '1' Ext2 = '" + Constants.TN_MID_COMMANDEQ_CALLAGVOrderCommandType + "'  N_CNTR_COUNT = ''   FRow = '" + sFloor + "'  TRow = '" + eFloor + "' />
+            var sb = new StringBuilder();
+            sb.Append($"<Req><Order ");
+            if (ts != 0)
+            {
+                sb.Append($"<TS No='{ts}'>");
+            }
+            foreach (var kv in param)
+            {
+             sb.Append($"<Param Name='{kv.Key}' >{kv.Value}</Param>");
+            }
+            sb.Append("</TS>/></Req>");
+            return sb.ToString();
+        }
         public static AGVResult OrderAdd(int ts, Dictionary<string, string> param, Dictionary<string, string> param1)
         {
             //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /></ Order ></ Req >
@@ -114,6 +131,25 @@
                 return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } };
             }
         }
+        public static AGVResult OrderAdd2(int ts, Dictionary<string, string> param)
+        {
+            //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /></ Order ></ Req >
+
+            var bufin = GetReqStrcd(ts, param);
+
+            try
+            {
+                var result = callClient.OrderAdd(bufin);
+                LogHelper.Info($"OrderAdd req={bufin} res={result}", "NDC");
+                //LogHelper.Info(result.bufout, "ts");
+                return GetResult(result);
+            }
+            catch (Exception e)
+            {
+                LogHelper.Info($"OrderAdd req={bufin} res={e.Message}", "NDC");
+                return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } };
+            }
+        }
         public static AGVResult AddNewOrder(int ts, Dictionary<string, string> param) {
             //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /></ Order ></ Req >
 
diff --git a/models/TN_CD.cs b/models/TN_CD.cs
new file mode 100644
index 0000000..8ea7dc8
--- /dev/null
+++ b/models/TN_CD.cs
@@ -0,0 +1,16 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HH.WCS.Mobox3.pinggao.models
+{
+    [SugarTable("TN_CD")]
+    public class TN_CD : BaseModel
+    {
+        public string S_TIME { get; set; }
+        public int N_STATE { get; set; }
+    }
+}
diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index a777b0d..31ea7fe 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -15,6 +15,7 @@
 using static HH.WCS.Mobox3.pinggao.models.SapRoot.WcReturnRoot;
 using static HH.WCS.Mobox3.pinggao.api.OtherModel;
 using NLog.Fluent;
+using System.Xml.Linq;
 
 namespace HH.WCS.Mobox3.pinggao.process
 {
@@ -165,7 +166,7 @@
                                    .ToList();
                         if (TN_Task.N_ERR == 2)//鍓嶇Щ杞�                         {
-                       
+
                             endlist = endlist.Where(s => s.N_LAYER < 7).ToList();
                         }
                         foreach (var item in endlist)
@@ -567,24 +568,72 @@
 
 
         }
+        public static DateTime? ParseCustomFormatDate(string dateStr)
+        {
+            // 鍋囪鏃ユ湡鏍煎紡鏄�yy:mm
+            if (DateTime.TryParseExact(dateStr, "HH:mm", null, System.Globalization.DateTimeStyles.None, out DateTime result))
+            {
+                return result;
+            }
+            return null;
+        }
+        public static bool SendCd()
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            var dstart = db.Queryable<TN_CD>().Where(s => s.N_STATE == 0).First();
 
-        public static bool SendCd() {
-        
-        
-        
-             var result=false;
-           
-                var dic = new Dictionary<string, string>();
-                var dic1 = new Dictionary<string, string>();
-              
-                dic.Add("ExtDeviceNo", "1");
-               
-                //鍒ゆ柇
-                var res = NDC.OrderAdd(99, dic, dic1);
-                if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009))
+            var result = false;
+            if (dstart != null)
+            {
+                DateTime currentDate = DateTime.Now;
+                // 鏍煎紡鍖栬緭鍑烘椂鍒嗛儴鍒�+                string currentHourMinute = currentDate.ToString("HH:mm");
+                if (currentHourMinute == "00:00")
                 {
-                result = true;
+
+                    dstart.N_STATE = 0;
+                    db.Updateable<TN_CD>(dstart).UpdateColumns(a => new { a.N_STATE }).ExecuteCommand();
                 }
+                if (dstart.S_TIME == currentHourMinute)
+                {
+                    var dic = new Dictionary<string, string>();
+                    var dic1 = new Dictionary<string, string>();
+                    var no = WMSHelper.GenerateTaskNo();
+                    dic.Add("No", no);
+                    dic.Add("Pri", "0");
+                    dic1.Add("ExtDeviceNo", "1");
+
+                    //鍒ゆ柇
+                    var res = NDC.OrderAdd(99, dic, dic1);
+                    if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009))
+                    {
+                        //    dstart.N_STATE = 1;
+                        //    db.Updateable<TN_CD>(dstart).UpdateColumns(a => new { a.N_STATE }).ExecuteCommand();
+
+                        // result = true;
+                    }
+
+
+                    var dic12 = new Dictionary<string, string>();
+                    var dic11 = new Dictionary<string, string>();
+                    var no1 = WMSHelper.GenerateTaskNo();
+                    dic12.Add("No", no1);
+                    dic12.Add("Pri", "0");
+                    dic11.Add("ExtDeviceNo", "2");
+
+                    //鍒ゆ柇
+                    var res1 = NDC.OrderAdd(99, dic12, dic11);
+                    if (res1 != null && (res1.Res.ErrCode == 0 || res1.Res.ErrCode == 50009))
+                    {
+                        dstart.N_STATE = 1;
+                        db.Updateable<TN_CD>(dstart).UpdateColumns(a => new { a.N_STATE }).ExecuteCommand();
+
+                        result = true;
+                    }
+                }
+
+            }
+
             return result;
         }
         /// <summary>
diff --git a/util/SqlHelper.cs b/util/SqlHelper.cs
index 2635bc9..e936563 100644
--- a/util/SqlHelper.cs
+++ b/util/SqlHelper.cs
@@ -105,9 +105,9 @@
                 //LogHelper.Info($"{sql}");
                 if (db.Ado.SqlExecutionTime.TotalSeconds > 1) {
                     //Console.WriteLine(sql + "\r\n" + db.Utilities.SerializeObject(p.ToDictionary(it => it.ParameterName, it => it.Value)));
-                LogHelper.Info("閿欒鏃ュ織"+sql + "\r\n" + db.Utilities.SerializeObject(p.ToDictionary(it => it.ParameterName, it => it.Value)));
-                //浠g爜CS鏂囦欢鍚�-                var fileName = db.Ado.SqlStackTrace.FirstFileName;
+                    //LogHelper.Info("閿欒鏃ュ織"+sql + "\r\n" + db.Utilities.SerializeObject(p.ToDictionary(it => it.ParameterName, it => it.Value)));
+                    //浠g爜CS鏂囦欢鍚�+                    var fileName = db.Ado.SqlStackTrace.FirstFileName;
                     //浠g爜琛屾暟
                     var fileLine = db.Ado.SqlStackTrace.FirstLine;
                     //鏂规硶鍚�
--
Gitblit v1.9.1