|
@@ -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();
|
|
|
}
|
|
|
}
|
|
|
});
|