schangxiang@126.com
2025-09-17 ff43ddf18764629ff875478e4e47a7281cbd230a
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
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
using Admin.NET.Application;
using Admin.NET.Core;
using Admin.NET.Core.TaskModule.Enum;
using iWareCommon;
using iWareCommon.Utils;
using iWareSql.MyDbContext;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading;
using System.Xml;
 
namespace iWareCC
{
    /// <summary>
    /// PO收货 处理的线程
    /// </summary>
    public class PoDeliveryHandler
    {
        public static void Handler()
        {
            var errMsg = "";
            while (true)
            {
                try
                {
                    SystemWarningMsg._lbl_Alert_PoDeliveryHandler = "循环开始...";
                    if (SystemValue.isAllowRuning_PoDeliveryHandler && SystemValue.isStartedModel)
                    {
                        errMsg = "";//重置
                        try
                        {
                            Do(ref errMsg);
                            if (!string.IsNullOrEmpty(errMsg))
                            {
                                SystemWarningMsg._lbl_Alert_PoDeliveryHandler = errMsg;
                            }
                        }
                        catch (Exception ex)
                        {
                            Log4NetHelper.WriteErrorLog(LogType.PoDeliveryHandler, "PO接收线程=>" + errMsg + ",异常:" + ex.Message, ex);
                            SystemWarningMsg._lbl_Alert_PoDeliveryHandler = "PO接收线程=>" + errMsg + ",异常:" + ex.Message;
                        }
                    }
                }
                catch (Exception ex)
                {
                    SystemWarningMsg._lbl_Alert_PoDeliveryHandler = "出现异常:" + ex.Message;
                    Log4NetHelper.WriteErrorLog(LogType.PoDeliveryHandler, "PoDeliveryHandler 出现异常:" + ex.Message, ex);
                }
                Thread.Sleep(2 * 1000);//休眠2秒
            }
        }
 
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="model"></param>
        /// <param name="Lane"></param>
        /// <param name="flag"></param>
        /// <param name="errMsg"></param>
        private static void Do(ref string errMsg)
        {
            var PoOrderInfo = new DiyAddWmsOrderPurchaseInput();
            PoOrderInfo.BusinessType = 1001;
            PoOrderInfo.SupplierCode = "GYS05";
            var newWmsOrderPurchaseDetailsInput = new WmsOrderPurchaseDetailsInput();
            var WmsOrderPurchaseDetailsInputList = new List<WmsOrderPurchaseDetailsInput>();
            newWmsOrderPurchaseDetailsInput.MaterialCode = "T0987";
            newWmsOrderPurchaseDetailsInput.MaterialName = "T0987";
            newWmsOrderPurchaseDetailsInput.Id = 571952729907269;
            newWmsOrderPurchaseDetailsInput.Quantity = 2;
            newWmsOrderPurchaseDetailsInput.ErpCode = "ERPT0987";
            newWmsOrderPurchaseDetailsInput.Unit = "G";
            newWmsOrderPurchaseDetailsInput.PoLineNumber = "1";
            WmsOrderPurchaseDetailsInputList.Add(newWmsOrderPurchaseDetailsInput);
            PoOrderInfo.purchaseOrderDetails = WmsOrderPurchaseDetailsInputList;
            var inputStr = JsonConvert.SerializeObject(PoOrderInfo);
            // var respone =await 
            //using (MyDbContext mycontext = new MyDbContext())
            //{
            //    var query_PrintStatuEnum = (int)PrintStatuEnum.未打印;
            //    var list = mycontext.wms_record_sncode_print.Where(x => (x.IsDelete == false) && x.PrintStatus == query_PrintStatuEnum)
            //        .OrderBy(x => x.Id).ToList();
 
 
            //    wms_config_print printConfig = null;
            //    string _PrinterName = "";
            //    if (list.Count > 0)
            //    {
 
            //    }
            //    else
            //    {
            //        errMsg = $"没有可打印的内容!";
            //        return;
            //    }
 
            //    foreach (var item in list)
            //    {
 
 
            //        PrintClassifyEnum printClassifyEnum = default(PrintClassifyEnum);
            //        var isRight = GetPrintClassifyEnum(item, mycontext, ref errMsg, ref printClassifyEnum);
            //        if (!isRight)
            //        {
            //            return;
            //        }
 
            //        printConfig = mycontext.wms_config_print.Where(x => x.PrintClassify == (int)printClassifyEnum).FirstOrDefault();
            //        if (printConfig == null)
            //        {
            //            errMsg = $"没有找到{printClassifyEnum.ToString()}的打印配置!";
            //            return;
            //        }
            //        //设置打印机,注意:这里只获取第一个,以后可能要改!
            //        _PrinterName = printConfig.PrinterList.Split(',')[0];
            //        //根据配置名字查询 打印机名字
            //        var printConfigData = mycontext.SysDictData.Where(x => x.Name == _PrinterName).FirstOrDefault();
            //        if (printConfigData == null)
            //        {
            //            errMsg = $"没有找到{_PrinterName.ToString()}的打印机名字!";
            //            return;
            //        }
            //        _PrinterName = printConfigData.Value;
 
            //        Dictionary<string, object> data = new Dictionary<string, object>();
            //        if (printClassifyEnum == PrintClassifyEnum.看板卡)
            //        {
            //            data.Add("cardNo", item.KanBanCardNo ?? "");
            //            data.Add("ToAreaName", item.ToAreaName ?? "");
 
            //            data.Add("bar", item.SNCode);
            //            data.Add("material", item.MaterialCode ?? "" + "/" + item.MaterialName ?? "");
            //            data.Add("supplier", item.SupplierName ?? "");
            //            data.Add("unit", item.MaterialUnit ?? "");
            //            data.Add("qty", item.Quantity);
            //            data.Add("date", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            //        }
            //        else
            //        {
            //            data.Add("bar", item.SNCode);
            //            data.Add("material", item.MaterialCode ?? "" + "/" + item.MaterialName ?? "");
            //            data.Add("supplier", item.SupplierName ?? "");
            //            data.Add("unit", item.MaterialUnit ?? "");
            //            data.Add("qty", item.Quantity);
            //            data.Add("date", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            //        }
 
 
            //        //调用打印接口
            //        bool isSuccess = false;
            //        using (PrintBaseService.PrintWcfServiceClient client = new PrintBaseService.PrintWcfServiceClient())
            //        {
            //            //isSuccess = client.Print3(data, 1, @"D:\打印程序\跟踪码打印模板\跟踪码打印模板_一维码.btw", "ZDesigner ZD888-203dpi ZPL", out errMsg);
            //            //isSuccess = client.Print3(data, 1, @"D:\打印程序\跟踪码打印模板\跟踪码打印模板_二维码.btw", "ZDesigner ZD888-203dpi ZPL", out errMsg);
            //            isSuccess = client.Print3(data, item.PrintSheetNum, printConfig.PrintTemplateAddr, _PrinterName, out errMsg);
            //        }
            //        if (isSuccess)
            //        {
            //            item.PrintStatus = 1;//打印状态(0:未打印 1:已打印)
            //            item.PrintNum = (item.PrintNum) + 1;
 
            //            mycontext.SaveChanges();
            //        }
            //        else
            //        {
            //            errMsg = $"打印错误,跟踪码{item.SNCode},打印机名称{_PrinterName},错误信息:(打印服务返回)" + errMsg;
            //            Log4NetHelper.WriteErrorLog(LogType.PoDeliveryHandler, errMsg, null);
            //            return;
            //        }
 
            //        Thread.Sleep(2000);
            //    }
 
            //}
        }
 
 
        //private static bool GetPrintClassifyEnum(wms_record_sncode_print item, MyDbContext mycontext, ref string errMsg, ref PrintClassifyEnum printClassifyEnum)
        //{
        //    if (item.PrintType == (int)PrintTypeEnum.看板卡)
        //    {
        //        printClassifyEnum = PrintClassifyEnum.看板卡;
        //    }
        //    else
        //    {
        //        wms_config_sncode_rule rule = null;
        //        var ruleList = mycontext.wms_config_sncode_rule.Where(x => (x.RuleName == "ASN一维码" || x.RuleName == "ASN二维码") && x.IsDisabled == false).ToList();
        //        if (ruleList != null && ruleList.Count > 1)
        //        {
        //            errMsg = "条码生成规则配置中,ASN一维码和ASN二维码只能启用其中一个!";
        //            return false;
        //        }
        //        if (ruleList == null || ruleList.Count == 0)
        //        {
        //            errMsg = "条码生成规则配置中,ASN一维码和ASN二维码两个都没有配置启用!";
        //            return false;
        //        }
        //        rule = ruleList.First();
 
