Browse Source

变更计时的方式

林豪 左 3 năm trước cách đây
mục cha
commit
65e1df1ba7

+ 5 - 4
Projects/永冠OPP/WCS.Service/Helpers/FinishTaskList.cs

@@ -1,6 +1,6 @@
 using Newtonsoft.Json;
-using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using WCS.Service.Entity;
 using WCS.Service.Extensions;
@@ -48,15 +48,16 @@ namespace WCS.Service.Helpers
         {
             if (!finishes.Any()) throw new DoException("没有任务");
             var items = finishes.ToArray();
-            var now = DateTime.Now;
+            var timer = new Stopwatch();
+            timer.Start();
             var infos = items.Length switch
             {
                 1 => WMS.I_WCS_GetInTask(items[0].FinishCode, items[0].Station.Entity.CODE),
                 2 => WMS.I_WCS_GetInTask(items[0].FinishCode, items[0].Station.Entity.CODE, items[1].FinishCode, items[1].Station.Entity.CODE),
                 _ => throw new WarnException($"一组任务数量最大为2,当前{items.Length}"),
             };
-            var time = DateTime.Now;
-            InfoLog.INFO_TIMING($"扫码入库接口调用,耗时{(time - now).TotalMilliseconds},{now}-----{time}---{JsonConvert.SerializeObject(infos)}");
+            timer.Stop();
+            InfoLog.INFO_TIMING($"扫码入库接口调用,耗时{timer.ElapsedMilliseconds}---------{JsonConvert.SerializeObject(infos)}");
             return infos;
         }
     }

+ 13 - 0
Projects/永冠OPP/WCS.Service/Helpers/LogHelper.cs

@@ -1,6 +1,7 @@
 using DBHelper;
 using Microsoft.EntityFrameworkCore;
 using System;
+using System.Diagnostics;
 using System.Linq;
 using WCS.Entity;
 using WCS.Service.Log;
@@ -88,5 +89,17 @@ namespace WCS.Service.Helpers
             InfoLog.INFO_ERROR($"{type1.FullName}--{msg}--{device}--{type}");
             return $"{msg}|{device}|{type}";
         }
+
+        ///// <summary>
+        ///// 秒表
+        ///// </summary>
+        //public static void Timer<T>(Action<> act, string msg)
+        //{
+        //    var timer = new Stopwatch();
+        //    timer.Start();
+          
+        //    timer.Stop();
+        //    InfoLog.INFO_TIMING(msg + $"{timer.ElapsedMilliseconds}");
+        //}
     }
 }

+ 65 - 62
Projects/永冠OPP/WCS.Service/Works/Station/一楼入库.cs

@@ -2,6 +2,7 @@
 using Microsoft.EntityFrameworkCore;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using WCS.Core;
 using WCS.Entity;
