using HH.WCS.JingyuNongfu.process; using HH.WCS.JingyuNongfu.wms; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Reflection; using System.Text; using System.Xml; namespace HH.WCS.JingyuNongfu.dispatch { public class NDC { private HostToAGV callClient = null; public NDC(string url) { callClient = new HostToAGV(); //10.122.160.200 //callClient.Url = "http://10.122.160.200:9989/HostToAGV.cgi"; Console.WriteLine($"NDCurl:{url}"); callClient.Url = url; } 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 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}","任务"); 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}", "任务"); //Console.WriteLine($"任务下发失败 AddNewOrder req={bufin} res={e.Message}"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } public 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}", "任务"); Console.WriteLine($"任务下发结果 AddNewOrder req={bufin} res={result}"); //LogHelper.Info(result.bufout, "ts"); return GetResult(result); } catch (Exception e) { LogHelper.Info($"任务下发失败 AddNewOrder req={bufin} res={e.Message}", "任务"); //Console.WriteLine($"任务下发失败 AddNewOrder req={bufin} res={e.Message}"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } public AGVResult CancelOrder(int ts, Dictionary param) { //< Req >< Order No = 'TN2302020001' >< Param Name = 'IsForce' Value = '1' /> var bufin = GetReqStr(ts, param); try { LogHelper.Info($"任务取消请求发给hosttoagv"); var result = callClient.CancelOrder(bufin); LogHelper.Info($"CancelOrder req={bufin} res={result}"); var taskNo = param["No"]; var wmsTask = TaskHelper.GetTask(taskNo); //指定任务已经完成或取消,无法再处理。 var flag = GetResult(result); if (flag.Res.ErrInfo == "指定任务已经完成或取消,无法再处理。") { TaskProcess.OperateStatus(wmsTask, 7, taskNo); //TaskHelper.Fail(wmsTask); } return GetResult(result); } catch (Exception e) { LogHelper.Info($"CancelOrder req={bufin} res={e.Message}"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } public AGVResult StartNewOrderWithQCmd(int ts, Dictionary param) { //lpn: //traccif: //lock: var bufin = GetReqStr(ts, param); try { var r = callClient.StartNewOrderWithQCmd(bufin); //Console.WriteLine($"交管占用成功 StartNewOrderWithQCmd req={bufin} res={r}"); LogHelper.Info($"交管占用成功 StartNewOrderWithQCmd req={bufin} res={r}", "任务"); return GetResult(r); } catch (Exception e) { //Console.WriteLine($"交管占用失败 StartNewOrderWithQCmd req={bufin} res={e.Message}"); LogHelper.Info($"交管占用失败 StartNewOrderWithQCmd req={bufin} res={e.Message}", "任务"); return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; } } public 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($"ChangeOrder req={bufin} res={r}"); return GetResult(r); } catch (Exception e) { LogHelper.Info($"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; } } } }