林豪 左 2 years ago
parent
commit
c0ced850c6

+ 25 - 30
Projects/永冠OPP/WCS.Service/Extensions/WCS_TaskExtensions.cs

@@ -1,8 +1,6 @@
-using DBHelper;
-using System;
+using System;
 using WCS.Entity;
 using WCS.Entity.Protocol;
-using WCS.Service.Log;
 
 namespace WCS.Service.Extensions
 {
@@ -10,40 +8,37 @@ namespace WCS.Service.Extensions
     {
         /// <summary>
         /// 任务发生状态变更时,为任务新增状态变更记录
+        /// 异步任务
         /// </summary>
         /// <param name="task">对应任务</param>
         /// <param name="db">db链接, 没有从新构造一个db的原因是为了保证状态记录的增加与任务状态的变更是同步的</param>
         /// <param name="msg">需要记录的消息</param>
-        public static void CreateStatusLog(this WCS_TASK task, DB db, string msg, Type cl)
+        public static void CreateStatusLogAsync(this WCS_TASK task, string msg, Type cl)
         {
-            try
+            System.Threading.Tasks.Task.Run(() =>
             {
-                WCS_StatusLog statusLog = new WCS_StatusLog()
+                try
                 {
-                    WCS_TASKID = task.ID,
-                    NewStatus = task.STATUS,
-                    UPDATETIME = DateTime.Now,
-                    upStatus = task.UPLOADED,
-                    Node = cl.FullName,
-                    UPDATEUSER = "WCS",
-                    msg = msg,
-                };
-                db.Default.Add(statusLog);
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.Message);
-            }
-        }
-
-        public static void infolog(this string code, string msg)
-        {
-            if (code == "G1190")
-            {
-                InfoLog.INFO_ERRORCHECK(msg);
-                //InfoLog.INFO_ERRORCHECK($"{res.WMSTaskGroupKey}第一次分配:WMS返回{JsonConvert.SerializeObject(tunnels)}。");
-                //InfoLog.INFO_ERRORCHECK($"{res.WMSTaskGroupKey}第一次分配:WCS选择{tunnelInfo.Tunnel.CODE}。");
-            }
+                    DBHelper.DB.Do(db =>
+                    {
+                        WCS_StatusLog statusLog = new WCS_StatusLog()
+                        {
+                            WCS_TASKID = task.ID,
+                            NewStatus = task.STATUS,
+                            UPDATETIME = DateTime.Now,
+                            upStatus = task.UPLOADED,
+                            Node = cl.FullName,
+                            UPDATEUSER = "WCS",
+                            msg = msg,
+                        };
+                        db.Default.Add(statusLog);
+                    });
+                }
+                catch
+                {
+                    //TODO:记日志
+                }
+            });
         }
     }
 }

+ 5 - 5
Projects/永冠OPP/WCS.Service/Works/SRM/SRMWork.cs

@@ -149,7 +149,7 @@ namespace WCS.Service.Works.SRM
                                 task.ADDRTO = $"{loc.Row}-{loc.Colomn}-{loc.Layer}";
                                 task.DEVICE = deviceCode;
                                 task.TUNNEL = tunnel;
-                                task.CreateStatusLog(db, $"状态由{oldTask}变更至{task.STATUS}", this.GetType());
+                                task.CreateStatusLogAsync( $"状态由{oldTask}变更至{task.STATUS}", this.GetType());
                                 finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                             }
                             db.Default.SaveChanges();
@@ -284,7 +284,7 @@ namespace WCS.Service.Works.SRM
                                 task.GetSrmStationAndaddNext(fork);
                                 var msg = "";
                                 msg = fork == SrmFork.货叉1 ? $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_1}-{srmDevice.Data.SCol_1}-{srmDevice.Data.SLayer_1}][{srmDevice.Data.ELine_1}][{srmDevice.Data.VoucherNo_1}]" : $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_2}-{srmDevice.Data.SCol_2}-{srmDevice.Data.SLayer_2}][{srmDevice.Data.ELine_2}][{srmDevice.Data.VoucherNo_2}]";
