| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using Aitex.Core.Util;
- using MECF.Framework.Common.Equipment;
- using PunkHPX8_Core;
- using PunkHPX8_RT.Schedulers;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PunkHPX8_RT.Dispatch
- {
- public class WaferTaskDispatcher:Singleton<WaferTaskDispatcher>
- {
- /// <summary>
- /// 解析
- /// </summary>
- public void Analyse()
- {
- List<WaferTask> waferTasks = WaferTaskManager.Instance.LoadWaferTaskList().OrderBy(O=>O.CreateTime).ToList();
- foreach (var item in waferTasks)
- {
- SchedulerSequence currentSequence = item.GetCurrentSchedulerSequence();
- if (currentSequence == null)
- {
- item.Run();
- continue;
- }
- if (currentSequence.ModuleName == ModuleName.EfemRobot)
- {
- }
- item.Run();
- }
- }
- /// <summary>
- /// 处理Efemrobot
- /// </summary>
- /// <param name="currentSequence"></param>
- /// <param name="item"></param>
- /// <param name="waferTasks"></param>
- private void DealEfemRobot(SchedulerSequence currentSequence, WaferTask item, List<WaferTask> waferTasks)
- {
- if (currentSequence.State == RState.End)
- {
- item.Run();
- return;
- }
- if (currentSequence.State == RState.Running)
- {
- item.Run();
- return;
- }
- if (CheckOtherEfemRobotIsRunning(waferTasks, item, ModuleName.EfemRobot))
- {
- return;
- }
- if (currentSequence.State == RState.Init)
- {
- item.Run();
- }
- }
- /// <summary>
- /// 检验其他任务是否也是Transporter并且正在执行
- /// </summary>
- /// <param name="waferTasks"></param>
- /// <param name="waferTask"></param>
- /// <returns></returns>
- private bool CheckOtherEfemRobotIsRunning(List<WaferTask> waferTasks, WaferTask waferTask, ModuleName moduleName)
- {
- foreach (WaferTask item in waferTasks)
- {
- if (item.WaferId == waferTask.WaferId)
- {
- continue;
- }
- SchedulerSequence schedulerSequence = item.GetCurrentSchedulerSequence();
- if (schedulerSequence == null)
- {
- continue;
- }
- if (schedulerSequence.ModuleName == moduleName)
- {
- if (schedulerSequence.State == RState.Running)
- {
- return true;
- }
- }
- }
- return false;
- }
- }
- }
|