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