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