        //        printClassifyEnum = default(PrintClassifyEnum);
        //        if (rule.RuleName == "ASN一维码")
        //        {
        //            printClassifyEnum = PrintClassifyEnum.一维跟踪码;
        //        }
        //        else
        //        {
        //            printClassifyEnum = PrintClassifyEnum.二维跟踪码;
        //        }
        //    }
 
        //    return true;
 
        //}
 
 
        public class DiyAddWmsOrderPurchaseInput : WmsOrderPurchaseBaseInput
        {
 
            public string Dock { get; set; } = "101";
            public string ErpOrderNo { get; set; }
            public virtual string ProjectNo { get; set; }
            public List<WmsOrderPurchaseDetailsInput> purchaseOrderDetails { get; set; }
 
        }
 
        /// <summary>
        /// 采购订单基础输入参数
        /// </summary>
        public class WmsOrderPurchaseBaseInput
        {
            /// <summary>
            /// 采购单号
            /// </summary>
            public virtual string PurchaseNo { get; set; }
 
            /// <summary>
            /// 订单类型
            /// </summary>
            public virtual OrderTypeEnum OrderType { get; set; }
 
            /// <summary>
            /// 订单类型名称
            /// </summary>
            public virtual string OrderTypeName { get; set; }
 
            /// <summary>
            /// 业务类型
            /// </summary>
            public virtual int BusinessType { get; set; }
 
