杨前锦
2025-07-07 c8f338feee0b6003d8f069b1d37fd9b90dd1b7f4
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
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
 
using HH.WCS.Mobox3.SXJK.wms;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Web.Http;
using static HH.WCS.Mobox3.SXJK.api.ApiHelper;
using static HH.WCS.Mobox3.SXJK.api.ApiModel;
using static HH.WCS.Mobox3.SXJK.api.OtherModel;
using static HH.WCS.Mobox3.SXJK.api.WmsController.OutBoundOrder;
using static HH.WCS.Mobox3.SXJK.api.WmsController.ShiftingStockOrder;
using static HH.WCS.Mobox3.SXJK.api.WmsController.TransferOrder;
using static Topshelf.Runtime.Windows.NativeMethods;
 
namespace HH.WCS.Mobox3.SXJK.api
{
    /// <summary>
    /// 第三方调用的接口
    /// </summary>
    [RoutePrefix("api")]
    public class WmsController : System.Web.Http.ApiController
    {
 
        internal static string GenerateTaskNo()
        {
            var id = SYSHelper.GetSerialNumber("通讯ID", "UUID");
            var date = DateTime.Now.ToString("yyMMdd");
            return $"UUID{date}{id.ToString().PadLeft(4, '0')}";
        }
 
        /// <summary>
        /// 入库单同步接口
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("inStockListSync")]
        public ResponseData inStockListSync(PutawayOrderData model) {
            LogHelper.Info("inStockListSync Request:" + JsonConvert.SerializeObject(model), "WMS");
            ResponseData responseData = new ResponseData();
            ES_BC_INFO es_bc_info = new ES_BC_INFO()
            {
                UUID = model.IS_BC_INFO.UUID,
                MSGID = model.IS_BC_INFO.MSGID,
                IFID = model.IS_BC_INFO.IFID,
                IFNAME = model.IS_BC_INFO.IFNAME,
                SENDER = model.IS_BC_INFO.RECEIVER,
                RECEIVER = model.IS_BC_INFO.SENDER,
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
             
            try
            {
                model.IT_DATA.ForEach(a =>
                {
                   var result = ApiHelper.putawayOrderSync(a);
                    if (!result) {
                        es_bc_info.TYPE = "E";
                        es_bc_info.MSG = "入库单同步错误";
                    }
                });
            }
            catch (Exception ex) {
                LogHelper.Info("inStockListSync 接口错误:" + ex.Message, "WMS");
                Console.WriteLine("入库单同步接口错误,错误信息:" + ex.Message);
                es_bc_info.TYPE = "E";
                es_bc_info.MSG = "入库单同步错误";
            }
            responseData.ES_BC_INFO = es_bc_info;
            LogHelper.Info("inStockListSync response:" + JsonConvert.SerializeObject(responseData), "WMS");
            return responseData;
        }
 
        /// <summary>
        /// 出库单同步接口
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("outStockListSync")]
        public ResponseData outStockListSync(OutboundOrderData model) {
            LogHelper.Info("outStockListSync Request:" + JsonConvert.SerializeObject(model), "WMS");
            ResponseData responseData = new ResponseData();
            ES_BC_INFO es_bc_info = new ES_BC_INFO()
            {
                UUID = model.IS_BC_INFO.UUID,
                MSGID = model.IS_BC_INFO.MSGID,
                IFID = model.IS_BC_INFO.IFID,
                IFNAME = model.IS_BC_INFO.IFNAME,
                SENDER = model.IS_BC_INFO.RECEIVER,
                RECEIVER = model.IS_BC_INFO.SENDER,
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
 
            try
            {
                model.IT_DATA.ForEach(a =>
                {
                    var result = ApiHelper.outboundOrderSync(a);
                    if (!result)
                    {
                        es_bc_info.TYPE = "E";
                        es_bc_info.MSG = "入库单同步错误";
                    }
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("出库单同步接口错误,错误信息:" + ex.Message);
                es_bc_info.TYPE = "E";
                es_bc_info.MSG = "出库单同步错误";
            }
            responseData.ES_BC_INFO = es_bc_info;
            LogHelper.Info("outStockListSync response:" + JsonConvert.SerializeObject(responseData), "WMS");
            return responseData;
        }
 
        /// <summary>
        /// 转移单同步接口
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("transferListSync")]
        public ResponseData transferListSync(TransferOrderData model)
        {
            LogHelper.Info("transferListSync Request:" + JsonConvert.SerializeObject(model), "WMS");
            ResponseData responseData = new ResponseData();
            ES_BC_INFO es_bc_info = new ES_BC_INFO()
            {
                UUID = model.IS_BC_INFO.UUID,
                MSGID = model.IS_BC_INFO.MSGID,
                IFID = model.IS_BC_INFO.IFID,
                IFNAME = model.IS_BC_INFO.IFNAME,
                SENDER = model.IS_BC_INFO.RECEIVER,
                RECEIVER = model.IS_BC_INFO.SENDER,
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
 
            try
            {
                model.IT_DATA.ForEach(a =>
                {
                   var result = ApiHelper.transferOrderSync(a);
                    if (!result)
                    {
                        es_bc_info.TYPE = "E";
                        es_bc_info.MSG = "转移单同步错误";
                    }
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("转移单同步接口错误,错误信息:" + ex.Message);
                es_bc_info.TYPE = "E";
                es_bc_info.MSG = "转移单同步错误";
            }
            responseData.ES_BC_INFO = es_bc_info;
            LogHelper.Info("transferListSync response:" + JsonConvert.SerializeObject(responseData), "WMS");
            return responseData;
        }
 
        /// <summary>
        /// 移库单同步接口
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("shiftingStockListSync")]
        public ResponseData shiftingStockListSync(ShiftingStockOrderData model)
        {
            LogHelper.Info("shiftingStockListSync Request:" + JsonConvert.SerializeObject(model), "WMS");
            ResponseData responseData = new ResponseData();
            ES_BC_INFO es_bc_info = new ES_BC_INFO()
            {
                UUID = model.IS_BC_INFO.UUID,
                MSGID = model.IS_BC_INFO.MSGID,
                IFID = model.IS_BC_INFO.IFID,
                IFNAME = model.IS_BC_INFO.IFNAME,
                SENDER = model.IS_BC_INFO.RECEIVER,
                RECEIVER = model.IS_BC_INFO.SENDER,
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
 
            try
            {
                model.IT_DATA.ForEach( a =>
                {
                   var result = ApiHelper.shiftingStockOrderSync(a);
                    if (!result) {
                        es_bc_info.TYPE = "E";
                        es_bc_info.MSG = "移库单同步错误";
                    }
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("移库单同步接口错误,错误信息:" + ex.Message);
                es_bc_info.TYPE = "E";
                es_bc_info.MSG = "移库单同步错误";
            }
            responseData.ES_BC_INFO = es_bc_info;
            LogHelper.Info("shiftingStockListSync response:" + JsonConvert.SerializeObject(responseData), "WMS");
            return responseData;
        }
 
        /// <summary>
        /// 冻结单同步接口
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("freezeListSync")]
        public ResponseData freezeListSync(FreezeOrderData model)
        {
            LogHelper.Info("freezeListSync Request:" + JsonConvert.SerializeObject(model), "WMS");
            ResponseData responseData = new ResponseData();
            ES_BC_INFO es_bc_info = new ES_BC_INFO()
            {
                UUID = model.IS_BC_INFO.UUID,
                MSGID = model.IS_BC_INFO.MSGID,
                IFID = model.IS_BC_INFO.IFID,
                IFNAME = model.IS_BC_INFO.IFNAME,
                SENDER = model.IS_BC_INFO.RECEIVER,
                RECEIVER = model.IS_BC_INFO.SENDER,
                SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"),
            };
 
            try
            {
                model.IT_DATA.ForEach(a =>
                {
                   var result = ApiHelper.freezeOrderSync(a);
                    if (!result)
                    {
                        es_bc_info.TYPE = "E";
                        es_bc_info.MSG = "冻结单同步错误";
                    }
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("冻结单同步接口错误,错误信息:" + ex.Message);
                es_bc_info.TYPE = "E";
                es_bc_info.MSG = "冻结单同步错误";
            }
            responseData.ES_BC_INFO = es_bc_info;
            LogHelper.Info("freezeListSync response:" + JsonConvert.SerializeObject(responseData), "WMS");
            return responseData;
        }
 
        public class ResponseData {
            public ES_BC_INFO ES_BC_INFO { get; set; } 
        }
 
        public class ES_BC_INFO
        {
            public string IFID { get; set; } = "WESWMS_ORDER_001"; // 接口ID
            public string UUID { get; set; } // UUID每次通讯要求唯一
            public string MSGID { get; set; } // 业务ID
            public string RESEND_ID { get; set; } = "001"; // 重复次数
            public string BUSTYP { get; set; } = "创建"; // 状态
            public string IFNAME { get; set; } = "WES成品收货信息传递到WMS"; // 接口描述
            public string SEND_DT { get; set; } // 响应日期
            public string SENDER { get; set; } = "WES"; // 发送人系统
            public string RECEIVER { get; set; } = "WMS";  // 接收人系统
            public string TYPE { get; set; } = "S";  // 业务成功标记   E失败   S成功
            public string MSG { get; set; } = "Success"; // 异常描述
        }
 
        public class FreezeOrderData
        {
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<FreezeOrder> IT_DATA { get; set; }
        }
 
        public class FreezeOrder {
            public string organizationId { get; set; }
            public string warehouseId { get; set; }
            public string customerId { get; set; }
            public string holdNo { get; set; }
            public string status { 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 List<FreezeOrderDetail> Details { get; set; }
            public class FreezeOrderDetail {
                public string holdNo { get; set; }
                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 ShiftingStockOrderData {
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<ShiftingStockOrder> IT_DATA { get; set; }
        }
 
        public class ShiftingStockOrder {
            public string organizationId { get; set; }
            public string warehouseId { get; set; }
            public string customerId { get; set; }
            public string mdocNo { get; set; }
            public string mdocType { get; set; }
            public string status { 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 List<ShiftingStockOrderDetail> Details { get; set; }
 
            public class ShiftingStockOrderDetail {
                public string mdocNo { get; set; }
                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 TransferOrderData {
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<TransferOrder> IT_DATA { get; set; }
        }
 
        public class TransferOrder {
            public string organizationId { get; set; }
            public string warehouseId { get; set; }
            public string customerId { get; set; }
            public string tdocNo { get; set; }
            public string tdocType { get; set; }
            public string status { 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 List<TransferOrderDetail> Details { get; set; }
 
            public class TransferOrderDetail {
                public string tdocNo { get; set; }
                public string traceId { get; set; }
                public string serialNo { get; set; }
                public string tolotAtt01 { get; set; }
                public string tolotAtt02 { get; set; }
                public string tolotAtt03 { get; set; }
                public string tolotAtt04 { get; set; }
                public string tolotAtt05 { get; set; }
                public string tolotAtt06 { get; set; }
                public string tolotAtt07 { get; set; }
                public string tolotAtt08 { get; set; }
                public string tolotAtt09 { get; set; }
                public string tolotAtt10 { get; set; }
                public string tolotAtt11 { get; set; }
                public string tolotAtt12 { get; set; }
                public string tolotAtt13 { get; set; }
                public string tolotAtt14 { get; set; }
                public string tolotAtt15 { get; set; }
                public string tolotAtt16 { get; set; }
                public string tolotAtt17 { get; set; }
                public string tolotAtt18 { get; set; }
                public string tolotAtt19 { get; set; }
                public string tolotAtt20 { get; set; }
                public string tolotAtt21 { get; set; }
                public string tolotAtt22 { get; set; }
                public string tolotAtt23 { get; set; }
                public string tolotAtt24 { 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 OutboundOrderData
        {
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<OutBoundOrder> IT_DATA { get; set; }
        }
        public class OutBoundOrder {
            public string organizationId { get; set; }
            public string warehouseId { get; set; }
            public string customerId { get; set; }
            public string orderNo { get; set; }
            public string orderType { get; set; }
            public string soStatus { get; set; }
            public string soReference1 { 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 List<OutBoundOrderDetail> Details { get; set; }
 
            public class OutBoundOrderDetail
            {
                public string orderNo { get; set; }
                public string sku { get; set; }
                public string seqNo { get; set; }
                public string qty { get; set; }
                public string lotAtt01 { get; set; }
                public string lotAtt02 { get; set; }
                public string lotAtt03 { get; set; }
                public string lotAtt04 { get; set; }
                public string lotAtt05 { get; set; }
                public string lotAtt06 { get; set; }
                public string lotAtt07 { get; set; }
                public string lotAtt08 { get; set; }
                public string lotAtt09 { get; set; }
                public string lotAtt10 { get; set; }
                public string lotAtt11 { get; set; }
                public string lotAtt12 { get; set; }
                public string lotAtt13 { get; set; }
                public string lotAtt14 { get; set; }
                public string lotAtt15 { get; set; }
                public string lotAtt16 { get; set; }
                public string lotAtt17 { get; set; }
                public string lotAtt18 { get; set; }
                public string lotAtt19 { get; set; }
                public string lotAtt20 { get; set; }
                public string lotAtt21 { get; set; }
                public string lotAtt22 { get; set; }
                public string lotAtt23 { get; set; }
                public string lotAtt24 { 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 PutawayOrderData { 
            public IS_BC_INFO IS_BC_INFO { get; set; }
            public List<PutawayOrderIn> IT_DATA { get; set; }
        }
 
        public class IS_BC_INFO
        { 
            public string CUSTOMERID { get; set; }
            public string BUSTYP { get; set; } = "回传";
            public string IFID { get; set; }
            public string IFNAME { get; set; }
            public string MSGID { get; set; }
            public string RECEIVER { get; set; } = "MES";
            public string RESEND_ID { get; set; } = "001";
            public string SENDER { get; set; } = "WMS";
            public string SEND_DT { get; set; }
            public string UUID { get; set; }
        }
 
        public class PutawayOrderIn {
            public string organizationId { get; set; }
            public string warehouseId { get; set; }
            public string customerId { get; set; }
            public string ASNNo { get; set; }
            public string ASNType { get; set; }
            public string asnStatus { get; set; }
            public string asnReference1 { 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 List<PutawayOrderDetail> Details { get; set; }
 
            public class PutawayOrderDetail {
                public string WERKS { get; set; }
                public string ASNNo { get; set; }
                public string sku { get; set; }
                public string skuDescr { get; set; }
                public string qty { get; set; }
                public string traceId { get; set; }
                public string serialNo { get; set; }
                public string containerWeight { get; set; }
                public string lotAtt01 { get; set; }
                public string lotAtt02 { get; set; }
                public string lotAtt03 { get; set; }
                public string lotAtt04 { get; set; }
                public string lotAtt05 { get; set; }
                public string lotAtt06 { get; set; }
                public string lotAtt07 { get; set; }
                public string lotAtt08 { get; set; }
                public string lotAtt09 { get; set; }
                public string lotAtt10 { get; set; }
                public string lotAtt11 { get; set; }
                public string lotAtt12 { get; set; }
                public string lotAtt13 { get; set; }
                public string lotAtt14 { get; set; }
                public string lotAtt15 { get; set; }
                public string lotAtt16 { get; set; }
                public string lotAtt17 { get; set; }
                public string lotAtt18 { get; set; }
                public string lotAtt19 { get; set; }
                public string lotAtt20 { get; set; }
                public string lotAtt21 { get; set; }
                public string lotAtt22 { get; set; }
                public string lotAtt23 { get; set; }
                public string lotAtt24 { 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; }
            }
        }
    }
}