-                                task.CreateStatusLog(db, msg, this.GetType());
+                                task.CreateStatusLogAsync(msg, this.GetType());
                                 item.SRMSTATION = task.SRMSTATION;
                                 finishTaskList.Add(new FinishTaskList<SrmFork, Task>(fork, item));
                             }
@@ -365,7 +365,7 @@ namespace WCS.Service.Works.SRM
                             task.DEVICE = deviceCode;
                             db.Default.SaveChanges();
                             Uploader.Upload(db);
-                            task.CreateStatusLog(db, $"状态由[{oldTaskStatus}]变更为[{task.STATUS}]", this.GetType());
+                            task.CreateStatusLogAsync($"状态由[{oldTaskStatus}]变更为[{task.STATUS}]", this.GetType());
 
                             if (addFrom[2].ToShort().OddNumberOrEven())
                             {
@@ -450,7 +450,7 @@ namespace WCS.Service.Works.SRM
                             task.ADDRTO = $"{loc.Row}-{loc.Colomn}-{loc.Layer}";
                             task.DEVICE = deviceCode;
                             task.TUNNEL = tunnel;
-                            task.CreateStatusLog(db, $"状态由{oldTask}变更至{task.STATUS}", this.GetType());
+                            task.CreateStatusLogAsync($"状态由{oldTask}变更至{task.STATUS}", this.GetType());
                             finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                         }
                         db.Default.SaveChanges();
@@ -629,7 +629,7 @@ namespace WCS.Service.Works.SRM
                             task.GetSrmStationAndaddNext(fork);
                             var msg = "";
                             msg = fork == SrmFork.货叉1 ? $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_1}-{srmDevice.Data.SCol_1}-{srmDevice.Data.SLayer_1}][{srmDevice.Data.ELine_1}][{srmDevice.Data.VoucherNo_1}]" : $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_2}-{srmDevice.Data.SCol_2}-{srmDevice.Data.SLayer_2}][{srmDevice.Data.ELine_2}][{srmDevice.Data.VoucherNo_2}]";
-                            task.CreateStatusLog(db, msg, this.GetType());
+                            task.CreateStatusLogAsync(msg, this.GetType());
                             item.SRMSTATION = task.SRMSTATION;
                             finishTaskList.Add(new FinishTaskList<SrmFork, Task>(fork, item));
                         }

+ 13 - 24
Projects/永冠OPP/WCS.Service/Works/Station/BOPP入库.cs

@@ -70,7 +70,7 @@ namespace WCS.Service.Works.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());
+                        task.CreateStatusLogAsync(msg, this.GetType());
                     }
                     //两个任务一起创建
                     db.Default.SaveChanges();
@@ -156,15 +156,14 @@ namespace WCS.Service.Works.Station
                         }
                         else
                         {
-                             rgvDeliveryPoint = Device.Where(v => v.IsConv() && v.ROUTES.Any(p => p.NEXT != null && turntable.Contains(p.NEXT.CODE)))
-                                      .Select(v => v.Create<StationDevice>()) //取所有可以到达取货点设备的信息
-                                      .Where(v => !v.Data3.Status.HasFlag(StationStatus.运行状态位)
-                                               && !v.Data2.Status.HasFlag(IstationStatus.光电状态)
-                                               && v.Data2.Tasknum < 10000
-                                               && v.Data3.Status.HasFlag(StationStatus.自动))//筛选出空闲的路径点,此处因输送机都是一个动力,因此可以先找路径点再找设备组
-                                      .Distinct()
-                                      .FirstOrDefault();//去一次重
-
+                            rgvDeliveryPoint = Device.Where(v => v.IsConv() && v.ROUTES.Any(p => p.NEXT != null && turntable.Contains(p.NEXT.CODE)))
+                                     .Select(v => v.Create<StationDevice>()) //取所有可以到达取货点设备的信息
+                                     .Where(v => !v.Data3.Status.HasFlag(StationStatus.运行状态位)
+                                              && !v.Data2.Status.HasFlag(IstationStatus.光电状态)
+                                              && v.Data2.Tasknum < 10000
+                                              && v.Data3.Status.HasFlag(StationStatus.自动))//筛选出空闲的路径点,此处因输送机都是一个动力,因此可以先找路径点再找设备组
+                                     .Distinct()
+                                     .FirstOrDefault();//去一次重
                         }
                         if (rgvDeliveryPoint == null) continue;
                         var taskInStation = Device.Where(p => p.CODE.StartsWith("G") && p.DEVICEGROUP.Any(d => d.MEMBER == rgvDeliveryPoint.Entity)).MinBy(p => p.CODE);
