using HH.WCS.Mobox3.DoubleCoin.util;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Xml;
|
|
namespace HH.WCS.Mobox3.DoubleCoin.dispatch
|
{
|
public class NDC
|
{
|
private static HostToAGV callClient = null;
|
static NDC() {
|
callClient = new HostToAGV();
|
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; }
|
}
|
}
|
}
|