123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- using Aitex.Core.Common;
- using Aitex.Core.Util;
- using Caliburn.Micro;
- using MECF.Framework.Common.DataCenter;
- using MECF.Framework.Common.Equipment;
- using MECF.Framework.UI.Client.ClientBase;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Windows;
- using System.Windows.Media;
- using FurnaceUI.Models;
- namespace FurnaceUI.Views.Operations
- {
- public class StockerViewModel : FurnaceUIViewModelBase
- {
- public bool IsPermission { get => this.Permission == 3; }
- public Visibility IsReplace { get; set; }
- public StockerViewModel()
- {
- this.DisplayName = "StockerViewModel";
- _stokcers = new List<ModuleName>()
- {
- ModuleName.Stocker1,
- ModuleName.Stocker2,
- ModuleName.Stocker3,
- ModuleName.Stocker4,
- ModuleName.Stocker5,
- ModuleName.Stocker6,
- ModuleName.Stocker7,
- ModuleName.Stocker8,
- ModuleName.Stocker9,
- ModuleName.Stocker10,
- ModuleName.Stocker11,
- ModuleName.Stocker12,
- ModuleName.Stocker13,
- ModuleName.Stocker14,
- ModuleName.Stocker15,
- ModuleName.Stocker16,
- ModuleName.Stocker17,
- ModuleName.Stocker18,
- //ModuleName.Stocker19,
- //ModuleName.Stocker20,
- //ModuleName.Stocker21,
- };
- StockerSlots = new ObservableCollection<string>()
- {
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- };
- StockerWaferType = Enumerable.Repeat("", 21).ToList();
- _eDUseWarningLimit = (int)QueryDataClient.Instance.Service.GetConfig("PM1.WaferCycleTime.EDCountWarning");
- _eDUseAlarmLimit = (int)QueryDataClient.Instance.Service.GetConfig("PM1.WaferCycleTime.EDCountAlarm");
- StockerBackground = new List<SolidColorBrush>();
- for (int i = 0; i < 21; i++)
- {
- StockerBackground.Add(_WhiteFill);
- }
- }
- private List<ModuleName> _stokcers;
- private List<string> _stokcerWaferType;
- double _eDUseWarningLimit;
- double _eDUseAlarmLimit;
- public List<string> StockerWaferType
- {
- get => _stokcerWaferType;
- set
- {
- _stokcerWaferType = value;
- NotifyOfPropertyChange(nameof(StockerWaferType));
- }
- }
- private int _cassetteSlot = 0;
- private ObservableCollection<string> _stockerSlots;
- public ObservableCollection<string> StockerSlots
- {
- get { return _stockerSlots; }
- set
- {
- _stockerSlots = value;
- NotifyOfPropertyChange("StockerSlots");
- }
- }
- private SolidColorBrush _WhiteFill = new SolidColorBrush(Colors.White);
- private SolidColorBrush _abortFill = new SolidColorBrush(Colors.Red);
- private SolidColorBrush _productionFill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#bedadb"));
- private SolidColorBrush _SD_ED_M_Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("LightGray"));
- private SolidColorBrush _waringFill = new SolidColorBrush(Colors.Yellow);
- private SolidColorBrush _alarmFill = new SolidColorBrush(Colors.Red);
- private List<SolidColorBrush> _stockerBackground = new List<SolidColorBrush>();
- public List<SolidColorBrush> StockerBackground
- {
- get => _stockerBackground;
- set
- {
- _stockerBackground = value;
- NotifyOfPropertyChange(nameof(StockerBackground));
- }
- }
- [Subscription("Stocker1.CassettePresent")]
- public bool IsCassettePresent { get; set; }
- [Subscription("Stocker1.LotID")]
- public string Stocker1LotID { get; set; }
- [Subscription("Stocker2.LotID")]
- public string Stocker2LotID { get; set; }
- [Subscription("Stocker3.LotID")]
- public string Stocker3LotID { get; set; }
- [Subscription("Stocker4.LotID")]
- public string Stocker4LotID { get; set; }
- [Subscription("Stocker5.LotID")]
- public string Stocker5LotID { get; set; }
- [Subscription("Stocker6.LotID")]
- public string Stocker6LotID { get; set; }
- [Subscription("Stocker7.LotID")]
- public string Stocker7LotID { get; set; }
- [Subscription("Stocker8.LotID")]
- public string Stocker8LotID { get; set; }
- [Subscription("Stocker9.LotID")]
- public string Stocker9LotID { get; set; }
- [Subscription("Stocker10.LotID")]
- public string Stocker10LotID { get; set; }
- [Subscription("Stocker11.LotID")]
- public string Stocker11LotID { get; set; }
- [Subscription("Stocker12.LotID")]
- public string Stocker12LotID { get; set; }
- [Subscription("Stocker13.LotID")]
- public string Stocker13LotID { get; set; }
- [Subscription("Stocker14.LotID")]
- public string Stocker14LotID { get; set; }
- [Subscription("Stocker15.LotID")]
- public string Stocker15LotID { get; set; }
- [Subscription("Stocker16.LotID")]
- public string Stocker16LotID { get; set; }
- [Subscription("Stocker17.LotID")]
- public string Stocker17LotID { get; set; }
- [Subscription("Stocker18.LotID")]
- public string Stocker18LotID { get; set; }
- public Visibility IsStockerVisibility { get; set; }
- public Visibility IsLPVisibility { get; set; }
- protected override void OnInitialize()
- {
- base.OnInitialize();
- //base.InitFOUP();
- //base.InitLL();
- //base.InitTM();
- //base.InitEFEM();
- //base.InitPM();
- //base.InitBuffer();
- }
- protected override void OnActivate()
- {
- base.OnActivate();
- _cassetteSlot = (int)QueryDataClient.Instance.Service.GetConfig("System.CassetteSlotCount");
- for (int i = 0; i < _stokcers.Count; i++)
- {
- StockerWaferType[i] = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.{_stokcers[i]}WaferType");
- }
- }
- protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
- {
- var isLoadPortPosition = (string)QueryDataClient.Instance.Service.GetConfig("LoadPort.LoadPortPosition");
- if (isLoadPortPosition == "Upper")
- {
- IsStockerVisibility = Visibility.Hidden;
- IsLPVisibility = Visibility.Visible;
- }
- else
- {
- IsStockerVisibility = Visibility.Visible;
- IsLPVisibility = Visibility.Hidden;
- }
- UpdateStockerSlots();
- }
- private void UpdateStockerSlots()
- {
- for (int i = 0; i < _stokcers.Count; i++)
- {
- bool bHaveAbort = false;
- var wafers = ModuleManager.ModuleInfos[_stokcers[i].ToString()].WaferManager.Wafers;
- int waferNumber = 0;
- SolidColorBrush _tempFill = _SD_ED_M_Fill;
- if (wafers != null)
- {
- foreach (var wafer in wafers)
- {
- if (wafer.WaferStatus != 0)
- {
- waferNumber++;
- if (wafer.WaferStatus == 5) // EnumWaferProcessStatus.Failed
- bHaveAbort = true;
- if (wafer.UseCount > _eDUseWarningLimit)
- {
- _tempFill = _waringFill;
- }
- if (wafer.UseCount > _eDUseAlarmLimit)
- {
- _tempFill = _alarmFill;
- }
- }
- }
- }
- StockerSlots[i] = $"{waferNumber}/{_cassetteSlot}";
- if (StockerWaferType[i].Contains("P"))
- {
- if (waferNumber > 0)
- {
- if (bHaveAbort)
- StockerBackground[i] = _abortFill;
- else
- {
- StockerBackground[i] = _productionFill;
- }
- }
- else
- {
- StockerBackground[i] = _WhiteFill;
- }
- }
- else
- {
- if (waferNumber > 0)
- {
- if (bHaveAbort)
- StockerBackground[i] = _abortFill;
- else
- StockerBackground[i] = _tempFill;
- ;
- }
- else
- {
- StockerBackground[i] = _WhiteFill;
- }
- }
- }
- }
- public void SwitchPage(string page)
- {
- }
- public void StokcerInfo(string module, string type)
- {
- WindowManager wm = new WindowManager();
- CassetteViewModel svm = new CassetteViewModel(module);
- svm.WaferType = type;
- switch (ModuleHelper.Converter(module))
- {
- case ModuleName.Stocker1:
- svm.LotID = Stocker1LotID;
- break;
- case ModuleName.Stocker2:
- svm.LotID = Stocker2LotID;
- break;
- case ModuleName.Stocker3:
- svm.LotID = Stocker3LotID;
- break;
- case ModuleName.Stocker4:
- svm.LotID = Stocker4LotID;
- break;
- case ModuleName.Stocker5:
- svm.LotID = Stocker5LotID;
- break;
- case ModuleName.Stocker6:
- svm.LotID = Stocker6LotID;
- break;
- case ModuleName.Stocker7:
- svm.LotID = Stocker7LotID;
- break;
- case ModuleName.Stocker8:
- svm.LotID = Stocker8LotID;
- break;
- case ModuleName.Stocker9:
- svm.LotID = Stocker9LotID;
- break;
- case ModuleName.Stocker10:
- svm.LotID = Stocker10LotID;
- break;
- case ModuleName.Stocker11:
- svm.LotID = Stocker11LotID;
- break;
- case ModuleName.Stocker12:
- svm.LotID = Stocker12LotID;
- break;
- case ModuleName.Stocker13:
- svm.LotID = Stocker13LotID;
- break;
- case ModuleName.Stocker14:
- svm.LotID = Stocker14LotID;
- break;
- case ModuleName.Stocker15:
- svm.LotID = Stocker15LotID;
- break;
- case ModuleName.Stocker16:
- svm.LotID = Stocker16LotID;
- break;
- case ModuleName.Stocker17:
- svm.LotID = Stocker17LotID;
- break;
- case ModuleName.Stocker18:
- svm.LotID = Stocker18LotID;
- break;
- }
- wm.ShowDialogWithTitle(svm, null, $"{svm.ModuleName} Information");
- }
- }
- }
|