@@ -174,7 +173,7 @@ namespace WCS.Service.Works.Station
                         var rgvTaskCount = ProtocolProxy.YGWMS150Redis.Get("BoppRgvTaskCount").ToInt();
                         if (rgvList.Count(v => (!v.Data2.SystemStatus.HasFlag(WCS.Entity.Protocol.RGV.RGVRunStatus.空闲) || !v.Data2.WorkMode.HasFlag(WCS.Entity.Protocol.RGV.RGVMode.自动))
                                             && v.Data2.TaskType_1 == WCS.Entity.Protocol.RGV.RGVTaskType.放货
-                                            && v.Data2.DestPosition_1 == taskInStation?.CODE.Replace("G", "").ToShort())>rgvTaskCount) continue;
+                                            && v.Data2.DestPosition_1 == taskInStation?.CODE.Replace("G", "").ToShort()) > rgvTaskCount) continue;
                         tunnelInfos.Add(new TunnelInfo
                         {
                             Tunnel = item,
@@ -201,7 +200,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRTO = task.DEVICE;
                         var msg = $"下达从G23移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                         msg += $"[{dev.Data.Tasknum}][G23][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                        task.CreateStatusLog(db, msg, this.GetType());
+                        task.CreateStatusLogAsync(msg, this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, item.Station));
                     }
                     db.Default.SaveChanges();
@@ -267,7 +266,6 @@ namespace WCS.Service.Works.Station
                     var setting = new JsonSerializerSettings();
                     setting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                     setting.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
-                    code.infolog($"{res.WMSTaskGroupKey}第二次分配:WMS返回{JsonConvert.SerializeObject(tunnelNo, setting)}。");
                     foreach (var item in tunnels)
                     {
                         //当前巷道的取货点
@@ -275,16 +273,13 @@ namespace WCS.Service.Works.Station
                                           .Where(v => v.ROUTES.Any(p => p.NEXT.CODE == item.CODE)) //下一个点为当前巷道的取货点
                                           .Select(v => v.CODE)
                                           .ToList();
-                        code.infolog($"allIn:{JsonConvert.SerializeObject(allIn, setting)};item:{item.CODE}");
                         //下一个目标地址包含取货点的设备,此时获得的数据是旋转台
                         var turntable = Device.Where(v => v.IsConv() && v.ROUTES.Any(p => p.NEXT != null && allIn.Contains(p.NEXT.CODE)))
                                               .Where(v => stationDeviceGroup.Items.Any(p => p.Entity == v))// 筛选出包含在当前设备组的设备
                                               .Distinct()
                                               .FirstOrDefault();//去一次重
                         if (turntable == null) continue;
-                        code.infolog($"turntable:{turntable.CODE};item:{item.CODE}");
                         var dev = Device.Where(p => p.CODE.StartsWith("G") && p.DEVICEGROUP.Any(d => allIn.Contains(d.MEMBER.CODE))).MinBy(p => p.CODE);
-                        code.infolog($"dev:{dev.CODE};item:{item.CODE}");
                         tunnelInfos.Add(new TunnelInfo
                         {
                             Tunnel = item,
@@ -292,21 +287,16 @@ namespace WCS.Service.Works.Station
                             SRM = Device.Where(p => p.IsSC()).FirstOrDefault(p => item.ROUTES.Any(d => d.NEXT.CODE == p.CODE)).Create<SRMDevice>()
                         });
                     }
-                    code.infolog($"tunnelInfo:{JsonConvert.SerializeObject(tunnelInfos.Select(v => new { taskIN = v.taskIN.CODE, Tunnel = v.Tunnel.CODE, SRM = v.SRM.Entity.CODE }), setting)};");
                     //筛选出优先级最高的可用巷道
                     var tunnelInfo = tunnelInfos.Where(v =>
                     {
                         try
                         {
-                            code.infolog($"SCAlarm:{v.SRM.Data3.SCAlarm};SRMMode:{v.SRM.Data2.SRMMode};SRMStatus:{v.SRM.Data2.SRMStatus};CODE:{v.SRM.Entity.CODE}");
-                            return (v.SRM.Data3.SCAlarm == 0 && v.SRM.Data2.SRMMode == SCMode.远程 && v.SRM.Data2.SRMStatus == SCRunStatus.空闲)||v.SRM.Entity.CODE=="SRM1" || v.SRM.Entity.CODE == "SRM2";
+                            return (v.SRM.Data3.SCAlarm == 0 && v.SRM.Data2.SRMMode == SCMode.远程 && v.SRM.Data2.SRMStatus == SCRunStatus.空闲) || v.SRM.Entity.CODE == "SRM1" || v.SRM.Entity.CODE == "SRM2";
                         }
                         catch { return false; }
                     }).MinBy(v => tunnelNo.IndexOf(v.Tunnel.CODE));
                     if (tunnelInfo == null) throw new WarnException("无可用巷道");
-                    code.infolog($"tunnelNo:{JsonConvert.SerializeObject(tunnelNo, setting)}。");
-                    code.infolog($"tunnelInfo:{JsonConvert.SerializeObject(new { taskIN = tunnelInfo.taskIN.CODE, Tunnel = tunnelInfo.Tunnel.CODE, SRM = tunnelInfo.SRM.Entity.CODE }, setting)};");
-                    code.infolog($"{res.WMSTaskGroupKey}第二次分配:WCS选择{tunnelInfo.Tunnel.CODE}。");
 
                     //开始变更任务信息
                     foreach (var item in devise)
@@ -322,7 +312,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRTO = task.DEVICE;
                         var msg = $"下达从{stationDeviceGroup.Entity.CODE}移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                         msg += $"[{dev.Data.Tasknum}][{stationDeviceGroup.Entity.CODE}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                        task.CreateStatusLog(db, msg, GetType());
+                        task.CreateStatusLogAsync(msg, GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, item.Station));
                     }
                     db.Default.SaveChanges();
