浏览代码

update:修正一下检测方法

林豪 左 3 年之前
父节点
当前提交
1c663f11f2
共有 1 个文件被更改,包括 9 次插入2 次删除
  1. 9 2
      Projects/永冠OPP/WCS.Service/Works/SRM/SRMWork.cs

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

@@ -165,6 +165,15 @@ namespace WCS.Service.Works.SRM
                         var dev1IsThereATask = dev1.Data2.Tasknum > 0 && dev1.Data2.Status.HasFlag(IstationStatus.光电状态) && !dev1.Data3.Status.HasFlag(StationStatus.运行状态位);
                         var dev2IsThereATask = dev2.Data2.Tasknum > 0 && dev2.Data2.Status.HasFlag(IstationStatus.光电状态) && !dev2.Data3.Status.HasFlag(StationStatus.运行状态位);
 
+                        var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.STATUS < TaskStatus.堆垛机执行 && v.ID == st.Data2.Tasknum);
+                        var taskCount = db.Default.Set<WCS_TASK>().Count(v => v.TaskGroupKey == task.TaskGroupKey);
+                        return taskCount switch
+                        {
+                            1 => dev1IsThereATask || dev2IsThereATask,
+                            2 => dev1IsThereATask && dev2IsThereATask,
+                            _ => throw new WarnException($"同组任务最多为2,当前任务组有{taskCount}"),
+                        };
+
                         //处理一工位
                         if (dev1IsThereATask)
                         {
@@ -172,7 +181,6 @@ namespace WCS.Service.Works.SRM
                             var task1 = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.STATUS < TaskStatus.堆垛机执行 && v.ID == dev1.Data2.Tasknum);
                             if (task1 == null)
                                 throw new WarnException($"设备有光电有任务且不在运行状态,但WCS找不到任务{dev1.Data2.Tasknum}");
-                            if (!task1.TaskValid(dev1IsThereATask, dev2IsThereATask, db)) throw new WarnException("任务数量异常");
                             var loc = WMS.GetLocalIn(task1.WMSTASK, tunnel, dev1.Entity.CODE, Entity.WareCellForkNum.货叉1);
                             var locno = string.Format("{0}-{1}-{2}", loc.Row, loc.Colomn, loc.Layer);
                             var oldTask = task1.STATUS;
@@ -199,7 +207,6 @@ namespace WCS.Service.Works.SRM
                             var tunnel = dev2.Entity.ROUTES.First().NEXT.CODE;
                             var task2 = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.STATUS < TaskStatus.堆垛机执行 && v.ID == dev2.Data2.Tasknum);
                             if (task2 == null) throw new WarnException($"设备有光电有任务且不在运行状态,但WCS找不到任务{dev2.Data2.Tasknum}");
-                            if (!task2.TaskValid(dev1IsThereATask, dev2IsThereATask, db)) throw new WarnException("任务数量异常");
                             var loc = WMS.GetLocalIn(task2.WMSTASK, tunnel, dev2.Entity.CODE, Entity.WareCellForkNum.货叉2);
                             var locno = string.Format("{0}-{1}-{2}", loc.Row, loc.Colomn, loc.Layer);
                             var oldTask = task2.STATUS;