Bläddra i källkod

update:优化涂布环穿

林豪 左 3 år sedan
förälder
incheckning
155682abe8

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

@@ -106,47 +106,49 @@ namespace WCS.Service.Works.RGV
                 }
 
                 var pickStation = obj.CurrentStation();
-                //RGV是否在任何一个取货站点
+                //RGV是否在任何一个站台
                 if (pickStation != null)
                 {
-                    // 检查取货点是否需要取货
-                    //pickStation.WhetherToExecute();
-                    // 筛选出有任务号和起始及目标地址的设备
-                    var devs = pickStation.RGVGetTaskedDevice();
-                    //是否需要取货
-                    if (devs != null && devs.Count() > 0)
+                    //是否是取货站台
+                    if (pickStation.Entity.Is(DF.涂布RGV取货设备组))
                     {
-                        //开始下达取货任务
-                        DB.Do(db =>
+                        // 筛选出有任务号和起始及目标地址的设备
+                        var devs = pickStation.RGVGetTaskedDevice();
+                        //是否需要取货
+                        if (devs != null && devs.Count() > 0)
                         {
-                            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)
+                            //开始下达取货任务
+                            DB.Do(db =>
                             {
-                                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.取货;
-                            obj.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort();
+                                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.取货;
+                                obj.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort();
 
-                            obj.Data.Trigger_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}]";
+                                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());
-                            }
-                        });
-                        return;
+                                    task.CreateStatusLog(db, msg, this.GetType());
+                                }
+                            });
+                            return;
+                        }
                     }
 
                     //找到自己的后一个小车
@@ -170,14 +172,13 @@ namespace WCS.Service.Works.RGV
                     }
                     return;
                 }
-                
 
                 //此时RGV即没有等待执行的放货任务,也不在任何一个取货点,因此需要调往最近的一个取货点
                 //找到距离这个RGV最近的一个取货点
                 //必须所有RGV都是空闲状态时才可以进行初始化
-                //if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return;
-                //pickStation = obj.BeforeStation();
-                //obj.Move(pickStation);
+                if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return;
+                pickStation = obj.BeforeStation();
+                obj.Move(pickStation);
             });
         }
 

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

@@ -18,7 +18,7 @@ namespace WCS.Service.Works.Station
                 //找到当前站台为当前设备且任务为堆垛机完成的任务
                 DB.Do(db =>
                 {
-                    var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.TYPE == TaskType.出库 && v.SRMSTATION == obj.Entity.CODE && v.STATUS == TaskStatus.堆垛机完成)??throw new WarnException("无任务");
+                    var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.TYPE == TaskType.出库 && v.SRMSTATION == obj.Entity.CODE && v.STATUS == TaskStatus.堆垛机完成) ?? throw new WarnException("无任务");
                     var tasks = db.Default.Set<WCS_TASK>().Where(v => v.TaskGroupKey == task.TaskGroupKey);
                     if (tasks.Any(v => v.STATUS != TaskStatus.堆垛机完成 && v.STATUS != TaskStatus.执行中))
                         throw new WarnException("任务异常,同组任务状态不为堆垛机完成或执行中");
@@ -64,7 +64,7 @@ namespace WCS.Service.Works.Station
                         if (dev.Data2.Tasknum < 10000) continue;
 
                         var task = db.Default.Set<WCS_TASK>().Where(v => v.ID == dev.Data2.Tasknum).FirstOrDefault();
-                        if (task.STATUS > TaskStatus.新建)
+                        if (task.STATUS == TaskStatus.新建)
                             throw new WarnException($"{task.ID}任务状态错误");
                         task.STATUS = TaskStatus.已完成;
                         task.ENDTIME = System.DateTime.Now;