杨前锦
2025-06-04 d44e3abf0d51cfea1ed7df510974d69458cf516d
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
using HH.WCS.Mobox3.SXJK.api;
using HH.WCS.Mobox3.SXJK.models;
using HH.WCS.Mobox3.SXJK.util;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static HH.WCS.Mobox3.SXJK.api.WmsController;
using static HH.WCS.Mobox3.SXJK.api.WmsController.PutawayOrderIn;
using static HH.WCS.Mobox3.SXJK.dispatch.WMSDispatch.TrayRequestInStockData;
 
namespace HH.WCS.Mobox3.SXJK.dispatch
{
    internal class WMSDispatch
    {
        private static readonly HttpHelper apiHelper = new HttpHelper();
        private static readonly string baseUrl = Settings.WMSSeverUrl;
 
        /// <summary>
        /// 收货回传WMS接口
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static bool ReceiveGoodsFeedback(object obj)
        {
            ReceiveGoodsFeedbackData data = new ReceiveGoodsFeedbackData();
            IS_BC_INFO iS_BC_INFO = new IS_BC_INFO()
            {
                CUSTOMERID = Settings.orgInfo.customerId,
                IFID = "CF_AGV101",
                IFNAME = "收货回传WMS接口",
                UUID = WmsController.GenerateTaskNo(),
                MSGID = "",
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
            data.IS_BC_INFO = iS_BC_INFO;
            data.IT_DATA = (List<ReceiveGoodsFeedbackData.FeedbackData>)obj;
 
            var msg = "";
            bool result = false;
            var request = JsonConvert.SerializeObject(data);
            var response = apiHelper.Post(baseUrl + "/JIP/WMS/WMS_JK_AGV_ASNSH", request);
            msg = $"[WMS-ReceiveGoodsFeedback] request={request} response={response}";
            LogHelper.Info(msg, "WMS");
            if (response != "")
            {
                try
                {
                    var dataResult = JsonConvert.DeserializeObject<WMSResponse>(response);
                    if (dataResult.ES_BC_INFO.TYPE == "S")
                    {
                        result = true ;
                    }
                }
                catch (Exception ex)
                {
                    msg = "[WMS-ReceiveGoodsFeedback]收货回传WMS接口返回数据解析错误,错误原因:"+ex.Message;
                    LogHelper.Info(msg, "WMS");
                }
            }
            else
            {
                msg = "[WMS-ReceiveGoodsFeedback]收货回传WMS接口失败";
                LogHelper.Info(msg, "WMS");
            }
            return result;
        }
 
        /// <summary>
        /// 托盘请求入库接口
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static WMSTrayRequestResponse TrayRequestInStock(object obj)
        {
            TrayRequestInStockData data = new TrayRequestInStockData();
            IS_BC_INFO iS_BC_INFO = new IS_BC_INFO()
            {
                CUSTOMERID = Settings.orgInfo.customerId,
                IFID = "CF_AGV102",
                IFNAME = "托盘请求入库接口",
                UUID = WmsController.GenerateTaskNo(),
                MSGID = "",
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
            data.IS_BC_INFO = iS_BC_INFO;
            data.IT_DATA = (List<RequestData>)obj;
 
            var msg = "";
            WMSTrayRequestResponse requestResponse = null;
            try
            {
                var request = JsonConvert.SerializeObject(data);
                LogHelper.Info("托盘请求入库接口", "WMS");
                var response = apiHelper.Post(baseUrl + "/JIP/WMS/WMS_JK_AGV_TRACEID_REQUEST", request);
                msg = $"[WMS-TrayRequestInStock] request={request} response={response}";
                LogHelper.Info(msg, "WMS");
                if (response != "")
                {
                    var dataResult = JsonConvert.DeserializeObject<WMSTrayRequestResponse>(response);
                    if (dataResult.ES_BC_INFO.TYPE == "S")
                    {
                        requestResponse = dataResult;
                    }
 
                }
                else
                {
                    msg = "[WMS-TrayRequestInStock]托盘请求入库接口失败";
                    LogHelper.Info(msg, "WMS");
                }
            }
            catch (Exception ex)
            {
                msg = "[WMS-TrayRequestInStock]托盘请求入库接口返回错误,错误原因:" + ex.Message;
                LogHelper.Info(msg, "WMS");
            }
            return requestResponse;
        }
 
        /// <summary>
        /// 发货托盘回传WMS系统接口
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static bool ShipmentsTrayFeedback(object obj)
        {
            ShipmentsTrayFeedbackData data = new ShipmentsTrayFeedbackData();
            IS_BC_INFO iS_BC_INFO = new IS_BC_INFO()
            {
                CUSTOMERID = Settings.orgInfo.customerId,
                IFID = "CF_AGV103",
                IFNAME = "发货托盘回传WMS系统接口",
                UUID = WmsController.GenerateTaskNo(),
                MSGID = "",
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
            data.IS_BC_INFO = iS_BC_INFO;
            data.IT_DATA = (List<ShipmentsTrayFeedbackData.FeedbackData>)obj;
 
            var msg = "";
            bool result = false;
            var request = JsonConvert.SerializeObject(data);
            var response = apiHelper.Post(baseUrl + "/JIP/WMS/WMS_JK_AGV_TRACEID_SO", request);
            msg = $"[WMS-ShipmentsTrayFeedback] request={request} response={response}";
            LogHelper.Info(msg, "WMS");
            if (response != "")
            {
                try
                {
                    var dataResult = JsonConvert.DeserializeObject<WMSResponse>(response);
                    if (dataResult.ES_BC_INFO.TYPE == "S")
                    {
                        result = true;
                    }
                }
                catch (Exception ex)
                {
                    msg = "[WMS-ShipmentsTrayFeedback]发货托盘回传WMS系统接口返回数据解析错误,错误原因:" + ex.Message;
                    LogHelper.Info(msg, "WMS");
                }
            }
            else
            {
                msg = "[WMS-ShipmentsTrayFeedback]发货托盘回传WMS系统接口失败";
                LogHelper.Info(msg, "WMS");
            }
            return result;
        }
 
        /// <summary>
        /// 移库单移库反馈接口
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static bool ShiftingStockOrderFeedback(object obj)
        {
            ShiftingStockOrderFeedbackData data = new ShiftingStockOrderFeedbackData();
            IS_BC_INFO iS_BC_INFO = new IS_BC_INFO()
            {
                CUSTOMERID = Settings.orgInfo.customerId,
                IFID = "CF_AGV104",
                IFNAME = "移库单移库反馈接口",
                UUID = WmsController.GenerateTaskNo(),
                MSGID = "",
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
            data.IS_BC_INFO = iS_BC_INFO;
            data.IT_DATA = (List<ShiftingStockOrderFeedbackData.FeedbackData>)obj;
 
            var msg = "";
            bool result = false;
            var request = JsonConvert.SerializeObject(data);
            var response = apiHelper.Post(baseUrl + "/JIP/WMS/WMS_JK_AGV_TRACEID_MD", request);
            msg = $"[WMS-ShiftingStockOrderFeedback] request={request} response={response}";
            LogHelper.Info(msg, "WMS");
            if (response != "")
            {
                try
                {
                    var dataResult = JsonConvert.DeserializeObject<WMSResponse>(response);
                    if (dataResult.ES_BC_INFO.TYPE == "S")
                    {
                        result = true;
                    }
                }
                catch (Exception ex)
                {
                    msg = "[WMS-ShiftingStockOrderFeedback]移库单移库反馈接口返回数据解析错误,错误原因:" + ex.Message;
                    LogHelper.Info(msg, "WMS");
                }
            }
            else
            {
                msg = "[WMS-ShiftingStockOrderFeedback]移库单移库反馈接口失败";
                LogHelper.Info(msg, "WMS");
            }
            return result;
        }
 
        public class ShiftingStockOrderFeedbackData
        {
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<FeedbackData> IT_DATA { get; set; }
            public class FeedbackData
            {
                public string organizationId { get; set; } // 组织编号
                public string warehouseId { get; set; }  // 仓库编号
                public string customerId { get; set; } // 工厂ID
                public string mdocNo { get; set; }  // 发运订单
                public string mdocType { get; set; }  // 移库类型 AGV WMS
                public string traceId { get; set; }  // 托盘号
                public string toLocation { get; set; }  // 集货位
                public string udf01 { get; set; }
                public string udf02 { get; set; }
                public string udf03 { get; set; }
                public string udf04 { get; set; }
                public string udf05 { get; set; }
            }
        }
 
        public class ShipmentsTrayFeedbackData
        {
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<FeedbackData> IT_DATA { get; set; }
            public class FeedbackData
            {
                public string organizationId { get; set; } // 组织编号
                public string warehouseId { get; set; }  // 仓库编号
                public string customerId { get; set; } // 工厂ID
                public string orderNo { get; set; }  // 发运订单
                public string sku { get; set; }  // 物料号
                public string qty { get; set; }  // 数量
                public string weighQty { get; set; }  // 称重数量
                public string traceId { get; set; }  // 托盘号
                public string serialNo { get; set; }  // 箱号
                public string toLocationId { get; set; }  // 集货位
                public string completedFlag { get; set; }  // 订单收货完成标记 N未收货完成 Y已收货完成
                public string udf01 { get; set; }
                public string udf02 { get; set; }
                public string udf03 { get; set; }
                public string udf04 { get; set; }
                public string udf05 { get; set; }
 
                public FeedbackData ShallowCopy()
                {
                    return (FeedbackData)this.MemberwiseClone();
                }
            }
        }
 
        public class WMSTrayRequestResponse
        {
            public ES_BC_INFO ES_BC_INFO;
            public List<PutawayOrderDetail> IT_DATA;
        }
 
        public class TrayRequestInStockData {
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<RequestData> IT_DATA { get; set; }
            public class RequestData {
                public string organizationId { get; set; } // 组织编号
                public string warehouseId { get; set; }  // 仓库编号
                public string customerId { get; set; } // 工厂ID
                public string traceId { get; set; }  // 托盘号
                public string udf01 { get; set; }
                public string udf02 { get; set; }
                public string udf03 { get; set; }
                public string udf04 { get; set; }
                public string udf05 { get; set; }
            }
        }
 
        public class WMSResponse
        {
            public ES_BC_INFO ES_BC_INFO;
        }
 
        public class ReceiveGoodsFeedbackData
        {
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<FeedbackData> IT_DATA { get; set; }
            public class FeedbackData
            {
                public string organizationId { get; set; } // 组织编号
                public string warehouseId { get; set; }  // 仓库编号
                public string customerId { get; set; } // 工厂ID
                public string ASNNo { get; set; }  // 预期到货通知单
                public string sku { get; set; }  // 物料号
                public string qty { get; set; }  // 数量
                public string weighQty { get; set; }  // 称重数量
                public string traceId { get; set; }  // 托盘号
                public string serialNo { get; set; }  // 箱号
                public string locationId { get; set; }  // 收货库位
                public string completedFlag { get; set; }  // 订单收货完成标记 N未收货完成 Y已收货完成
                public string udf01 { get; set; }
                public string udf02 { get; set; }
                public string udf03 { get; set; }
                public string udf04 { get; set; }
                public string udf05 { get; set; }
            }
        }
        
 
    }
}