            /// <summary>
            /// 业务类型名称
            /// </summary>
            public virtual string BusinessTypeName { get; set; }
 
            /// <summary>
            /// 单据来源
            /// </summary>
            public virtual string OrderSocure { get; set; }
 
            /// <summary>
            /// 订单状态
            /// </summary>
            public virtual OrderStatusEnum PoStatus { get; set; }
 
            /// <summary>
            /// 订单状态名称
            /// </summary>
            public virtual string PoStatusName { get; set; }
 
            /// <summary>
            /// 需求数量
            /// </summary>
            public virtual decimal? Quantity { get; set; }
 
            /// <summary>
            /// 已收货数量
            /// </summary>
            public virtual decimal? GoodsQuantity { get; set; }
 
            /// <summary>
            /// 供应商编号
            /// </summary>
            public virtual string SupplierCode { get; set; }
 
            /// <summary>
            /// 供应商名称
            /// </summary>
            public virtual string SupplierName { get; set; }
 
            /// <summary>
            /// 收货道口
            /// </summary>
            public virtual string Dock { get; set; }
 
            /// <summary>
            /// ERP单号
            /// </summary>
            public virtual string ErpOrderNo { get; set; }
 
            /// <summary>
            /// 项目ID
            /// </summary>
            public virtual long? ProjectId { get; set; }
 
            /// <summary>
            /// 项目号
            /// </summary>
            public virtual string ProjectNo { get; set; }
 
            /// <summary>
            /// 项目名称
            /// </summary>
            public virtual string ProjectName { get; set; }
 
            /// <summary>
            /// 备注
            /// </summary>
            public virtual string Remark { get; set; }
 
            /// <summary>
            /// ERP创建人
            /// </summary>
            public virtual string Erp_CreatedUserName { get; set; }
 
            /// <summary>
            /// ERP修改人
            /// </summary>
            public virtual string Erp_UpdatedUserName { get; set; }
 
            /// <summary>
            /// 工厂ID
            /// </summary>
            public virtual long FactoryId { get; set; }
 
            /// <summary>
            /// 工厂名称
            /// </summary>
            public virtual string FactoryName { get; set; }
 
            /// <summary>
            /// 工厂编号
            /// </summary>
            public virtual string FactoryCode { get; set; }
 
            /// <summary>
            /// 创建时间
            /// </summary>
            public virtual DateTime? CreateTime { get; set; }
 
            /// <summary>
            /// 修改时间
            /// </summary>
            public virtual DateTime? UpdateTime { get; set; }
 
