using Aitex.Core.Common; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; using Caliburn.Micro; using Caliburn.Micro.Core; using FurnaceUI.Common; using FurnaceUI.Models; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.OperationCenter; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.UI.Client.ClientBase; using Microsoft.VisualBasic; using OpenSEMI.ClientBase; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; namespace FurnaceUI.Views.Jobs { public class LoadJOBTwoViewModel : FurnaceModuleUIViewModelBase { public bool IsExecuteRTCommand { get; set; } = true; public bool IsAutoFillCarrierId { get; set; } = false; public bool IsPChecked { get; set; } = true; public bool IsMChecked { get; set; } = false; public bool IsM1Checked { get; set; } = false; public bool IsM2Checked { get; set; } = false; public bool IsSDChecked { get; set; } = false; public bool IsEDChecked { get; set; } = false; public Visibility IsWaferTypeExceptPVisible => IsExecuteRTCommand ? Visibility.Visible : Visibility.Collapsed; public Visibility PTypeRadioButtonVisibility { get; set; } public Visibility MTypeRadioButtonVisibility { get; set; } public Visibility M1TypeRadioButtonVisibility { get; set; } public Visibility M2TypeRadioButtonVisibility { get; set; } public Visibility SDTypeRadioButtonVisibility { get; set; } public Visibility EDTypeRadioButtonVisibility { get; set; } public bool IsSetValue { get; set; } = false; public LoadJOBTwoViewModel() { } private int MaxValue; [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; } [Subscription("Stocker19.LotID")] public string Stocker19LotID { get; set; } [Subscription("Stocker20.LotID")] public string Stocker20LotID { get; set; } [Subscription("Stocker21.LotID")] public string Stocker21LotID { get; set; } [Subscription("Stocker1.Carrier")] public CarrierInfo Stocker1CarrierData { get; set; } [Subscription("Stocker2.Carrier")] public CarrierInfo Stocker2CarrierData { get; set; } [Subscription("Stocker3.Carrier")] public CarrierInfo Stocker3CarrierData { get; set; } [Subscription("Stocker4.Carrier")] public CarrierInfo Stocker4CarrierData { get; set; } [Subscription("Stocker5.Carrier")] public CarrierInfo Stocker5CarrierData { get; set; } [Subscription("Stocker6.Carrier")] public CarrierInfo Stocker6CarrierData { get; set; } [Subscription("Stocker7.Carrier")] public CarrierInfo Stocker7CarrierData { get; set; } [Subscription("Stocker8.Carrier")] public CarrierInfo Stocker8CarrierData { get; set; } [Subscription("Stocker9.Carrier")] public CarrierInfo Stocker9CarrierData { get; set; } [Subscription("Stocker10.Carrier")] public CarrierInfo Stocker10CarrierData { get; set; } [Subscription("Stocker11.Carrier")] public CarrierInfo Stocker11CarrierData { get; set; } [Subscription("Stocker12.Carrier")] public CarrierInfo Stocker12CarrierData { get; set; } [Subscription("Stocker13.Carrier")] public CarrierInfo Stocker13CarrierData { get; set; } [Subscription("Stocker14.Carrier")] public CarrierInfo Stocker14CarrierData { get; set; } [Subscription("Stocker15.Carrier")] public CarrierInfo Stocker15CarrierData { get; set; } [Subscription("Stocker16.Carrier")] public CarrierInfo Stocker16CarrierData { get; set; } [Subscription("Stocker17.Carrier")] public CarrierInfo Stocker17CarrierData { get; set; } [Subscription("Stocker18.Carrier")] public CarrierInfo Stocker18CarrierData { get; set; } [Subscription("Stocker19.Carrier")] public CarrierInfo Stocker19CarrierData { get; set; } [Subscription("Stocker20.Carrier")] public CarrierInfo Stocker20CarrierData { get; set; } [Subscription("Stocker21.Carrier")] public CarrierInfo Stocker21CarrierData { get; set; } [Subscription("FIMS1.Carrier")] public CarrierInfo FIMS1CarrierData { get; set; } [Subscription("FIMS2.Carrier")] public CarrierInfo FIMS2CarrierData { get; set; } [Subscription("LP1.Carrier")] public CarrierInfo LP1CarrierData { get; set; } [Subscription("LP2.Carrier")] public CarrierInfo LP2CarrierData { get; set; } [Subscription("CarrierRobot.Carrier")] public CarrierInfo CassetteRobotCarrierData { get; set; } public ObservableCollection CarrierDataNameList { get; set; } = new ObservableCollection(); [Subscription("Scheduler.OccupyStockers")] public List OccupyStockers { get; set; } private int _stockValue; public int StockValue { get => _stockValue; set { _stockValue = value; NotifyOfPropertyChange("StockValue"); } } private Visibility _pTypeVisibility = Visibility.Visible; public Visibility PTypeVisibility { get => _pTypeVisibility; set { _pTypeVisibility = value; NotifyOfPropertyChange("PTypeVisibility"); } } private Visibility _sdTypeVisibility = Visibility.Hidden; public Visibility SDTypeVisibility { get => _sdTypeVisibility; set { _sdTypeVisibility = value; NotifyOfPropertyChange("SDTypeVisibility"); } } private Visibility _m1TypeVisibility = Visibility.Hidden; public Visibility M1TypeVisibility { get => _m1TypeVisibility; set { _m1TypeVisibility = value; NotifyOfPropertyChange("M1TypeVisibility"); } } private Visibility _m2TypeVisibility = Visibility.Hidden; public Visibility M2TypeVisibility { get => _m2TypeVisibility; set { _m2TypeVisibility = value; NotifyOfPropertyChange("M2TypeVisibility"); } } private Visibility _edTypeVisibility = Visibility.Hidden; public Visibility EDTypeVisibility { get => _edTypeVisibility; set { _edTypeVisibility = value; NotifyOfPropertyChange("EDTypeVisibility"); } } private Visibility _mTypeVisibility = Visibility.Hidden; public Visibility MTypeVisibility { get => _mTypeVisibility; set { _mTypeVisibility = value; NotifyOfPropertyChange("MTypeVisibility"); } } private Visibility _allTypeVisibility = Visibility.Hidden; public Visibility AllTypeVisibility { get => _allTypeVisibility; set { _allTypeVisibility = value; NotifyOfPropertyChange("ALLTypeVisibility"); } } public string ExecCommand { get; set; } public string ExecText { get; set; } = "EXEC"; private string _batchType = "P"; public string WaferType { get; set; } = "P"; public string LoadJobPara { get; set; } public string LoadJobTypePara { get; set; } public ObservableCollection MCarrierlist = new ObservableCollection(); public ObservableCollection M1Carrierlist = new ObservableCollection(); public ObservableCollection M2Carrierlist = new ObservableCollection(); public ObservableCollection SDCarrierlist = new ObservableCollection(); public ObservableCollection EDCarrierlist = new ObservableCollection(); public ObservableCollection PCarrierlist = new ObservableCollection(); public ObservableCollection NoneCarrierlist = new ObservableCollection(); public ObservableCollection Carrierlist = new ObservableCollection(); public Dictionary stockerWaferTypeDict { get; set; } = new Dictionary(); public ObservableCollection CarrierM1ItemList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierM1ItemTempList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierM2ItemList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierM2ItemTempList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierMItemList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierMItemTempList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierSDItemList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierSDItemTempList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierEDItemList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierEDItemTempList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierPItemList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierPItemTempList { get; set; } = new ObservableCollection(); public ObservableCollection CarrierInformationList { get; set; } = new ObservableCollection(); protected override void OnInitialize() { base.OnInitialize(); IsAutoFillCarrierId = (bool)QueryDataClient.Instance.Service.GetConfig("System.IsAutoFillCarrierId"); InitStockerWaferTypeDict(); if (IsM1Checked) { M1TypeVisibility = Visibility.Visible; WaferType = "M1"; } else if (IsM2Checked) { M2TypeVisibility = Visibility.Visible; WaferType = "M2"; } else if (IsPChecked) { PTypeVisibility = Visibility.Visible; WaferType = "P"; } else if (IsEDChecked) { EDTypeVisibility = Visibility.Visible; WaferType = "ED"; } else if (IsSDChecked) { SDTypeVisibility = Visibility.Visible; WaferType = "SD"; } else { EDTypeVisibility = Visibility.Visible; WaferType = "ED"; } MaxValue = 0; } private void InitStockerWaferTypeDict() { for (int i = 1; i <= 18; i++) { var dataType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{i}WaferType").ToString(); var stockerWaferType = dataType.Replace("1", "").Replace("2", ""); var item = stockerWaferType.ToString() + i; stockerWaferTypeDict.Add(item, dataType); } } public void StockerCarrier() { CarrierDataNameList.Clear(); if (Stocker1CarrierData != null) { Stocker1CarrierData.StockerIndex = 1; CarrierDataNameList.Add(Stocker1CarrierData); } if (Stocker2CarrierData != null) { Stocker2CarrierData.StockerIndex = 2; CarrierDataNameList.Add(Stocker2CarrierData); } if (Stocker3CarrierData != null) { Stocker3CarrierData.StockerIndex = 3; CarrierDataNameList.Add(Stocker3CarrierData); } if (Stocker4CarrierData != null) { Stocker4CarrierData.StockerIndex = 4; CarrierDataNameList.Add(Stocker4CarrierData); } if (Stocker5CarrierData != null) { Stocker5CarrierData.StockerIndex = 5; CarrierDataNameList.Add(Stocker5CarrierData); } if (Stocker6CarrierData != null) { Stocker6CarrierData.StockerIndex = 6; CarrierDataNameList.Add(Stocker6CarrierData); } if (Stocker7CarrierData != null) { Stocker7CarrierData.StockerIndex = 7; CarrierDataNameList.Add(Stocker7CarrierData); } if (Stocker8CarrierData != null) { Stocker8CarrierData.StockerIndex = 8; CarrierDataNameList.Add(Stocker8CarrierData); } if (Stocker9CarrierData != null) { Stocker9CarrierData.StockerIndex = 9; CarrierDataNameList.Add(Stocker9CarrierData); } if (Stocker10CarrierData != null) { Stocker10CarrierData.StockerIndex = 10; CarrierDataNameList.Add(Stocker10CarrierData); } if (Stocker11CarrierData != null) { Stocker11CarrierData.StockerIndex = 11; CarrierDataNameList.Add(Stocker11CarrierData); } if (Stocker12CarrierData != null) { Stocker12CarrierData.StockerIndex = 12; CarrierDataNameList.Add(Stocker12CarrierData); } if (Stocker13CarrierData != null) { Stocker13CarrierData.StockerIndex = 13; CarrierDataNameList.Add(Stocker13CarrierData); } if (Stocker14CarrierData != null) { Stocker14CarrierData.StockerIndex = 14; CarrierDataNameList.Add(Stocker14CarrierData); } if (Stocker15CarrierData != null) { Stocker15CarrierData.StockerIndex = 15; CarrierDataNameList.Add(Stocker15CarrierData); } if (Stocker16CarrierData != null) { Stocker16CarrierData.StockerIndex = 16; CarrierDataNameList.Add(Stocker16CarrierData); } if (Stocker17CarrierData != null) { Stocker17CarrierData.StockerIndex = 17; CarrierDataNameList.Add(Stocker17CarrierData); } if (Stocker18CarrierData != null) { Stocker18CarrierData.StockerIndex = 18; CarrierDataNameList.Add(Stocker18CarrierData); } foreach (var item in CarrierDataNameList) { if (string.IsNullOrEmpty(item.Name)) { item.Name = $"Stocker{item.StockerIndex}"; } } if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsFIMS1Installed")) CarrierDataNameList.Add(FIMS1CarrierData); if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsFIMS2Installed")) CarrierDataNameList.Add(FIMS2CarrierData); CarrierDataNameList.Add(CassetteRobotCarrierData); } string[] moduleNames = new string[] { "Stocker1", "Stocker2", "Stocker3", "Stocker4", "Stocker5", "Stocker6", "Stocker7", "Stocker8", "Stocker9", "Stocker10","Stocker11","Stocker12","Stocker13","Stocker14","Stocker15","Stocker16","Stocker17","Stocker18"}; protected override void InvokeAfterUpdateProperty(Dictionary data) { base.InvokeAfterUpdateProperty(data); } protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); StockerCarrier(); MCarrierlist.Clear(); M1Carrierlist.Clear(); M2Carrierlist.Clear(); EDCarrierlist.Clear(); SDCarrierlist.Clear(); PCarrierlist.Clear(); for (int i = 0; i < CarrierDataNameList.Count; i++) { string stockerType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{CarrierDataNameList[i].StockerIndex}WaferType"); if (stockerType == null) { continue; } if (OccupyStockers != null && OccupyStockers.Any(x => x == $"Stocker{CarrierDataNameList[i].StockerIndex}")) continue; //有下列几种情况下 stocker不被统计 //1:位于CarrierRobot上 //2:位于FIMS1/2上 //3:放到了其他stocker上 var boolCarrierRobot = (CassetteRobotCarrierData != null && CassetteRobotCarrierData.InnerId != Guid.Empty && CassetteRobotCarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name)); var boolFIMS1 = (FIMS1CarrierData != null && FIMS1CarrierData.InnerId != Guid.Empty && FIMS1CarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name)); var boolFIMS2 = (FIMS2CarrierData != null && FIMS2CarrierData.InnerId != Guid.Empty && FIMS2CarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name)); var boolOtherStocker = (CarrierDataNameList[i].Name != CarrierDataNameList[i].InternalModuleName.ToString() && CarrierDataNameList[i].InnerId != Guid.Empty); if (boolCarrierRobot || boolFIMS1 || boolFIMS2 || boolOtherStocker) { continue; } if (stockerType.Equals("M1") || stockerType.Equals(CarrierType.None.ToString())) { CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.M1.ToString()) ? CarrierType.M1 : CarrierType.None; M1Carrierlist.Add(CarrierDataNameList[i]); } if (stockerType.Equals("M2") || stockerType.Equals(CarrierType.None.ToString())) { CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.M2.ToString()) ? CarrierType.M2 : CarrierType.None; M2Carrierlist.Add(CarrierDataNameList[i]); } if (stockerType.Equals("ED") || stockerType.Equals(CarrierType.None.ToString())) { CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.ED.ToString()) ? CarrierType.ED : CarrierType.None; EDCarrierlist.Add(CarrierDataNameList[i]); } if (stockerType.Equals("SD") || stockerType.Equals(CarrierType.None.ToString())) { CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.SD.ToString()) ? CarrierType.SD : CarrierType.None; SDCarrierlist.Add(CarrierDataNameList[i]); } if (stockerType.Contains("P") || stockerType.Equals(CarrierType.None.ToString())) { CarrierDataNameList[i].CarrierType = stockerType.Contains(CarrierType.P.ToString()) ? CarrierType.P : CarrierType.None; PCarrierlist.Add(CarrierDataNameList[i]); } } } protected override void OnViewReady(object view) { base.OnViewReady(view); } protected override void OnActivate() { base.OnActivate(); } public void ValueCmd(string cmdPar) { switch (cmdPar) { case "Add": //最大值调整为动态获取 而不是根据配置项 MaxValue = getStockEmptyMaxValue(WaferType); if (StockValue < MaxValue) { StockValue++; //InitialPortName(WaferType); switch (WaferType) { case "P": CarrierPItemTempList.Clear(); for (int i = 0; i < PCarrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(PCarrierlist[i].Status)) continue; if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{PCarrierlist[i].StockerIndex}Installed")) continue; CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation(); carrierInfo.No = $"{PCarrierlist[i].StockerIndex}"; carrierInfo.ModuleName = $"Stocker{PCarrierlist[i].StockerIndex}"; carrierInfo.CarrierType = PCarrierlist[i].CarrierType.ToString(); carrierInfo.CarrierId = PCarrierlist[i].CarrierId; carrierInfo.WaferCount = PCarrierlist[i].WaferCount.ToString(); carrierInfo.StockerCarrierEnable = true; CarrierPItemTempList.Add(carrierInfo); } CarrierPItemList.Add(CarrierPItemTempList[StockValue - 1]); break; case "SD": CarrierSDItemTempList.Clear(); for (int i = 0; i < SDCarrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(SDCarrierlist[i].Status)) continue; if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{SDCarrierlist[i].StockerIndex}Installed")) continue; CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation(); carrierInfo.No = $"{SDCarrierlist[i].StockerIndex}"; ; carrierInfo.ModuleName = $"Stocker{SDCarrierlist[i].StockerIndex}"; carrierInfo.CarrierType = SDCarrierlist[i].CarrierType.ToString(); carrierInfo.CarrierId = SDCarrierlist[i].CarrierId; carrierInfo.WaferCount = SDCarrierlist[i].WaferCount.ToString(); carrierInfo.StockerCarrierEnable = true; CarrierSDItemTempList.Add(carrierInfo); } CarrierSDItemList.Add(CarrierSDItemTempList[StockValue - 1]); break; case "ED": CarrierEDItemTempList.Clear(); for (int i = 0; i < EDCarrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(EDCarrierlist[i].Status)) continue; if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{EDCarrierlist[i].StockerIndex}Installed")) continue; CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation(); carrierInfo.No = $"{EDCarrierlist[i].StockerIndex}"; carrierInfo.ModuleName = $"Stocker{EDCarrierlist[i].StockerIndex}"; carrierInfo.CarrierType = EDCarrierlist[i].CarrierType.ToString(); carrierInfo.CarrierId = EDCarrierlist[i].CarrierId; carrierInfo.WaferCount = EDCarrierlist[i].WaferCount.ToString(); carrierInfo.StockerCarrierEnable = true; CarrierEDItemTempList.Add(carrierInfo); } CarrierEDItemList.Add(CarrierEDItemTempList[StockValue - 1]); break; case "M": CarrierMItemTempList.Clear(); for (int i = 0; i < MCarrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(MCarrierlist[i].Status)) continue; if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{MCarrierlist[i].StockerIndex}Installed")) continue; CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation(); carrierInfo.No = $"{MCarrierlist[i].StockerIndex}"; //carrierInfo.ModuleName = MCarrierlist[i].InternalModuleName.ToString(); carrierInfo.ModuleName = $"Stocker{MCarrierlist[i].StockerIndex}"; carrierInfo.CarrierType = MCarrierlist[i].CarrierType.ToString(); carrierInfo.CarrierId = MCarrierlist[i].CarrierId; carrierInfo.WaferCount = MCarrierlist[i].WaferCount.ToString(); carrierInfo.StockerCarrierEnable = true; CarrierMItemTempList.Add(carrierInfo); } CarrierMItemList.Add(CarrierMItemTempList[StockValue - 1]); break; case "M1": CarrierM1ItemTempList.Clear(); for (int i = 0; i < M1Carrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(M1Carrierlist[i].Status)) continue; if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M1Carrierlist[i].StockerIndex}Installed")) continue; CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation(); carrierInfo.No = $"{M1Carrierlist[i].StockerIndex}"; carrierInfo.ModuleName = $"Stocker{M1Carrierlist[i].StockerIndex}"; carrierInfo.CarrierType = M1Carrierlist[i].CarrierType.ToString(); carrierInfo.CarrierId = M1Carrierlist[i].CarrierId; carrierInfo.WaferCount = M1Carrierlist[i].WaferCount.ToString(); carrierInfo.StockerCarrierEnable = true; CarrierM1ItemTempList.Add(carrierInfo); } CarrierM1ItemList.Add(CarrierM1ItemTempList[StockValue - 1]); break; case "M2": CarrierM2ItemTempList.Clear(); for (int i = 0; i < M2Carrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(M2Carrierlist[i].Status)) continue; if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M2Carrierlist[i].StockerIndex}Installed")) continue; CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation(); carrierInfo.No = $"{M2Carrierlist[i].StockerIndex}"; carrierInfo.ModuleName = $"Stocker{M2Carrierlist[i].StockerIndex}"; carrierInfo.CarrierType = M2Carrierlist[i].CarrierType.ToString(); carrierInfo.CarrierId = M2Carrierlist[i].CarrierId; carrierInfo.WaferCount = M2Carrierlist[i].WaferCount.ToString(); carrierInfo.StockerCarrierEnable = true; CarrierM2ItemTempList.Add(carrierInfo); } CarrierM2ItemList.Add(CarrierM2ItemTempList[StockValue - 1]); break; default: break; } } break; case "Sub": if (StockValue > 0) { StockValue--; if (WaferType == "M" && CarrierMItemList.Count > 0) { CarrierMItemList.RemoveAt(CarrierMItemList.Count - 1); } if (WaferType == "M1" && CarrierM1ItemList.Count > 0) { CarrierM1ItemList.RemoveAt(CarrierM1ItemList.Count - 1); } if (WaferType == "M2" && CarrierM2ItemList.Count > 0) { CarrierM2ItemList.RemoveAt(CarrierM2ItemList.Count - 1); } if (WaferType == "ED" && CarrierEDItemList.Count > 0) { CarrierEDItemList.RemoveAt(CarrierEDItemList.Count - 1); } if (WaferType == "SD" && CarrierSDItemList.Count > 0) { CarrierSDItemList.RemoveAt(CarrierSDItemList.Count - 1); } if (WaferType == "P" && CarrierPItemList.Count > 0) { CarrierPItemList.RemoveAt(CarrierPItemList.Count - 1); } //InitialPortName(WaferType); } break; default: break; } } /// /// 获取指定类型下空Stock数量 /// /// /// public int getStockEmptyMaxValue(string stockType) { if ("P".Equals(stockType)) { int count = 0; for (int i = 0; i < PCarrierlist.Count; i++) { if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{PCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(PCarrierlist[i].Status)) { count++; } } return count; } if ("SD".Equals(stockType)) { int count = 0; for (int i = 0; i < SDCarrierlist.Count; i++) { if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{SDCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(SDCarrierlist[i].Status)) { count++; } } return count; } if ("ED".Equals(stockType)) { int count = 0; for (int i = 0; i < EDCarrierlist.Count; i++) { if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{EDCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(EDCarrierlist[i].Status)) { count++; } } return count; } if ("M1".Equals(stockType)) { int count = 0; for (int i = 0; i < M1Carrierlist.Count; i++) { if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M1Carrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(M1Carrierlist[i].Status)) { count++; } } return count; } if ("M2".Equals(stockType)) { int count = 0; for (int i = 0; i < M2Carrierlist.Count; i++) { if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M2Carrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(M2Carrierlist[i].Status)) { count++; } } return count; } return 0; } public void WaferTypeSelect(string type) { var waferTypeList = QueryDataClient.Instance.Service.GetConfigItemList().Where(m => m.Name.StartsWith(ConstantsCommon.Stocker)).ToList(); switch (type) { case ConstantsCommon.P: StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.P)).Count(); PTypeVisibility = Visibility.Visible; SDTypeVisibility = Visibility.Collapsed; EDTypeVisibility = Visibility.Collapsed; MTypeVisibility = Visibility.Collapsed; M1TypeVisibility = Visibility.Collapsed; M2TypeVisibility = Visibility.Collapsed; WaferType = ConstantsCommon.P; CarrierPItemList.Clear(); for (int i = 0; i < PCarrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(PCarrierlist[i].Status)) { StockValue--; continue; } } break; case ConstantsCommon.SD: StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.SD)).Count(); PTypeVisibility = Visibility.Collapsed; SDTypeVisibility = Visibility.Visible; EDTypeVisibility = Visibility.Collapsed; MTypeVisibility = Visibility.Collapsed; M1TypeVisibility = Visibility.Collapsed; M2TypeVisibility = Visibility.Collapsed; WaferType = ConstantsCommon.SD; CarrierSDItemList.Clear(); for (int i = 0; i < SDCarrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(SDCarrierlist[i].Status)) { StockValue--; continue; } } break; case ConstantsCommon.ED: StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.ED)).Count(); PTypeVisibility = Visibility.Collapsed; SDTypeVisibility = Visibility.Collapsed; EDTypeVisibility = Visibility.Visible; MTypeVisibility = Visibility.Collapsed; M1TypeVisibility = Visibility.Collapsed; M2TypeVisibility = Visibility.Collapsed; WaferType = ConstantsCommon.ED; CarrierEDItemList.Clear(); for (int i = 0; i < EDCarrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(EDCarrierlist[i].Status)) { StockValue--; continue; } } break; case ConstantsCommon.M: StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M)).Count(); PTypeVisibility = Visibility.Collapsed; SDTypeVisibility = Visibility.Collapsed; EDTypeVisibility = Visibility.Collapsed; MTypeVisibility = Visibility.Visible; AllTypeVisibility = Visibility.Visible; M1TypeVisibility = Visibility.Collapsed; M2TypeVisibility = Visibility.Collapsed; WaferType = ConstantsCommon.M; CarrierMItemList.Clear(); for (int i = 0; i < MCarrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(MCarrierlist[i].Status)) { StockValue--; continue; } } break; case ConstantsCommon.M1: StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M1)).Count(); PTypeVisibility = Visibility.Collapsed; SDTypeVisibility = Visibility.Collapsed; EDTypeVisibility = Visibility.Collapsed; MTypeVisibility = Visibility.Collapsed; M1TypeVisibility = Visibility.Visible; M2TypeVisibility = Visibility.Collapsed; WaferType = ConstantsCommon.M1; CarrierM1ItemList.Clear(); for (int i = 0; i < M1Carrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(M1Carrierlist[i].Status)) { StockValue--; continue; } } break; case ConstantsCommon.M2: StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M2)).Count(); PTypeVisibility = Visibility.Collapsed; SDTypeVisibility = Visibility.Collapsed; EDTypeVisibility = Visibility.Collapsed; MTypeVisibility = Visibility.Collapsed; M1TypeVisibility = Visibility.Collapsed; M2TypeVisibility = Visibility.Visible; WaferType = ConstantsCommon.M2; CarrierM2ItemList.Clear(); for (int i = 0; i < M2Carrierlist.Count; i++) { if (CarrierStatus.Normal.Equals(M2Carrierlist[i].Status)) { StockValue--; continue; } } break; default: break; } MaxValue = StockValue; StockValue = 0; InitialPortName(WaferType); } public void GetCarrier() { } public void EditCarrierID(string value) { var windowManager = IoC.Get(); WaferMapSelectedViewModel inputCarrierInfoViewModel = new WaferMapSelectedViewModel(); inputCarrierInfoViewModel.WaferType = WaferType; inputCarrierInfoViewModel.WaferNo = value; CarrierMaterialInformation carr=null; switch (WaferType) { case "P": carr = CarrierPItemList.FirstOrDefault(x => x.No == value); break; case "SD": carr = CarrierSDItemList.FirstOrDefault(x => x.No == value); break; case "ED": carr = CarrierEDItemList.FirstOrDefault(x => x.No == value); break; case "M1": carr = CarrierM1ItemList.FirstOrDefault(x => x.No == value); break; case "M2": carr = CarrierM2ItemList.FirstOrDefault(x => x.No == value); break; default: break; } if (carr != null) inputCarrierInfoViewModel.StrSlots = carr.StrSlot; inputCarrierInfoViewModel.Wafers = carr.Wafers; if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(inputCarrierInfoViewModel, null, "Wafer Map")) { foreach (var item in CarrierPItemList) { if (item.No.Equals(inputCarrierInfoViewModel.WaferNo)) { item.CarrierId = inputCarrierInfoViewModel.CarrierID; item.WaferCount = inputCarrierInfoViewModel.WaferCount; item.SlotMap = inputCarrierInfoViewModel.SlotMap; item.StrSlot = inputCarrierInfoViewModel.StrSlots; item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None"; } } foreach (var item in CarrierSDItemList) { if (item.No.Equals(inputCarrierInfoViewModel.WaferNo)) { item.CarrierId = inputCarrierInfoViewModel.CarrierID; item.WaferCount = inputCarrierInfoViewModel.WaferCount; item.SlotMap = inputCarrierInfoViewModel.SlotMap; item.StrSlot = inputCarrierInfoViewModel.StrSlots; item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None"; } } foreach (var item in CarrierEDItemList) { if (item.No.Equals(inputCarrierInfoViewModel.WaferNo)) { item.CarrierId = inputCarrierInfoViewModel.CarrierID; item.WaferCount = inputCarrierInfoViewModel.WaferCount; item.SlotMap = inputCarrierInfoViewModel.SlotMap; item.StrSlot = inputCarrierInfoViewModel.StrSlots; item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None"; } } foreach (var item in CarrierMItemList) { if (item.No.Equals(inputCarrierInfoViewModel.WaferNo)) { item.CarrierId = inputCarrierInfoViewModel.CarrierID; item.WaferCount = inputCarrierInfoViewModel.WaferCount; item.SlotMap = inputCarrierInfoViewModel.SlotMap; item.StrSlot = inputCarrierInfoViewModel.StrSlots; item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None"; } } foreach (var item in CarrierM1ItemList) { if (item.No.Equals(inputCarrierInfoViewModel.WaferNo)) { item.CarrierId = inputCarrierInfoViewModel.CarrierID; item.WaferCount = inputCarrierInfoViewModel.WaferCount; item.SlotMap = inputCarrierInfoViewModel.SlotMap; item.StrSlot = inputCarrierInfoViewModel.StrSlots; item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None"; } } foreach (var item in CarrierM2ItemList) { if (item.No.Equals(inputCarrierInfoViewModel.WaferNo)) { item.CarrierId = inputCarrierInfoViewModel.CarrierID; item.WaferCount = inputCarrierInfoViewModel.WaferCount; item.SlotMap = inputCarrierInfoViewModel.SlotMap; item.StrSlot = inputCarrierInfoViewModel.StrSlots; item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None"; } } } else { } } public void TextChangedCmd() { if (StockValue < 0) StockValue = 0; InitialPortName(_batchType); } private void InitialPortName(string Type, bool initLotID = false) { //RightPort1Visibility = false; RightPort2Visibility = false; RightPort3Visibility = false; var StockerConfigList = QueryDataClient.Instance.Service.GetConfigItemList().Where(m => m.Name.Contains("WaferType")).ToList(); int j = 0; int x = 0; int y = 0; for (int i = 1; i <= StockerConfigList.Count; i++) { string StockerType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{i}WaferType"); if (j == StockValue || j > 12 && Type == "P") break; if (x == StockValue || x > 6 && Type == "ED") break; } } public void LoadPortCheck(string No, string LPName) { foreach (var item in CarrierPItemList) { if (item.No.Equals(No)) { item.LoadPortName = LPName; } } foreach (var item in CarrierSDItemList) { if (item.No.Equals(No)) { item.LoadPortName = LPName; } } foreach (var item in CarrierEDItemList) { if (item.No.Equals(No)) { item.LoadPortName = LPName; } } foreach (var item in CarrierMItemList) { if (item.No.Equals(No)) { item.LoadPortName = LPName; } } foreach (var item in CarrierM1ItemList) { if (item.No.Equals(No)) { item.LoadPortName = LPName; } } foreach (var item in CarrierM2ItemList) { if (item.No.Equals(No)) { item.LoadPortName = LPName; } } } public void LoadPortSelect(string StockerName, string LoadJobPara1) { string[] StockArray = LoadJobPara.Split(';'); string para = ""; foreach (var item in StockArray) { if (item.Contains(StockerName)) { para = LoadJobPara.Replace(item + ";", LoadJobPara1); } } LoadJobPara = para; } public void EXECCmd(string cmdPar) { //if (!DialogBox.Confirm("Are you sure to execute?")) // return; ObservableCollection itemList = new ObservableCollection(); switch (WaferType) { case "P": itemList = CarrierPItemList; break; case "M": itemList = CarrierMItemList; break; case "M1": itemList = CarrierM1ItemList; break; case "M2": itemList = CarrierM2ItemList; break; case "SD": itemList = CarrierSDItemList; break; case "ED": itemList = CarrierEDItemList; break; } LoadJobPara = string.Empty; foreach (var item in itemList) { item.CarrierId = IsAutoFillCarrierId ? item.No : item.CarrierId; if (!item.StockerCarrierEnable) continue; if (string.IsNullOrEmpty(item.LoadPortName)) { DialogBox.ShowWarning($"Number {item.No} LoadPort is empty,please select LoadPort!"); return; } var loadJobPara = item.ModuleName + "," + item.CarrierId + "," + item.StrSlot + "," + item.ExistSlot + "," + item.SlotMap + "," + item.LoadPortName + ";"; if (!string.IsNullOrEmpty(LoadJobPara) && LoadJobPara.Contains(item.ModuleName)) { this.LoadPortSelect(item.ModuleName, loadJobPara); } else LoadJobPara += loadJobPara; } if (string.IsNullOrEmpty(LoadJobPara)) { DialogBox.ShowWarning("Load job parameter is empty,please select loadport number!"); return; } //string para = "Stocker1,P_00000036,25,Exist,1111111111111111111111111,LP1;Stocker2,P_00000037,25,Exist,1111111111111111111111111,LP2"; if (IsExecuteRTCommand && !DialogBox.Confirm("Are you sure to accept?")) return; Dictionary param = new Dictionary() { {"WaferType", WaferType }, {"CarrierPara", LoadJobPara.TrimEnd(';')}, {"TransferType", "Loading"}, }; if (IsExecuteRTCommand) { InvokeClient.Instance.Service.DoOperation($"System.{ExecCommand}", param); } ((Window)GetView()).DialogResult = true; } public void ClosedCmd(string cmdPar) { (GetView() as Window).Close(); } } }