@@ -23,78 +24,80 @@ namespace WCS.Service.Works.Station
 
         protected override void Do(StationDeviceGroup obj)
         {
-            var now = DateTime.Now;
+            var timer = new Stopwatch();
+            timer.Start();
             obj.EX(obj =>
-            {
-                //设备组无论单卷还是双卷都必须满足的条件
-                if (obj.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待任务执行--凭证号不一致");
-                if (obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new WarnException($"设备运行中");
-
-                //成功创建的任务
-                var finishTaskList = new List<FinishTaskList<int>>();
-
-                //创建对应的任务
-                DB.Do(db =>
                 {
-                    var devs = obj.GetBcrValid();
-                    devs.Valid();
-                    var infos = devs.GetWMSInTask();
+                    //设备组无论单卷还是双卷都必须满足的条件
+                    if (obj.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待任务执行--凭证号不一致");
+                    if (obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new WarnException($"设备运行中");
 
-                    foreach (var item in devs)
-                    {
-                        var dev = item.Station;
-                        var next = dev.Entity.CODE == "1028" ? "1030" : "1031";
-                        var info = infos.FirstOrDefault(v => item.FinishCode.Contains(v.ContainerCode));
-                        if (db.Default.Set<WCS_TASK>().AsNoTracking().Any(v => v.BARCODE == info.ContainerCode && v.STATUS < TaskStatus.已完成 && v.TYPE == TaskType.入库))
-                            throw new WarnException($"生产条码{info.ContainerCode}存在未完成任务,请检查是否为标签卡重复使用");
+                    //成功创建的任务
+                    var finishTaskList = new List<FinishTaskList<int>>();
 
-                        var task = new WCS_TASK();
-                        task.BARCODE = info.ContainerCode;
-                        task.TYPE = TaskType.入库;
-                        task.STATUS = TaskStatus.执行中;
-                        task.ADDRFROM = dev.Entity.CODE;
-                        task.ADDRTO = info.EndPostion;
-                        task.STARTTIME = DateTime.Now;
-                        task.UPDATEUSER = "WCS";
-                        task.UPDATETIME = DateTime.Now;
-                        task.WMSTASK = int.Parse(info.WMSTaskNum);
-                        task.TaskGroupKey = info.TaskGroupKey;
-                        task.ADDRNEXT = next;
-                        task.HEIGHT = dev.Data2.GoodsSize;
+                    //创建对应的任务
+                    DB.Do(db =>
+                    {
+                        var devs = obj.GetBcrValid();
+                        devs.Valid();
+                        var infos = devs.GetWMSInTask();
 
-                        db.Default.Set<WCS_TASK>().Add(task);
-                        finishTaskList.Add(new FinishTaskList<int>()
+                        foreach (var item in devs)
                         {
-                            FinishCode = task.WMSTASK,
-                            Station = item.Station
-                        });
+                            var dev = item.Station;
+                            var next = dev.Entity.CODE == "1028" ? "1030" : "1031";
+                            var info = infos.FirstOrDefault(v => item.FinishCode.Contains(v.ContainerCode));
+                            if (db.Default.Set<WCS_TASK>().AsNoTracking().Any(v => v.BARCODE == info.ContainerCode && v.STATUS < TaskStatus.已完成 && v.TYPE == TaskType.入库))
+                                throw new WarnException($"生产条码{info.ContainerCode}存在未完成任务,请检查是否为标签卡重复使用");
 
-                        var msg = $"下达从{dev.Entity.CODE}移动至{next}的PLC指令。";
-                        msg += $"[{dev.Data.Tasknum}][{dev.Data.Goodsstart}][{dev.Data.Goodsend}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                        task.CreateStatusLog(db, msg, this.GetType());
-                    }
-                    //两个任务一起创建
-                    db.Default.SaveChanges();
-                });
+                            var task = new WCS_TASK();
+                            task.BARCODE = info.ContainerCode;
+                            task.TYPE = TaskType.入库;
+                            task.STATUS = TaskStatus.执行中;
+                            task.ADDRFROM = dev.Entity.CODE;
+                            task.ADDRTO = info.EndPostion;
+                            task.STARTTIME = DateTime.Now;
+                            task.UPDATEUSER = "WCS";
+                            task.UPDATETIME = DateTime.Now;
+                            task.WMSTASK = int.Parse(info.WMSTaskNum);
+                            task.TaskGroupKey = info.TaskGroupKey;
+                            task.ADDRNEXT = next;
+                            task.HEIGHT = dev.Data2.GoodsSize;
 
-                //检查对应的任务是否已创建成功
-                DB.Do(db =>
-                {
-                    foreach (var finishTask in finishTaskList)
+                            db.Default.Set<WCS_TASK>().Add(task);
+                            finishTaskList.Add(new FinishTaskList<int>()
+                            {
+                                FinishCode = task.WMSTASK,
+                                Station = item.Station
+                            });
+
+                            var msg = $"下达从{dev.Entity.CODE}移动至{next}的PLC指令。";
+                            msg += $"[{dev.Data.Tasknum}][{dev.Data.Goodsstart}][{dev.Data.Goodsend}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
+                            task.CreateStatusLog(db, msg, this.GetType());
+                        }
+                        //两个任务一起创建
+                        db.Default.SaveChanges();
+                    });
+
+                    //检查对应的任务是否已创建成功
+                    DB.Do(db =>
                     {
-                        var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.WMSTASK == finishTask.FinishCode);
-                        if (task == null) continue;
+                        foreach (var finishTask in finishTaskList)
+                        {
+                            var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.WMSTASK == finishTask.FinishCode);
+                            if (task == null) continue;
 
-                        finishTask.Station.Data.Tasknum = task.ID;
-                        finishTask.Station.Data.Goodsstart = task.ADDRFROM.ToShort();
-                        finishTask.Station.Data.Goodsend = task.ADDRNEXT.ToShort();
-                        finishTask.Station.Data.Goodsnum = (short)finishTaskList.Count;
-                        finishTask.Station.Data.CmdType = IstationCmdType.扫码入库;
-                        finishTask.Station.Data.VoucherNo++;
-                    }
-                    InfoLog.INFO_TIMING($"{obj.Entity.CODE}--扫码入库,耗时{(DateTime.Now - now).TotalMilliseconds}");
+                            finishTask.Station.Data.Tasknum = task.ID;
+                            finishTask.Station.Data.Goodsstart = task.ADDRFROM.ToShort();
+                            finishTask.Station.Data.Goodsend = task.ADDRNEXT.ToShort();
+                            finishTask.Station.Data.Goodsnum = (short)finishTaskList.Count;
+                            finishTask.Station.Data.CmdType = IstationCmdType.扫码入库;
+                            finishTask.Station.Data.VoucherNo++;
+                        }
+                    });
                 });
-            });
+            timer.Stop();
+            InfoLog.INFO_TIMING($"{obj.Entity.CODE}--扫码入库,耗时{timer.ElapsedMilliseconds}");
         }
     }
 
