Sic02-new/SicUI/Models/LocalUIViewModelBase.cs

419 lines
11 KiB
C#
Raw Normal View History

2023-07-25 14:28:00 +08:00
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using Aitex.Core.RT.Log;
using Caliburn.Micro;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.UI.Client.ClientBase;
using OpenSEMI.Ctrlib.Controls;
namespace SicUI.Models
{
public class SicModuleUIViewModelBase : ModuleUiViewModelBase
{
public ModuleInfo FOUPA { get; set; }
public ModuleInfo FOUPB { get; set; }
public ModuleInfo FOUPC { get; set; }
public ModuleInfo FOUPD { get; set; }
public ModuleInfo EFEM { get; set; }
public ModuleInfo TMRobot { get; set; }
public ModuleInfo Buffer { get; set; }
public ModuleInfo PreHeat { get; set; }
public ModuleInfo PM1 { get; set; }
public ModuleInfo PM2 { get; set; }
#region Wafer info for machine
public WaferInfo PreHeatWafer
{
get
{
if (ModuleManager.ModuleInfos["PreHeat"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["PreHeat"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo BufferWafer
{
get
{
if (ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo PM1Wafer
{
get
{
if (ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo PM2Wafer
{
get
{
if (ModuleManager.ModuleInfos["PM2"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["PM2"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo Wafer1
{
get
{
if (ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo EfemRobotWafer1
{
get
{
if (ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo EfemRobotWafer2
{
get
{
if (ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers.Count > 1)
return ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1];
return null;
}
}
#endregion
protected void InitFOUP()
{
FOUPA = ModuleManager.ModuleInfos["LP1"];
FOUPB = ModuleManager.ModuleInfos["LP2"];
FOUPC = ModuleManager.ModuleInfos["LP3"];
}
protected void InitBuffer()
{
Buffer = ModuleManager.ModuleInfos["Buffer"];
}
protected void InitPM()
{
PreHeat = ModuleManager.ModuleInfos["PreHeat"];
TMRobot = ModuleManager.ModuleInfos["TMRobot"];
PM1 = ModuleManager.ModuleInfos["PM1"];
PM2 = ModuleManager.ModuleInfos["PM2"];
}
}
public class SicUIViewModelBase : UiViewModelBase
{
public string SystemName { get; set; }
public ModuleInfo FOUPA { get; set; }
public ModuleInfo FOUPB { get; set; }
public ModuleInfo FOUPC { get; set; }
public ModuleInfo FOUPD { get; set; }
public ModuleInfo TMRobot { get; set; }
public ModuleInfo EFEM { get; set; }
public ModuleInfo Buffer { get; set; }
public ModuleInfo PreHeat { get; set; }
public ModuleInfo LoadLock { get; set; }
public ModuleInfo PM1 { get; set; }
public ModuleInfo PM2 { get; set; }
#region Wafer info for machine
public WaferInfo LoadLockWafer
{
get
{
if (ModuleManager.ModuleInfos["LoadLock"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["LoadLock"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo LLAWafer1
{
get
{
return null;
}
}
public WaferInfo LLAWafer2
{
get
{
return null;
}
}
public WaferInfo LLBWafer1
{
get
{
return null;
}
}
public WaferInfo LLBWafer2
{
get
{
return null;
}
}
public WaferInfo BufferWafer
{
get
{
if (ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo PreHeatWafer
{
get
{
if (ModuleManager.ModuleInfos["PreHeat"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["PreHeat"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo PM1Wafer
{
get
{
if (ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo PM2Wafer
{
get
{
if (ModuleManager.ModuleInfos["PM2"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["PM2"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo Wafer1
{
get
{
if (ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo PM3Wafer
{
get
{
return null;
}
}
public WaferInfo PM4Wafer
{
get
{
return null;
}
}
public WaferInfo PM5Wafer
{
get
{
return null;
}
}
public WaferInfo PM6Wafer
{
get
{
return null;
}
}
public WaferInfo AlignerWafer
{
get
{
return null;
}
}
public WaferInfo EfemRobotWafer1
{
get
{
if (ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo EfemRobotWafer2
{
get
{
if (ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers.Count > 1)
return ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1];
return null;
}
}
public WaferInfo TMRobotWafer1
{
get
{
if (ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers.Count > 0)
return ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0];
return null;
}
}
public WaferInfo TMRobotWafer2
{
get
{
return null;
}
}
#endregion
protected void InitTM()
{
TMRobot = ModuleManager.ModuleInfos["TMRobot"];
}
protected void InitLL()
{
LoadLock = ModuleManager.ModuleInfos["LoadLock"];
}
protected void InitEFEM()
{
EFEM = ModuleManager.ModuleInfos["EfemRobot"];
}
protected void InitFOUP()
{
FOUPA = ModuleManager.ModuleInfos["LP1"];
FOUPB = ModuleManager.ModuleInfos["LP2"];
FOUPC = ModuleManager.ModuleInfos["LP3"];
FOUPD = ModuleManager.ModuleInfos["LP4"];
}
protected void InitBuffer()
{
Buffer = ModuleManager.ModuleInfos["Buffer"];
}
protected void InitPM()
{
PreHeat = ModuleManager.ModuleInfos["PreHeat"];
PM1 = ModuleManager.ModuleInfos["PM1"];
PM2 = ModuleManager.ModuleInfos["PM2"];
}
public override void OnWaferTransfer(DragDropEventArgs args)
{
try
{
TransferWafer(args.TranferFrom, args.TranferTo);
}
catch (Exception ex)
{
LOG.Write(ex);
}
}
public void TransferWafer(Slot p_from, Slot p_to)
{
try
{
if (p_from == null || p_to == null || !p_from.IsValidSlot() || !p_to.IsValidSlot())
return;
//DialogButton btns = DialogButton.Transfer | DialogButton.Cancel;
string info = " from " + p_from.ModuleID + " to " + p_to.ModuleID ;
string message = "Are you sure to transfer the wafer: \n" + info;
WindowManager wm = new WindowManager();
WaferTransferDialogViewModel _transferVM = new WaferTransferDialogViewModel(message, false, false, false);
_transferVM.AlignerVisibility = Visibility.Hidden;
_transferVM.CoolingVisibility = Visibility.Hidden;
_transferVM.BladeVisibility = Visibility.Hidden;
bool? bret = wm.ShowDialogWithNoStyle(_transferVM);
if ((bool)bret)
{
//get and use transfer conditions
WaferTransferCondition conditions = _transferVM.DialogResult;
InvokeClient.Instance.Service.DoOperation("System.MoveWafer",
p_from.ModuleID, p_from.SlotID, p_to.ModuleID, p_to.SlotID,
conditions.IsPassAligner, conditions.AlignerAngle, conditions.IsPassCooling, conditions.CoolingTime, (int)conditions.Blade);
}
p_from.ClearDragDropStatus();
p_to.ClearDragDropStatus();
}
catch (Exception ex)
{
LOG.Write(ex);
}
}
}
}