@@ -342,7 +332,6 @@ namespace WCS.Service.Works.Station
                         finishTask.Station.Data.Goodsnum = finishTaskList.Count.ToShort();
                         finishTask.Station.Data.CmdType = IstationCmdType.分配目标地址;
                         finishTask.Station.Data.VoucherNo++;
-                        code.infolog($"{task.TaskGroupKey}第二次分配:WCS目标地址{finishTask.Station.Data.Goodsend}。");
                     }
                 });
             });

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

@@ -35,13 +35,13 @@ namespace WCS.Service.Works.Station
 
                     //成功创建的任务
                     var finishTaskList = new List<FinishTaskList<int>>();
+                    var devs = obj.GetBcrValid();
+                    devs.Valid();
+                    var infos = devs.GetWMSInTask();
 
                     //创建对应的任务
                     DB.Do(db =>
                     {
-                        var devs = obj.GetBcrValid();
-                        devs.Valid();
-                        var infos = devs.GetWMSInTask();
                         foreach (var item in devs)
                         {
                             var dev = item.Station;
@@ -70,7 +70,7 @@ namespace WCS.Service.Works.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());
+                            task.CreateStatusLogAsync(msg, this.GetType());
                         }
                         //两个任务一起创建
                         db.Default.SaveChanges();
@@ -187,7 +187,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRTO = 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());
+                        task.CreateStatusLogAsync(msg, this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, item.Entity.Create<StationDevice>()));
                     }
 
@@ -288,7 +288,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRTO = 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());
+                        task.CreateStatusLogAsync(msg, this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                     }
                     db.Default.SaveChanges();