@@ -180,7 +183,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRNEXT = tunnelInfo.taskIN.CODE;
                         task.TaskGroupKey = res.WMSTaskGroupKey;
                         task.ADDRTO = task.DEVICE;
-                        var msg = $"下达从G1030移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{ task.TUNNEL }]-[{task.DEVICE}]";
+                        var msg = $"下达从G1030移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                         msg += $"[{dev.Data.Tasknum}][G1030][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
                         task.CreateStatusLog(db, msg, this.GetType());
                         finishTaskList.Add(new Tuple<int, StationDevice>(task.ID, item.Entity.Create<StationDevice>()));

+ 7 - 4
Projects/永冠OPP/WCS.Service/Works/Station/涂布入库.cs

@@ -2,6 +2,7 @@
 using Microsoft.EntityFrameworkCore;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using WCS.Core;
 using WCS.Entity;
@@ -153,7 +154,8 @@ namespace WCS.Service.Works.Station
     {
         protected override void Do(StationDeviceGroup obj)
         {
-            var now = DateTime.Now;
+            var timer = new Stopwatch();
+            timer.Start();
             obj.EX(obj =>
             {
                 //设备组无论单卷还是双卷都必须满足的条件
@@ -228,9 +230,10 @@ namespace WCS.Service.Works.Station
                         finishTask.Station.Data.CmdType = IstationCmdType.扫码入库;
                         finishTask.Station.Data.VoucherNo++;
                     }
-                    InfoLog.INFO_TIMING($"{obj.Entity.CODE}--扫码入库,耗时{(DateTime.Now - now).TotalMilliseconds}");
                 });
             });
+            timer.Stop();
+            InfoLog.INFO_TIMING($"{obj.Entity.CODE}--扫码入库,耗时{timer.ElapsedMilliseconds}");
         }
 
         protected override bool SelectDevice(WCS_DEVICE dev)
@@ -326,7 +329,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRNEXT = tunnelInfo.taskIN.CODE;
                         task.TaskGroupKey = res.WMSTaskGroupKey;
                         task.ADDRTO = task.DEVICE;
-                        var msg = $"下达从{obj.Entity.CODE}移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{ task.TUNNEL }]-[{task.DEVICE}]";
+                        var msg = $"下达从{obj.Entity.CODE}移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                         msg += $"[{dev.Data.Tasknum}][{obj.Entity.CODE}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
                         task.CreateStatusLog(db, msg, this.GetType());
                         finishTaskList.Add(new Tuple<int, StationDevice>(task.ID, item.Entity.Create<StationDevice>()));
@@ -434,7 +437,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRNEXT = tunnelInfo.taskIN.CODE;
                         task.TaskGroupKey = res.WMSTaskGroupKey;
                         task.ADDRTO = task.DEVICE;
-                        var msg = $"下达从{obj.Entity.CODE}移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{ task.TUNNEL }]-[{task.DEVICE}]";
+                        var msg = $"下达从{obj.Entity.CODE}移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                         msg += $"[{dev.Data.Tasknum}][{obj.Entity.CODE}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
                         task.CreateStatusLog(db, msg, this.GetType());
                         finishTaskList.Add(new Tuple<int, StationDevice>(task.ID, item.Entity.Create<StationDevice>()));