using Aitex.Core.RT.SCCore; using Caliburn.Micro; using Caliburn.Micro.Core; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.RecipeCenter; using MECF.Framework.UI.Client.CenterViews.Editors.Recipe; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using FurnaceUI.Models; using FurnaceUI.Views.Parameter; using FurnaceUI.Views.Recipes; namespace FurnaceUI.Views.Editors { public class RecipeLayoutSetTotalWaferNumberViewModel : FurnaceUIViewModelBase { Dictionary wapexPlain = new Dictionary(); public TotalWaferNumberMode DialogResultTotalWaferNumberMode { get; set; } private string _returnValue = ""; public string ReturnValue { get => _returnValue; set { _returnValue = value; SplitCharacter(value); NotifyOfPropertyChange(nameof(ReturnValue)); } } private void SplitCharacter(string value) { if (string.IsNullOrEmpty(value) || !value.Contains("|")) return; string[] listStr = value.Split('|'); if (listStr.Length != 4) return; NeedNum =int.Parse(listStr[0]); AdditionalNum = int.Parse(listStr[1]); ProductCarrierNum = int.Parse(listStr[2]); LowerSD = int.Parse(listStr[3]); } public bool IsSave { get; set; } public RecipeLayoutSetTotalWaferNumberViewModel() { } private int _needNum = 0; public int NeedNum { get => _needNum; set { _needNum = value; NotifyOfPropertyChange(nameof(NeedNum)); } } private int _additionalNum = 0; public int AdditionalNum { get => _additionalNum; set { _additionalNum = value; NotifyOfPropertyChange(nameof(AdditionalNum)); } } private int _productCarrierNum = 0; public int ProductCarrierNum { get => _productCarrierNum; set { _productCarrierNum = value; NotifyOfPropertyChange(nameof(ProductCarrierNum)); } } private int _lowerSD = 0; public int LowerSD { get => _lowerSD; set { _lowerSD = value; NotifyOfPropertyChange(nameof(LowerSD)); } } private TotalWaferNumberMode _totalWaferNumber = TotalWaferNumberMode.Total; public TotalWaferNumberMode TotalWaferNumber { get => _totalWaferNumber; set { _totalWaferNumber = value; NotifyOfPropertyChange(nameof(TotalWaferNumber)); } } public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式 public string RecipeType { get; set; } protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); LoadData(); LoadSetDefaultOption(view); } private string _titleText; public string TitleText { get => _titleText; set { _titleText = value; NotifyOfPropertyChange(nameof(TitleText)); } } private void LoadData() { wapexPlain.Clear(); wapexPlain.Add("Total", "Set the number of Product wafers .(include Fill Dummy wafers)"); wapexPlain.Add("Carrier", "Set the number of Product carriers. The number oftransferring Product wafers to the boat is the carriernumber times the carrier slot number ."); wapexPlain.Add("Carrierx", "The number of transferring Product wafers to the boat isthe entered-batch carrier number times the carrier slot number."); wapexPlain.Add("Minimum", "Set the minimum wafer number in process and additionalwafer number in case of going beyond the minimum."); wapexPlain.Add("Fixed", "Set the lowest slot No. of Lower Side-Dummy. The area ofProduct and FillDummy wafers is decided according tothe area of Side Dummy."); wapexPlain.Add("Upper", "Product wafers are arranged the upper area on the boatFill Dummy isn't transferred regardless of Product wafer number."); wapexPlain.Add("Lower", "Product wafers are arranged the lower area on the boat. Fill Dummy isn’t transferred regardless of Product wafer number ."); TitleText = wapexPlain["Total"]; DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Total; } private void LoadSetDefaultOption(object view) { var totalWaferNumberView = (RecipeLayoutSetTotalWaferNumberView)view; switch (_totalWaferNumber) { case TotalWaferNumberMode.Total: totalWaferNumberView.RdoTotal.IsChecked = true; break; case TotalWaferNumberMode.Carrier: totalWaferNumberView.RdoCarrier.IsChecked = true; break; case TotalWaferNumberMode.Carrierx: totalWaferNumberView.RdoCarrierx.IsChecked = true; break; case TotalWaferNumberMode.Minimum: totalWaferNumberView.RdoMinimum.IsChecked = true; break; case TotalWaferNumberMode.Fixed: totalWaferNumberView.RdoFixed.IsChecked = true; break; case TotalWaferNumberMode.Upper: totalWaferNumberView.RdoUpper.IsChecked = true; break; case TotalWaferNumberMode.Lower: totalWaferNumberView.RdoLower.IsChecked = true; break; default: break; } } public void EditModeSelectClick(string cmd) { switch (cmd) { case "Before": SetBeforeEdit(); break; case "After": SetAfterEdit(); break; default: break; } } private void SetBeforeEdit() { } private void SetAfterEdit() { } public void WapLogicSelectClick(string cmd) { if (wapexPlain.ContainsKey(cmd)) { TitleText = wapexPlain[cmd]; } switch (cmd) { case "Total": SetWapLogicSelectTotal(); break; case "Carrier": SetWapLogicSelectCarrier(); break; case "Carrierx": SetWapLogicSelectCarrierx(); break; case "Minimum": SetWapLogicSelectMinimum(); break; case "Fixed": SetWapLogicSelectFixed(); break; case "Upper": SetWapLogicSelectUpper(); break; case "Lower": SetWapLogicSelectLower(); break; default: break; } } private bool _totalWaferIsEnabled = true; public bool TotalWaferIsEnabled { get => _totalWaferIsEnabled; set { _totalWaferIsEnabled = value; NotifyOfPropertyChange(nameof(TotalWaferIsEnabled)); } } private Visibility _totalVisibility = Visibility.Visible; public Visibility TotalVisibility { get => _totalVisibility; set { _totalVisibility = value; NotifyOfPropertyChange(nameof(TotalVisibility)); } } private Visibility _carrierVisibility = Visibility.Hidden; public Visibility CarrierVisibility { get => _carrierVisibility; set { _carrierVisibility = value; NotifyOfPropertyChange(nameof(CarrierVisibility)); } } private Visibility _carrierXVisibility = Visibility.Hidden; public Visibility CarrierXVisibility { get => _carrierXVisibility; set { _carrierXVisibility = value; NotifyOfPropertyChange(nameof(CarrierXVisibility)); } } private Visibility _minimumVisibility = Visibility.Hidden; public Visibility MinimumVisibility { get => _minimumVisibility; set { _minimumVisibility = value; NotifyOfPropertyChange(nameof(MinimumVisibility)); } } private Visibility _fixedVisibility = Visibility.Hidden; public Visibility FixedVisibility { get => _fixedVisibility; set { _fixedVisibility = value; NotifyOfPropertyChange(nameof(FixedVisibility)); } } private Visibility _allWaferVisibility = Visibility.Visible; public Visibility AllWaferVisibility { get => _allWaferVisibility; set { _allWaferVisibility = value; NotifyOfPropertyChange(nameof(AllWaferVisibility)); } } private Visibility _upperAreaVisibility = Visibility.Hidden; public Visibility UpperAreaVisibility { get => _upperAreaVisibility; set { _upperAreaVisibility = value; NotifyOfPropertyChange(nameof(UpperAreaVisibility)); } } private Visibility _lowerAreaVisibility = Visibility.Hidden; public Visibility LowerAreaVisibility { get => _lowerAreaVisibility; set { _lowerAreaVisibility = value; NotifyOfPropertyChange(nameof(LowerAreaVisibility)); } } private Visibility _foupVisibilityVisibility = Visibility.Visible; public Visibility FoupVisibilityVisibility { get => _foupVisibilityVisibility; set { _foupVisibilityVisibility = value; NotifyOfPropertyChange(nameof(_foupVisibilityVisibility)); } } private void SetWapLogicSelectTotal() { TotalWaferIsEnabled = true; AllWaferVisibility = Visibility.Visible; TotalVisibility = Visibility.Visible; CarrierVisibility = Visibility.Hidden; CarrierXVisibility = Visibility.Hidden; MinimumVisibility = Visibility.Hidden; FixedVisibility = Visibility.Hidden; UpperAreaVisibility = Visibility.Hidden; LowerAreaVisibility = Visibility.Hidden; FoupVisibilityVisibility = Visibility.Visible; DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Total; } private void SetWapLogicSelectCarrier() { TotalWaferIsEnabled = false; AllWaferVisibility = Visibility.Visible; TotalVisibility = Visibility.Visible; CarrierVisibility = Visibility.Visible; CarrierXVisibility = Visibility.Hidden; MinimumVisibility = Visibility.Hidden; FixedVisibility = Visibility.Hidden; UpperAreaVisibility = Visibility.Hidden; LowerAreaVisibility = Visibility.Hidden; FoupVisibilityVisibility = Visibility.Visible; DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Carrier; } private void SetWapLogicSelectCarrierx() { AllWaferVisibility = Visibility.Visible; TotalVisibility = Visibility.Hidden; CarrierVisibility = Visibility.Hidden; CarrierXVisibility = Visibility.Visible; MinimumVisibility = Visibility.Hidden; FixedVisibility = Visibility.Hidden; UpperAreaVisibility = Visibility.Hidden; LowerAreaVisibility = Visibility.Hidden; FoupVisibilityVisibility = Visibility.Hidden; DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Carrierx; } private void SetWapLogicSelectMinimum() { AllWaferVisibility = Visibility.Visible; TotalVisibility = Visibility.Hidden; CarrierVisibility = Visibility.Hidden; CarrierXVisibility = Visibility.Hidden; MinimumVisibility = Visibility.Visible; FixedVisibility = Visibility.Hidden; UpperAreaVisibility = Visibility.Hidden; LowerAreaVisibility = Visibility.Hidden; FoupVisibilityVisibility = Visibility.Hidden; DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Minimum; } private void SetWapLogicSelectFixed() { AllWaferVisibility = Visibility.Visible; TotalVisibility = Visibility.Hidden; CarrierVisibility = Visibility.Hidden; CarrierXVisibility = Visibility.Hidden; MinimumVisibility = Visibility.Hidden; FixedVisibility = Visibility.Visible; UpperAreaVisibility = Visibility.Hidden; LowerAreaVisibility = Visibility.Hidden; FoupVisibilityVisibility = Visibility.Visible; DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Fixed; } private void SetWapLogicSelectUpper() { AllWaferVisibility = Visibility.Hidden; UpperAreaVisibility = Visibility.Visible; LowerAreaVisibility = Visibility.Hidden; DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Upper; } private void SetWapLogicSelectLower() { AllWaferVisibility = Visibility.Hidden; UpperAreaVisibility = Visibility.Hidden; LowerAreaVisibility = Visibility.Visible; DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Lower; } public void TempSetSave() { IsSave = true; GetValueToReturnValue(); ((Window)GetView()).DialogResult = true; } private void GetValueToReturnValue() { ReturnValue = $"{NeedNum}|{AdditionalNum}|{ProductCarrierNum}|{LowerSD}"; } public void TempSetCancel() { IsSave = false; ((Window)GetView()).DialogResult = false; } } public enum TotalWaferNumberMode { Total, Carrier, Carrierx, Minimum, Fixed, Upper, Lower } }