11
pulg
2025-06-05 28bea7128b8c24a6a664e880f1425e1fa24b9b5f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
using HH.WCS.TempleteOver.DispatchService;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Xml;
using static HH.WCS.Hexafluo.dispatch.NDC;
 
namespace HH.WCS.Hexafluo.dispatch
{
    public class NDCHelper
    {
        private static HostToAGV callClient = new HostToAGV();
        public static void Test()
        {
            //dic.Add("Ext1", ""); dic.Add("Ext2", ""); dic.Add("N_CNTR_COUNT", "");
            //var r = callClient.AddNewOrderAsync(new AddNewOrderRequest() { bufin = "<Req><Order Pri='1' TS='1' From='1' To='2' No='123471118_1'  Ext1='1' Ext2='CALLADDAGV'  N_CNTR_COUNT='' /></Req>" });
            //r.Wait();
 
            var dic = new Dictionary<string, string>();
            dic.Add("Pri", "1"); dic.Add("From", "1"); dic.Add("To", "1"); dic.Add("No", "12311411718_2");// dic.Add("Ext1", "1"); dic.Add("Ext2", "CALLADDAGV"); dic.Add("N_CNTR_COUNT", "");
            var result = NDC.AddNewOrder(1, dic);
 
            var dic1 = new Dictionary<string, string>();
            var no = "3454566666";
            dic1.Add("From", "1"); dic1.Add("To", "0"); dic1.Add("No", no);
            result = NDC.AddNewOrder(101, dic1);
 
            var dic2 = new Dictionary<string, string>();
            dic2.Add("ExtDeviceNo", "1"); dic2.Add("From", "2"); dic2.Add("To", "2"); dic2.Add("No", DateTime.Now.Ticks.ToString()); dic2.Add("CtrlVal", "1");
            result = NDC.AddNewOrder(39, dic2);
 
            var dic3 = new Dictionary<string, string>();
            dic3.Add("From", "1"); dic3.Add("To", "9"); dic3.Add("No", no);
            result = NDC.CancelOrder(101, dic3);
 
            var dic4 = new Dictionary<string, string>();
            dic4.Add("ExtDeviceNo", "1"); dic4.Add("CtrlVal", "1"); dic4.Add("DispInfo", "AAAAAAAA"); dic4.Add("No", DateTime.Now.Ticks.ToString());
            result = NDC.StartNewOrderWithQCmd(41, dic4);
 
            var dic5 = new Dictionary<string, string>();
            dic5.Add("ExtDeviceNo", "1"); dic5.Add("CtrlVal", "1"); dic5.Add("No", DateTime.Now.Ticks.ToString());
            result = NDC.StartNewOrderWithQCmd(170, dic5);
 
            var dic6 = new Dictionary<string, string>();
            dic6.Add("ExtDeviceNo", "11"); dic6.Add("From", "2"); dic6.Add("To", "2"); dic6.Add("No", DateTime.Now.Ticks.ToString());
            result = NDC.StartNewOrderWithQCmd(164, dic6);
 
            var dic7 = new Dictionary<string, string>();
            dic7.Add("Param1", "50"); dic7.Add("No", DateTime.Now.Ticks.ToString());
            result = NDC.ChangeOrder(dic7);
        }
 
        /// <summary>
        /// 改参
        /// </summary>
        /// <param name="taskNo"></param>  1111    22222
        /// <param name="param1"></param>通知小车下一个站点的值 1101        22222
        /// <param name="paramNo"></param>18    2
        /// <returns></returns>
        public static bool ChangeParam(string taskNo, int param1, int paramNo = 0)
        {
            bool bResult = false;
            var dic = new Dictionary<string, string>();
            dic.Add("No", taskNo);
            if (paramNo >= 0)
            {
                dic.Add("ParamNo", paramNo.ToString());
            }
            dic.Add("Param1", param1.ToString());
            var result = NewNDC.ChangeOrder(dic);
            if (result.Res.ErrCode == 0) { bResult = true; }
            return bResult;
        }
 
 
        /// <summary>
        /// 修改优先级
        /// </summary>
        /// <param name="taskNo">任务号</param>
        /// <param name="paramNo">优先级</param>
        /// <returns></returns>
        public static bool ChangeParamPri(string taskNo, int paramNo = 0)
        {
            bool bResult = false;
            var dic = new Dictionary<string, string>();
            dic.Add("No", taskNo);
            if (paramNo >= 0)
            {
                dic.Add("Pri", paramNo.ToString());
            }
            dic.Add("IKey", "");
            var result = NewNDC.ChangeOrder(dic);
            if (result.Res.ErrCode == 0) { bResult = true; }
            return bResult;
        }
 
        public static AGVResult ChangeParamTo(string taskNo, int paramNo, params int[] param)
        {
            bool bResult = false;
            var AGVResult = new AGVResult();
 
 
            //发送行走指令 到AGV
            var req = $"<Req><Order No = '{taskNo}' ParamNo = '{paramNo}' Param1='{param[0]}'/></Req> ";
            if (param.Length > 1)
            {
                req = $"<Req><Order No = '{taskNo}' ParamNo = '{paramNo}' Param1='{param[0]}' Param2='{param[1]}'/></Req> ";
            }
            try
            {
                LogHelper.Info("NDC", $"{req}");
                var r = callClient.ChangeOrder(req);
                return GetResult(r);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return AGVResult;
            }
        }
        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 static bool Traffic(string lockNo)
        {
            bool bResult = false;
            var dic = new Dictionary<string, string>();
            dic.Add("ExtDeviceNo", lockNo);
            dic.Add("From", "2");
            dic.Add("To", "2"); dic.Add("No", DateTime.Now.Ticks.ToString());
 
            var result = NDC.StartNewOrderWithQCmd(164, dic);
            return bResult;
        }
 
        public static bool Cancel(string taskNo)
        {
            bool bResult = false;
            var dic = new Dictionary<string, string>();
            dic.Add("No", taskNo);
            dic.Add("IsForce", "1");
 
            var result = NDC.CancelOrder(1, dic);
            return bResult;
        }
    }
}