فهرست منبع

DEBUG:环穿小车调度

Administrator 3 سال پیش
والد
کامیت
3e240ce26c

+ 3 - 6
Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs

@@ -67,7 +67,7 @@ namespace WCS.Service.Extensions
         {
             get
             {
-                return AllRGVList.Where(v => v.LocationList.Any(p => p.Station == Entity.CODE)).ToList();
+                return AllRGVList.Where(v => v.LocationList.Any(p => p.Entity == Entity)).ToList();
             }
         }
 
@@ -415,11 +415,8 @@ namespace WCS.Service.Extensions
         /// <returns></returns>
         public RGVDevice After()
         {
-            var arr = RGVList.OrderByDescending(v => v.Position);
-            var rgv = arr.FirstOrDefault(v => v.Position < Position);
-            if (rgv == null)
-                rgv = arr.LastOrDefault(v => v.Position > Position);
-            return rgv;
+            //到当前RGV最近的一个RGV
+            return RGVList.OrderBy(v => v.Distance(this)).FirstOrDefault();
         }
 
         /// <summary>

+ 39 - 38
Projects/永冠OPP/WCS.Service/Works/RGV/RGVWorks.cs

@@ -109,49 +109,50 @@ namespace WCS.Service.Works.RGV
                 //RGV是否在任何一个取货站点
                 if (pickStation != null)
                 {
-                    // 检查取货点是否需要取货
-                    pickStation.WhetherToExecute();
-                    // 筛选出有任务号和起始及目标地址的设备
-                    var devs = pickStation.RGVGetTaskedDevice();
+                    //// 检查取货点是否需要取货
+                    //pickStation.WhetherToExecute();
+                    //// 筛选出有任务号和起始及目标地址的设备
+                    //var devs = pickStation.RGVGetTaskedDevice();
+                    var devs = 0;
                     //是否需要取货
-                    if (devs.Count > 0)
+                    if (devs > 0)
                     {
                         //开始下达取货任务
-                        DB.Do(db =>
-                        {
-                            var taskids = devs.Select(v => v.Data2.Tasknum);
-                            var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
-                            if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
-                                throw new WarnException("任务组ID不一致");
-                            if (!tasks.GroupBy(p => p.TaskGroupKey).Any())
-                                throw new WarnException("无任务组ID");
-                            var gw1 = pickStation.Items.ToArray()[0];
-                            var gw2 = pickStation.Items.ToArray()[1];
-                            if (gw1.Data2.Tasknum != 0 && gw2.Data2.Tasknum != 0)
-                            {
-                                if (gw1.Data2.Goodsend != gw2.Data2.Goodsend) throw new WarnException($"{obj.Entity.Code}目标地址不一致");
-                            }
-                            obj.Data.TaskID_1 = gw1.Data2.Tasknum;
-                            obj.Data.TaskID_2 = gw2.Data2.Tasknum;
-                            obj.Data.TaskType_1 = RGVTaskType.取货;
-                            if (gw1.Data2.Tasknum != 0)
-                            {
-                                obj.Data.DestPosition_1 = gw1.Data2.Goodsend;
-                            }
-                            else
-                            {
-                                obj.Data.DestPosition_1 = gw2.Data2.Goodsend;
-                            }
-                            obj.Data.Trigger_1++;
+                        //DB.Do(db =>
+                        //{
+                        //    var taskids = devs.Select(v => v.Data2.Tasknum);
+                        //    var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
+                        //    if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
+                        //        throw new WarnException("任务组ID不一致");
+                        //    if (!tasks.GroupBy(p => p.TaskGroupKey).Any())
+                        //        throw new WarnException("无任务组ID");
+                        //    var gw1 = pickStation.Items.ToArray()[0];
+                        //    var gw2 = pickStation.Items.ToArray()[1];
+                        //    if (gw1.Data2.Tasknum != 0 && gw2.Data2.Tasknum != 0)
+                        //    {
+                        //        if (gw1.Data2.Goodsend != gw2.Data2.Goodsend) throw new WarnException($"{obj.Entity.Code}目标地址不一致");
+                        //    }
+                        //    obj.Data.TaskID_1 = gw1.Data2.Tasknum;
+                        //    obj.Data.TaskID_2 = gw2.Data2.Tasknum;
+                        //    obj.Data.TaskType_1 = RGVTaskType.取货;
+                        //    if (gw1.Data2.Tasknum != 0)
+                        //    {
+                        //        obj.Data.DestPosition_1 = gw1.Data2.Goodsend;
+                        //    }
+                        //    else
+                        //    {
+                        //        obj.Data.DestPosition_1 = gw2.Data2.Goodsend;
+                        //    }
+                        //    obj.Data.Trigger_1++;
 
-                            foreach (var task in tasks)
-                            {
-                                var msg = $"下达从{obj.Data.StartPosition_1}移动至{ obj.Data.DestPosition_1}的RGV PLC指令。";
-                                msg += $"[{ task.ID}][{obj.Data.StartPosition_1}][{obj.Data.DestPosition_1}[{ obj.Data.Trigger_1}]";
+                        //    foreach (var task in tasks)
+                        //    {
+                        //        var msg = $"下达从{obj.Data.StartPosition_1}移动至{ obj.Data.DestPosition_1}的RGV PLC指令。";
+                        //        msg += $"[{ task.ID}][{obj.Data.StartPosition_1}][{obj.Data.DestPosition_1}[{ obj.Data.Trigger_1}]";
 
-                                task.CreateStatusLog(db, msg, this.GetType());
-                            }
-                        });
+                        //        task.CreateStatusLog(db, msg, this.GetType());
+                        //    }
+                        //});
                         return;
                     }
                     //找到自己的后一个小车