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;
}
}
}