From b7308bba3d7ffad271ce7fc7a93c8c45d76be87d Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期五, 13 六月 2025 17:21:03 +0800 Subject: [PATCH] 优化印尼佳通-硫化胚胎出入库逻辑策略优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/dispatch/NDC.cs | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 164 insertions(+), 0 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/dispatch/NDC.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/dispatch/NDC.cs new file mode 100644 index 0000000..a2cf1f9 --- /dev/null +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/dispatch/NDC.cs @@ -0,0 +1,164 @@ +锘縰sing 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; } + } + } +} -- Gitblit v1.9.1