using HH.WCS.Mobox3.DSZSH.AppStart; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using System.Xml; namespace HH.WCS.Mobox3.DSZSH.Dispatch { public class NDC { private static HostToAGV callClient = null; static NDC() { callClient = new HostToAGV(); //callClient.Url = AppStart.Settings.Config.HostToAgvServerUrl; } private static string GetReqStrNew(int ts, int pri, string taskNo, Dictionary param) { /* */ var sb = new StringBuilder(); sb.Append($""); foreach (var kv in param) { sb.Append($""); } sb.Append(""); return sb.ToString(); } public AGVResult AddNewOrderNew(int ts, int pri, string taskNo, Dictionary param) { //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /> var bufin = GetReqStrNew(ts, pri, taskNo, param); try { var result = callClient.OrderAdd(bufin); LogHelper.Info($"任务下发结果 OrderAdd req={bufin} res={result}", "NDC"); Console.WriteLine($"任务下发结果 OrderAdd req={bufin} res={result}"); //LogHelper.Info(result.bufout, "ts"); return GetResult(result); } catch (Exception e) { LogHelper.Info($"任务下发失败 OrderAdd req={bufin} res={e.Message}", "NDC"); //Console.WriteLine($"任务下发失败 AddNewOrder req={bufin} res={e.Message}"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } private static string GetReqStr(int ts, Dictionary 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($""); return sb.ToString(); } public static AGVResult AddNewOrder(int ts, Dictionary param) { //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /> var bufin = GetReqStr(ts, param); try { var result = callClient.AddNewOrder(bufin); LogHelper.Info($"AddNewOrder req={bufin} res={result}", "NDC"); return GetResult(result); } catch (Exception e) { LogHelper.Info($"AddNewOrder req={bufin} res={e.Message}", "NDC"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } public static AGVResult CancelOrder(int ts, Dictionary param) { //< Req >< Order No = 'TN2302020001' >< Param Name = 'IsForce' Value = '1' /> var bufin = GetReqStr(ts, param); try { var result = callClient.CancelOrder(bufin); LogHelper.Info($"CancelOrder req={bufin} res={result}", "NDC"); return GetResult(result); } catch (Exception e) { LogHelper.Info($"CancelOrder req={bufin} res={e.Message}", "NDC"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } public static AGVResult StartNewOrderWithQCmd(int ts, Dictionary param) { //lpn: //traccif: //lock: var bufin = GetReqStr(ts, param); try { var r = callClient.StartNewOrderWithQCmd(bufin); LogHelper.Info($"StartNewOrderWithQCmd req={bufin} res={r}", "NDC"); return GetResult(r); } catch (Exception e) { LogHelper.Info($"StartNewOrderWithQCmd req={bufin} res={e.Message}", "NDC"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } public static AGVResult ChangeOrder(Dictionary param) { //< Req >< Order No = 'TN2302020002' ParamNo = '18' Param1 = '12' /> var bufin = GetReqStr(0, param); try { var r = callClient.ChangeOrder(bufin); LogHelper.Info($"ChangeOrder req={bufin} res={r}", "NDC"); return GetResult(r); } catch (Exception e) { LogHelper.Info($"ChangeOrder req={bufin} res={e.Message}", "NDC"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } private static AGVResult GetResult(string bufout) { //011 XmlDocument xml = new XmlDocument(); xml.LoadXml(bufout); var json = JsonConvert.SerializeXmlNode(xml); return JsonConvert.DeserializeObject(json); } public class AGVResult { public Res Res { get; set; } } public class Res { public int ErrCode { get; set; } public string ErrInfo { get; set; } } } }