using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.Equipment; using OpenSEMI.ClientBase; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ACC = Aitex.Core.Common; namespace CyberX8_MainPages.Unity { public class WaferStatusImp { public WaferStatusImp(IQueryDataService dataService) { DataService = dataService; } public List GetWaferStatus(string moduleID) { List result = new List(); string param = moduleID + ".ModuleWaferList"; ACC.WaferInfo[] wafers = QueryDataClient.Instance.Service.GetData(param) as ACC.WaferInfo[]; if (wafers != null) { for (int i = 0; i < wafers.Length; i++) { result.Add(WaferInfoConverter(wafers[i], moduleID, i)); } } return result; } private WaferInfo WaferInfoConverter(ACC.WaferInfo awafer, string modid, int slotid) { WaferInfo wafer = new WaferInfo(); wafer.ModuleID = modid; wafer.SlotID = slotid; wafer.SlotIndex = slotid + 1; wafer.WaferID = awafer.WaferID; wafer.SourceName = awafer.WaferOrigin; wafer.WaferStatus = WaferStatusConverter(awafer); if (!string.IsNullOrEmpty(awafer.SequenceName)) { wafer.SequenceName = awafer.SequenceName; } return wafer; } //0: trans? //1:goden //2:blue //3:cyan //4:green //5:error private int WaferStatusConverter(ACC.WaferInfo awafer) { if (awafer.Status == ACC.WaferStatus.Empty) return 0; if (awafer.Status == ACC.WaferStatus.Normal) { if (awafer.WaferType == ACC.WaferType.Assit) { return 6; } else { switch (awafer.ProcessState) { case ACC.EnumWaferProcessStatus.InProcess: return 3; case ACC.EnumWaferProcessStatus.Completed: return 4; case ACC.EnumWaferProcessStatus.Failed: return 5; case ACC.EnumWaferProcessStatus.Idle: return awafer.ProcessJob == null ? 1 : 2; case ACC.EnumWaferProcessStatus.Canceled: return 7; case ACC.EnumWaferProcessStatus.MisProcessed: return 8; case ACC.EnumWaferProcessStatus.MisSrdProcess: return 9; } } } if (awafer.Status == ACC.WaferStatus.Dummy) { return 6; } return 1; } private IQueryDataService DataService; } }