@@ -357,7 +357,7 @@ namespace WCS.Service.Works.Station
 
                         var msg = $"下达从{dev.Station.Data.Goodsstart}移动至{dev.Station.Data.Goodsend}的PLC指令";
                         msg += $"[{dev.Station.Data.Tasknum}][{dev.Station.Data.Goodsstart}][{dev.Station.Data.Goodsend}][{dev.Station.Data.VoucherNo}[{dev.Station.Data2.VoucherNo}]";
-                        task.CreateStatusLog(db, msg, this.GetType());
+                        task.CreateStatusLogAsync(msg, this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                     }
                     db.Default.SaveChanges();
@@ -386,4 +386,4 @@ namespace WCS.Service.Works.Station
 
         private List<string> devCodes = new List<string>() { "G1035", "G1044", "G1053", "G1062" };
     }
-}
+}

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

@@ -311,7 +311,7 @@ namespace WCS.Service.Works.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());
+                        task.CreateStatusLogAsync(msg, this.GetType());
                     }
                     //两个任务一起创建
                     db.Default.SaveChanges();
@@ -443,7 +443,7 @@ namespace WCS.Service.Works.Station
                             task.ADDRTO = task.DEVICE;
                             var msg = $"下达从{stationDeviceGroup.Entity.CODE}移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                             msg += $"[{dev.Data.Tasknum}][{stationDeviceGroup.Entity.CODE}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                            task.CreateStatusLog(db, msg, this.GetType());
+                            task.CreateStatusLogAsync(msg, this.GetType());
                             finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                         }
                         db.Default.SaveChanges();
@@ -567,7 +567,7 @@ namespace WCS.Service.Works.Station
                             task.ADDRTO = task.DEVICE;
                             var msg = $"下达从{stationDeviceGroup.Entity.CODE}移动至{task.ADDRNEXT}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                             msg += $"[{dev.Data.Tasknum}][{stationDeviceGroup.Entity.CODE}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                            task.CreateStatusLog(db, msg, this.GetType());
+                            task.CreateStatusLogAsync(msg, this.GetType());
                             finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                         }
                         db.Default.SaveChanges();

+ 3 - 3
Projects/永冠OPP/WCS.Service/Works/Station/涂布出库.cs

@@ -56,7 +56,7 @@ namespace WCS.Service.Works.Station
                         if (tasks.Any(v => v.STATUS != TaskStatus.堆垛机完成 && v.STATUS != TaskStatus.执行中)) throw new WarnException("任务异常,同组任务状态不为堆垛机完成或执行中");
 
                         task.STATUS = TaskStatus.执行中;
-                        task.CreateStatusLog(db, $"状态由[{TaskStatus.堆垛机完成}]变更为[{task.STATUS}]-{stationDeviceGroup.Entity.CODE}", this.GetType());
+                        task.CreateStatusLogAsync($"状态由[{TaskStatus.堆垛机完成}]变更为[{task.STATUS}]-{stationDeviceGroup.Entity.CODE}", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                     }
                     db.Default.SaveChanges();
@@ -149,7 +149,7 @@ namespace WCS.Service.Works.Station
                             {
                                 task.ADDRNEXT = "G1";
                             }
-                            task.CreateStatusLog(db, $"分配目标地址{task.ADDRNEXT}", this.GetType());
+                            task.CreateStatusLogAsync($"分配目标地址{task.ADDRNEXT}", this.GetType());
                             finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                         }
                         db.Default.SaveChanges();
@@ -272,7 +272,7 @@ namespace WCS.Service.Works.Station
                         }
 
                         task.ADDRNEXT = addNext;
-                        task.CreateStatusLog(db, $"状态由[{WCS.Entity.TaskStatus.堆垛机完成}]变更为[{task.STATUS}]-{stationDeviceGroup.Entity.CODE}", this.GetType());
+                        task.CreateStatusLogAsync($"状态由[{WCS.Entity.TaskStatus.堆垛机完成}]变更为[{task.STATUS}]-{stationDeviceGroup.Entity.CODE}", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                         stationList.Add(new FinishTaskList<WCS_TASK>(task, dev.Station));
                     }