林豪 左 3 yıl önce
ebeveyn
işleme
ca99131fea
1 değiştirilmiş dosya ile 26 ekleme ve 21 silme
  1. 26 21
      Projects/永冠OPP/WCS.Service/Works/SRM/SRMWork.cs

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

@@ -53,12 +53,24 @@ namespace WCS.Service.Works.SRM
                     throw new WarnException($"等待执行{srmDevice.Data.TaskID_1}-{srmDevice.Data.TaskID_2}");
                 }
 
+                //处理堆垛机已完成的任务
+                if (srmDevice.Data2.FinishedTask_1 != 0 || srmDevice.Data2.FinishedTask_2 != 0)
+                {
+                    InfoLog.INFO_SRMINFO($"开始完成任务:[{srmDevice.Entity.CODE}]-{srmDevice.Data2.FinishedTask_1}-{srmDevice.Data2.FinishedTask_2}");
+                    srmDevice.FinishedTaskHandle();
+                    InfoLog.INFO_SRMINFO($"完成任务处理结束:[{srmDevice.Entity.CODE}]-{srmDevice.Data2.FinishedTask_1}-{srmDevice.Data2.FinishedTask_2}");
+                    return;
+                }
+
+                if (srmDevice.Data2.SRMMode != SCMode.远程) return;
+                if (srmDevice.Data2.SRMStatus != SCRunStatus.空闲) return;
+
                 //检查标记好的出库任务,并将出库任务下达至堆垛机
                 DB.Do(db =>
                 {
                     //找到两个任务
                     var taksLsit = db.Default.Set<WCS_TASK>().Where(v => v.ID == srmDevice.Data.TaskID_1 || v.ID == srmDevice.Data.TaskID_2 && v.STATUS == TaskStatus.堆垛机执行).ToList()
-                                                                        .Select(v => v.Create<Task>()).OrderBy(v => v.Col).ToArray();
+                        .Select(v => v.Create<Task>()).OrderBy(v => v.Col).ToArray();
                     if (!taksLsit.Any()) return;
                     for (var i = 0; i < taksLsit.Length; i++)
                     {
@@ -76,24 +88,13 @@ namespace WCS.Service.Works.SRM
                             case SrmFork.货叉2:
                                 obj.WriteTask2(item, (short)taksLsit.Length);
                                 break;
+
                             default:
                                 throw new ArgumentOutOfRangeException();
                         }
                     }
                 });
 
-                //处理堆垛机已完成的任务
-                if (srmDevice.Data2.FinishedTask_1 != 0 || srmDevice.Data2.FinishedTask_2 != 0)
-                {
-                    InfoLog.INFO_SRMINFO($"开始完成任务:[{srmDevice.Entity.CODE}]-{srmDevice.Data2.FinishedTask_1}-{srmDevice.Data2.FinishedTask_2}");
-                    srmDevice.FinishedTaskHandle();
-                    InfoLog.INFO_SRMINFO($"完成任务处理结束:[{srmDevice.Entity.CODE}]-{srmDevice.Data2.FinishedTask_1}-{srmDevice.Data2.FinishedTask_2}");
-                    return;
-                }
-
-                if (srmDevice.Data2.SRMMode != SCMode.远程) return;
-                if (srmDevice.Data2.SRMStatus != SCRunStatus.空闲) return;
-
                 var isTransfer = new List<WCS_TASK>(); //是否有移库任务
                 WCS_TASK enterPriority = new(), outPriority = new(); //出入库优先级任务
                 //再检查是否有等待执行的货物
@@ -424,15 +425,19 @@ namespace WCS.Service.Works.SRM
                         //此处只做标记,表示当前事务已经提交
                         foreach (var finish in finishTaskList)
                         {
-                            if (finish.FinishCode == SrmFork.货叉1) // 列数较小的放一工位
-                            {
-                                srmDevice.Data.TaskID_1 = finish.Station.ID;
-                                //obj.WriteTask1(finish.Station, (short)tasks.Length);
-                            }
-                            else if (finish.FinishCode == SrmFork.货叉2) //列数较大的放二工位
+                            switch (finish.FinishCode)
                             {
-                                srmDevice.Data.TaskID_2 = finish.Station.ID;
-                                //obj.WriteTask2(finish.Station, (short)tasks.Length);
+                                // 列数较小的放一工位
+                                case SrmFork.货叉1:
+                                    srmDevice.Data.TaskID_1 = finish.Station.ID;
+                                    break;
+                                //列数较大的放二工位
+                                case SrmFork.货叉2:
+                                    srmDevice.Data.TaskID_2 = finish.Station.ID;
+                                    break;
+
+                                default:
+                                    throw new ArgumentOutOfRangeException();
                             }
                         }
                     });