            /// <summary>
            /// 创建人Id
            /// </summary>
            public virtual long? CreateUserId { get; set; }
 
            /// <summary>
            /// 创建人
            /// </summary>
            public virtual string CreateUserName { get; set; }
 
            /// <summary>
            /// 修改人Id
            /// </summary>
            public virtual long? UpdateUserId { get; set; }
 
            /// <summary>
            /// 修改人
            /// </summary>
            public virtual string UpdateUserName { get; set; }
 
            /// <summary>
            /// 软删除
            /// </summary>
            public virtual bool IsDelete { get; set; }
 
 
 
 
        }
        /// <summary>
        /// 采购订单明细分页查询输入参数
        /// </summary>
        public class WmsOrderPurchaseDetailsInput : BasePageInput
        {
            /// <summary>
            /// 关键字查询
            /// </summary>
            public string SearchKey { get; set; }
 
            /// <summary>
            /// PO单ID
            /// </summary>
            public long? PoId { get; set; }
            public long? Id { get; set; }
 
            /// <summary>
            /// PO单号
            /// </summary>
            public string PoNo { get; set; }
 
            /// <summary>
            /// 行号
            /// </summary>
            public string PoLineNumber { get; set; }
 
            /// <summary>
            /// ERP单号
            /// </summary>
            public string ErpOrderNo { get; set; }
 
            /// <summary>
            /// ERP库存地
            /// </summary>
            public string ErpCode { get; set; }
 
            /// <summary>
            /// 物料编号
            /// </summary>
            public string MaterialCode { get; set; }
 
            /// <summary>
            /// 物料名称
            /// </summary>
            public string MaterialName { get; set; }
 
            /// <summary>
            /// 数量
            /// </summary>
            public decimal? Quantity { get; set; }
 
            /// <summary>
            /// 已收数量
            /// </summary>
            public decimal? GoodsQuantity { get; set; }
 
            /// <summary>
            /// 状态
            /// </summary>
            public OrderStatusEnum? PoDetailStatus { get; set; }
 
            /// <summary>
            /// 状态名称
            /// </summary>
            public string PoDetailStatusName { get; set; }
 
            /// <summary>
            /// 供应商编号
            /// </summary>
            public string SupplierCode { get; set; }
 
            /// <summary>
            /// 供应商名称
            /// </summary>
            public string SupplierName { get; set; }
 
            /// <summary>
            /// 计划开始时间范围
            /// </summary>
            public List<DateTime?> PlannedStartTimeRange { get; set; }
            /// <summary>
            /// 计划开始时间
            /// </summary>
 
 
            public DateTime? PlannedStartTime { get; set; }
 
            public string ProjectNo { get; set; }
 
            /// <summary>
            /// 计划结束时间
            /// </summary>
 
 
            public DateTime? PlannedEndTime { get; set; }
 
            /// <summary>
            /// 计划结束时间范围
            /// </summary>
            public List<DateTime?> PlannedEndTimeRange { get; set; }
 
            public string Unit { get; set; }
 
            public string SupplierBatch { get; set; }
 
            /// <summary>
            /// asn单- 过滤“新建”“处理中”的PO单
            /// </summary>
            public bool? FilterOrderStauts { get; set; }
 
        }
        /// <summary>
        /// 全局分页查询输入参数
        /// </summary>
        public class BasePageInput
        {
            /// <summary>
            /// 当前页码
            /// </summary>
            public virtual int Page { get; set; } = 1;
 
            /// <summary>
            /// 页码容量
            /// </summary>
            //[Range(0, 100, ErrorMessage = "页码容量超过最大限制")]
            public virtual int PageSize { get; set; } = 20;
 
            /// <summary>
            /// 排序字段
            /// </summary>
            public virtual string Field { get; set; }
 
            /// <summary>
            /// 排序方向
            /// </summary>
            public virtual string Order { get; set; }
 
            /// <summary>
            /// 降序排序
            /// </summary>
            public virtual string DescStr { get; set; } = "descending";
        }
        /// <summary>
        /// wcs推送Po单输入参数
        /// </summary>
        public class WCSPutPoOrderInput
        {
            public string AddPoOrderData { get; set; }
 
        }
    }
 
}