using HH.WCS.Hexafluo.util; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using System.Xml; namespace HH.WCS.Hexafluo.dispatch { public class NDC { private static HostToAGV callClient = null; static NDC() { callClient = new HostToAGV(); //callClient.Url = "http://192.168.1.146:9988/HostToAGV.cgi"; callClient.Url = Settings.HostToAgvServerUrl; } private static string GetReqStr(int ts, Dictionary param) { //< Order TS = '60' Pri = '" + mst.CN_N_PRIORITY.ToString() + "' From = '" + start.CN_N_AGV_LOCATION + "' To = '" + end.CN_N_AGV_LOCATION + "' No = '" + mst.S_TASK_NO + "_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(); } private static string GetReqStr2(int ts, Dictionary param, Dictionary param1) { //< Order TS = '60' Pri = '" + mst.CN_N_PRIORITY.ToString() + "' From = '" + start.CN_N_AGV_LOCATION + "' To = '" + end.CN_N_AGV_LOCATION + "' No = '" + mst.S_TASK_NO + "_1' Ext1 = '1' Ext2 = '" + Constants.TN_MID_COMMANDEQ_CALLAGVOrderCommandType + "' N_CNTR_COUNT = '' FRow = '" + sFloor + "' TRow = '" + eFloor + "' /> var sb = new StringBuilder(); sb.Append($""); foreach (var p1 in param1) { sb.Append($""); } 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("NDC", $"AddNewOrder req={bufin} res={result}"); //LogHelper.Info(result.bufout, "ts"); return GetResult(result); } catch (Exception e) { LogHelper.Info("NDC", $"AddNewOrder req={bufin} res={e.Message}"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } /// /// 任务下发 /// /// /// /// /// public static AGVResult OrderAdd(int ts, Dictionary param, Dictionary param1) { //< 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 = GetReqStr2(ts, param, param1); try { var result = callClient.OrderAdd(bufin); LogHelper.Info("NDC", $"OrderAdd req={bufin} res={result}"); //LogHelper.Info(result.bufout, "ts"); return GetResult(result); } catch (Exception e) { LogHelper.Info("NDC", $"OrderAdd req={bufin} res={e.Message}"); 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("NDC", $"CancelOrder req={bufin} res={result}"); return GetResult(result); } catch (Exception e) { LogHelper.Info("NDC", $"CancelOrder req={bufin} res={e.Message}"); 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("NDC", $"StartNewOrderWithQCmd req={bufin} res={r}"); return GetResult(r); } catch (Exception e) { LogHelper.Info("NDC", $"StartNewOrderWithQCmd req={bufin} res={e.Message}"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } public static AGVResult ChangeOrder(Dictionary param) { //< Req >< Order No = 'TN2302020002' ParamNo = '1' Param1 = '1' /> var bufin = GetReqStr(0, param); try { var r = callClient.ChangeOrder(bufin); LogHelper.Info("NDC", $"ChangeOrder req={bufin} res={r}"); return GetResult(r); } catch (Exception e) { LogHelper.Info("NDC", $"ChangeOrder req={bufin} res={e.Message}"); 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; } } } }