New file |
| | |
| | | using HH.WCS.Mobox3.FJJT.util; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using System.Xml; |
| | | |
| | | namespace HH.WCS.Mobox3.FJJT.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 GetReqStrNew(int ts, int pri, string taskNo, Dictionary<string, string> param) { |
| | | /*<Req> |
| | | <Order TS='5' Pri='80' No='666' NoCallback='0' Ext1='' Ext2='' Ext3=''> |
| | | <Param Name='From' Value='10' /> |
| | | <Param Name='To' Value='20' /> |
| | | <Param Name='Func' Value='1' /> |
| | | <Param Name='Data' Value='7' /> |
| | | <Param Name='ItemHeight' Value='1' /> |
| | | <Param Name='CntrType' Value='12' /> |
| | | <Param Name='FromCol' Value='2' /> |
| | | <Param Name='ToCol' Value='111' /> |
| | | </Order> |
| | | </Req>*/ |
| | | var sb = new StringBuilder(); |
| | | sb.Append($"<Req><Order TS='{ts}' Pri='{pri}' No='{taskNo}'>"); |
| | | |
| | | foreach (var kv in param) { |
| | | sb.Append($"<Param Name='{kv.Key}' Value='{kv.Value}'/>"); |
| | | } |
| | | sb.Append("</Order></Req>"); |
| | | return sb.ToString(); |
| | | } |
| | | public AGVResult AddNewOrderNew(int ts, int pri, string taskNo, 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 = 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<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='{ts}'"); |
| | | } |
| | | foreach (var kv in param) { |
| | | sb.Append($" {kv.Key}='{kv.Value}'"); |
| | | } |
| | | sb.Append("/></Req>"); |
| | | return sb.ToString(); |
| | | } |
| | | 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 > |
| | | |
| | | 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<string, string> param) { |
| | | //< Req >< Order No = 'TN2302020001' >< Param Name = 'IsForce' Value = '1' /></ Order ></ Req > |
| | | 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<string, string> param) { |
| | | //lpn: <Order TS='41' Pri='' ExtDeviceNo='{0}' CtrlVal='{1}' DispInfo='{2}' No='{3}' Ext1='' Ext2='' N_CNTR_COUNT='' /> |
| | | //traccif: <Order TS='164' From='2' To='2' ExtDeviceNo='" + lockNo + "' No='" + DateTime.Now.Ticks.ToString() + "' /> |
| | | //lock: <Order TS='170' CtrlVal='" + CtrlVal + "' ExtDeviceNo='" + roadway + "' No='" + DateTime.Now.Ticks.ToString() + "' /> |
| | | 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<string, string> param) { |
| | | //< Req >< Order No = 'TN2302020002' ParamNo = '18' Param1 = '12' /></ Req > |
| | | 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) { |
| | | //<Res><ErrCode>0</ErrCode><Result>11</Result></Res> |
| | | XmlDocument xml = new XmlDocument(); |
| | | xml.LoadXml(bufout); |
| | | var json = JsonConvert.SerializeXmlNode(xml); |
| | | return JsonConvert.DeserializeObject<AGVResult>(json); |
| | | } |
| | | public class AGVResult |
| | | { |
| | | public Res Res { get; set; } |
| | | } |
| | | public class Res |
| | | { |
| | | public int ErrCode { get; set; } |
| | | public string ErrInfo { get; set; } |
| | | } |
| | | } |
| | | } |