using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using Newtonsoft.Json;
namespace HH.WCS.Mobox3.Template.Util.Helper
{
///
/// NDC拼接帮助方法
///
public class NdcHelper
{
private static HostToAGV callClient = null;
static NdcHelper() {
callClient = new HostToAGV();
//callClient.Url = "http://192.168.1.146:9988/HostToAGV.cgi";
callClient.Url = Settings.HostToAgvServerUrl;
}
public 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 static 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' /> Order > Req >
// 调用字符串
var bufin = GetReqStrNew(ts, pri, taskNo, param);
try {
var result = callClient.OrderAdd(bufin);
LogHelper.Info($"任务下发结果 OrderAdd req={bufin} res={result}", "NdcHelper");
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}", "NdcHelper");
//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' /> Order > Req >
var bufin = GetReqStr(ts, param);
try {
var result = callClient.AddNewOrder(bufin);
LogHelper.Info($"AddNewOrder req={bufin} res={result}", "NdcHelper");
return GetResult(result);
}
catch (Exception e) {
LogHelper.Info($"AddNewOrder req={bufin} res={e.Message}", "NdcHelper");
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' /> Order > Req >
var bufin = GetReqStr(ts, param);
try {
var result = callClient.CancelOrder(bufin);
LogHelper.Info($"CancelOrder req={bufin} res={result}", "NdcHelper");
return GetResult(result);
}
catch (Exception e) {
LogHelper.Info($"CancelOrder req={bufin} res={e.Message}", "NdcHelper");
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}", "NdcHelper");
return GetResult(r);
}
catch (Exception e) {
LogHelper.Info($"StartNewOrderWithQCmd req={bufin} res={e.Message}", "NdcHelper");
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' /> Req >
var bufin = GetReqStr(0, param);
try {
var r = callClient.ChangeOrder(bufin);
LogHelper.Info($"ChangeOrder req={bufin} res={r}", "NdcHelper");
return GetResult(r);
}
catch (Exception e) {
LogHelper.Info($"ChangeOrder req={bufin} res={e.Message}", "NdcHelper");
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; }
}
}
}