using Aitex.Core.Common; using Aitex.Core.RT.Log; using Aitex.Core.RT.SCCore; using MECF.Framework.Common.DBCore; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.SubstrateTrackings; using SciChart.Core.Utility.Mouse; using System; using System.Collections.Generic; using System.ServiceModel; using System.Text; using System.Threading.Tasks; namespace MECF.Framework.Common.WaferHolder { [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] public class WaferHolderDataService : IWaferHolderDataService { /// /// 获取所有集合 /// /// public List GetAllWaferHolderDatas() { return WaferHolderDataRecorder.GetAllWaferHolderDatas(); } /// /// 根据Location获取WaferHolder信息 /// /// public WaferHolderInfo GetWaferHolderDataByLocation(string location) { return WaferHolderDataRecorder.GetWaferHolderDataByLocation(location); } /// /// 启用禁用 /// /// /// /// public int UpdateWaferHolderEnable(string waferHolderId, bool enable) { WaferHolderInfo waferHolderInfo = WaferHolderManager.Instance.GetWaferHolderInfoById(waferHolderId); if (waferHolderInfo != null) { waferHolderInfo.Enabled = enable; } return WaferHolderDataRecorder.UpdateWaferHolderEnable(waferHolderId, enable); } /// /// 新增 /// /// /// /// public int AddWaferHolderData(int bufferId, WaferHolderInfo waferHolderInfo) { int result= WaferHolderDataRecorder.AddWaferHolderData(bufferId, waferHolderInfo); if(result>0) { CreateWaferHolderWafer(waferHolderInfo,waferHolderInfo.CurrentLocation); WaferHolderManager.Instance.SubscribeLocation(waferHolderInfo.CurrentLocation, waferHolderInfo); WaferHolderManager.Instance.CreateWaferHolder(waferHolderInfo); LOG.WriteLog(eEvent.INFO_WINRESOURCE, "System", $"Create Wafer Shuttle {waferHolderInfo.Id}"); } return result; } /// /// 更新 /// /// /// /// public int UpdateWaferHolderData(string waferHolderId, WaferHolderInfo info,bool sync) { WaferHolderInfo waferHolderInfo = WaferHolderManager.Instance.GetWaferHolderInfoById(waferHolderId); if (!string.IsNullOrEmpty(waferHolderId) && waferHolderId != info.Id) { WaferHolderManager.Instance.SwitchWaferHolderId(waferHolderInfo, waferHolderInfo.CurrentLocation, info.Id); } if(waferHolderInfo!=null) { if(string.IsNullOrEmpty(info.CurrentLocation)) { WaferHolderManager.Instance.Remove(waferHolderInfo.CurrentLocation); if (!string.IsNullOrEmpty(waferHolderInfo.WaferAId)) { WaferManager.Instance.DeleteWaferById(waferHolderInfo.WaferAId); } if (!string.IsNullOrEmpty(waferHolderInfo.WaferBId)) { WaferManager.Instance.DeleteWaferById(waferHolderInfo.WaferBId); } waferHolderInfo.CurrentLocation = ""; waferHolderInfo.CloneBaseInfo(info); WaferHolderHistoryRecord.InsertWaferHolderRemoveHistory(waferHolderInfo.Id); } else if(string.IsNullOrEmpty(waferHolderInfo.CurrentLocation)&&!string.IsNullOrEmpty(info.CurrentLocation)) { CreateWaferHolderWafer(waferHolderInfo,info.CurrentLocation); waferHolderInfo.CloneBaseInfo(info); WaferHolderManager.Instance.SubscribeLocation(info.CurrentLocation, waferHolderInfo); } else { waferHolderInfo.CloneBaseInfo(info); } } if (sync) { int result= WaferHolderDataRecorder.SyncUpdateWaferHolderData(waferHolderId, waferHolderInfo); if (result>0) { LOG.WriteLog(eEvent.INFO_WINRESOURCE, "System", $"Update Wafer Shuttle {waferHolderInfo}"); MaterialTrackerManager.Instance.UpdateModuleMaterial(waferHolderInfo.CurrentLocation); } return result; } else { WaferHolderDataRecorder.UpdateWaferHolderData(waferHolderId, waferHolderInfo); MaterialTrackerManager.Instance.UpdateModuleMaterial(waferHolderInfo.CurrentLocation); return 1; } } /// /// 创建WaferHolder中Wafer /// /// private void CreateWaferHolderWafer(WaferHolderInfo waferHolderInfo,string currentLocation) { ModuleName moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), currentLocation); if (!string.IsNullOrEmpty(waferHolderInfo.WaferAId)) { WaferManager.Instance.CreateWafer(moduleName, 0, WaferStatus.Normal, (WaferSize)waferHolderInfo.WaferSize, WaferType.Assit); WaferInfo waferInfo = WaferManager.Instance.GetWafer(moduleName, 0); waferInfo.WaferOrigin = waferHolderInfo.WaferAId; waferInfo.WaferID = waferHolderInfo.WaferAId; waferInfo.WaferType = (WaferType)waferHolderInfo.WaferAType; waferInfo.OriginStation = (int)moduleName; waferInfo.OrginalWaferHolder = waferHolderInfo.Id; } if (!string.IsNullOrEmpty(waferHolderInfo.WaferBId)) { WaferManager.Instance.CreateWafer(moduleName, 1, WaferStatus.Normal, (WaferSize)waferHolderInfo.WaferSize, WaferType.Assit); WaferInfo waferInfo = WaferManager.Instance.GetWafer(moduleName, 1); waferInfo.WaferOrigin = waferHolderInfo.WaferBId; waferInfo.WaferID = waferHolderInfo.WaferBId; waferInfo.WaferType = (WaferType)waferHolderInfo.WaferBType; waferInfo.OriginStation = (int)moduleName; waferInfo.OrginalWaferHolder=waferHolderInfo.Id; } } /// /// 删除 /// /// /// public int DeleteWaferHolderData(string waferHolderId) { WaferHolderInfo waferHolderInfo = WaferHolderManager.Instance.GetWaferHolderInfoById(waferHolderId); int result= WaferHolderDataRecorder.DeleteWaferHolderData(waferHolderId); if(result>0) { if (!string.IsNullOrEmpty(waferHolderInfo.CurrentLocation)) { WaferHolderManager.Instance.Remove(waferHolderInfo.CurrentLocation); } if(!string.IsNullOrEmpty(waferHolderId)) { WaferHolderManager.Instance.RemoveByWaferHolderId(waferHolderId); } if (waferHolderInfo != null) { if (!string.IsNullOrEmpty(waferHolderInfo.WaferAId)) { WaferManager.Instance.DeleteWaferById(waferHolderInfo.WaferAId); } if (!string.IsNullOrEmpty(waferHolderInfo.WaferBId)) { WaferManager.Instance.DeleteWaferById(waferHolderInfo.WaferBId); } } } return result; } } }