using Caliburn.Micro; using Caliburn.Micro.Core; using Aitex.Core.Common.DeviceData; using Aitex.Core.UI.ControlDataContext; using Aitex.Core.Util; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.OperationCenter; using FurnaceUI.Models; using FurnaceUI.Views.Editors; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Threading.Tasks; using System.Reflection; using System; using Aitex.Core.RT.Log; using System.Linq; using System.Windows; namespace FurnaceUI.Views.Maintenances { public class CassetteRobotViewModel : FurnaceUIViewModelBase { public bool IsManagerPermission { get => this.Permission == 3; } [Subscription("CarrierRobot.Status")] public string CassetteRobotStatus { get; set; } [Subscription("Rt.Status")] public string RtStatus { get; set; } [Subscription("CarrierRobot.IsOnline")] public bool CarrierRobotIsOnline { get; set; } public bool IsSelectButtonEnable => IsSystemStaus; public bool IsCarrierRobotOfflineButtonEnable => CarrierRobotIsOnline; public bool IsCarrierRobotOnlineButtonEnable => !CarrierRobotIsOnline; public bool IsSystemStaus => (RtStatus != "AutoRunning"); #region test CassetteRobot private List _slotsCassetteRobot = new List() { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; private List _modulesCassetteRobot = new List() { "LP1", "LP2", "LP3", "LP4", "BufferEX1", "BufferEX2", "FIMS1", "FIMS2", "1-A", "1-B", "1-C", "1-D", "2-A", "2-B", "2-C", "2-D", "3-A", "3-B", "3-C", "3-D", "4-A", "4-B", "4-C", "4-D" }; private List _cycleSwapModulesCassetteRobot = new List() { "1-A", "1-B", "1-C", "1-D", "2-A", "2-B", "2-C", "2-D", "3-A", "3-B", "3-C", "3-D", "4-A", "4-B", "4-C", "4-D" }; private Dictionary _modulesDic = new Dictionary() { { "1-A", "Stocker1" }, { "1-B", "Stocker2" }, { "1-C", "Stocker3" }, { "1-D", "Stocker4" }, { "2-A", "Stocker5" }, { "2-B", "Stocker6" }, { "2-C", "Stocker7" }, { "2-D", "Stocker8" }, { "3-A", "Stocker9" }, { "3-B", "Stocker10" }, { "3-C", "Stocker11" }, { "3-D", "Stocker12" }, { "4-A", "Stocker13" }, { "4-B", "Stocker14" }, { "4-C", "Stocker15" }, { "4-D", "Stocker16" }, { "BufferEX1", "Stocker17" }, { "BufferEX2", "Stocker18" }, }; private List _bladesCassetteRobot = new List() { "Blade1" }; private string _pickSelectedModuleCassetteRobot; public string PickSelectedModuleCassetteRobot { get { return _pickSelectedModuleCassetteRobot; } set { _pickSelectedModuleCassetteRobot = value; PickSlotsCassetteRobot = GetSlotsByModuleCassetteRobot(_pickSelectedModuleCassetteRobot); PickSelectedSlotCassetteRobot = 1; NotifyOfPropertyChange("PickSelectedModuleCassetteRobot"); } } private int _pickSelectedSlotCassetteRobot=1; public int PickSelectedSlotCassetteRobot { get { return _pickSelectedSlotCassetteRobot; } set { _pickSelectedSlotCassetteRobot = value; NotifyOfPropertyChange("PickSelectedSlotCassetteRobot"); } } private string _pickSelectedBladeCassetteRobot = "Blade1"; public string PickSelectedBladeCassetteRobot { get { return _pickSelectedBladeCassetteRobot; } set { _pickSelectedBladeCassetteRobot = value; NotifyOfPropertyChange("PickSelectedBladeCassetteRobot"); } } private List _pickSlotsCassetteRobot; public List PickSlotsCassetteRobot { get { return _pickSlotsCassetteRobot; } set { _pickSlotsCassetteRobot = value; NotifyOfPropertyChange("PickSlotsCassetteRobot"); } } private string _placeSelectedModuleCassetteRobot; public string PlaceSelectedModuleCassetteRobot { get { return _placeSelectedModuleCassetteRobot; } set { _placeSelectedModuleCassetteRobot = value; PlaceSlotsCassetteRobot = GetSlotsByModuleCassetteRobot(_placeSelectedModuleCassetteRobot); PlaceSelectedSlotCassetteRobot = 1; NotifyOfPropertyChange("PlaceSelectedModuleCassetteRobot"); } } private int _placeSelectedSlotCassetteRobot=1; public int PlaceSelectedSlotCassetteRobot { get { return _placeSelectedSlotCassetteRobot; } set { _placeSelectedSlotCassetteRobot = value; NotifyOfPropertyChange("PlaceSelectedSlotCassetteRobot"); } } private string _placeSelectedBladeCassetteRobot = "Blade1"; public string PlaceSelectedBladeCassetteRobot { get { return _placeSelectedBladeCassetteRobot; } set { _placeSelectedBladeCassetteRobot = value; NotifyOfPropertyChange("PlaceSelectedBladeCassetteRobot"); } } private List _placeSlotsCassetteRobot; public List PlaceSlotsCassetteRobot { get { return _placeSlotsCassetteRobot; } set { _placeSlotsCassetteRobot = value; NotifyOfPropertyChange("PlaceSlotsCassetteRobot"); } } public List ModulesCassetteRobot { get { return _modulesCassetteRobot; } set { _modulesCassetteRobot = value; NotifyOfPropertyChange("ModulesCassetteRobot"); } } public List CycleSwapModulesCassetteRobot { get { return _cycleSwapModulesCassetteRobot; } set { _cycleSwapModulesCassetteRobot = value; NotifyOfPropertyChange("CycleSwapModulesCassetteRobot"); } } public List BladesCassetteRobot { get { return _bladesCassetteRobot; } set { _bladesCassetteRobot = value; NotifyOfPropertyChange("BladesCassetteRobot"); } } private string _cycleSwapFromSelectedModuleCassetteRobot; public string CycleSwapFromSelectedModuleCassetteRobot { get { return _cycleSwapFromSelectedModuleCassetteRobot; } set { _cycleSwapFromSelectedModuleCassetteRobot = value; NotifyOfPropertyChange("CycleSwapFromSelectedModuleCassetteRobot"); } } private string _swapFromSelectedModuleCassetteRobot; public string SwapFromSelectedModuleCassetteRobot { get { return _swapFromSelectedModuleCassetteRobot; } set { _swapFromSelectedModuleCassetteRobot = value; NotifyOfPropertyChange("SwapFromSelectedModuleCassetteRobot"); } } private string _cycleSwapToSelectedModuleCassetteRobot; public string CycleSwapToSelectedModuleCassetteRobot { get { return _cycleSwapToSelectedModuleCassetteRobot; } set { _cycleSwapToSelectedModuleCassetteRobot = value; NotifyOfPropertyChange("CycleSwapToSelectedModuleCassetteRobot"); } } private string _swapToSelectedModuleCassetteRobot; public string SwapToSelectedModuleCassetteRobot { get { return _swapToSelectedModuleCassetteRobot; } set { _swapToSelectedModuleCassetteRobot = value; NotifyOfPropertyChange("SwapToSelectedModuleCassetteRobot"); } } private Visibility _cycleSwapVisibility; public Visibility CycleSwapVisibility { get => _cycleSwapVisibility; set { _cycleSwapVisibility = value; NotifyOfPropertyChange(nameof(CycleSwapVisibility)); } } private Visibility _swapVisibility; public Visibility SwapVisibility { get => _swapVisibility; set { _swapVisibility = value; NotifyOfPropertyChange(nameof(SwapVisibility)); } } #endregion public CassetteRobotViewModel() { } protected override void OnActivate() { base.OnActivate(); SwapVisibility = (bool)QueryDataClient.Instance.Service.GetConfig("CarrierRobot.TransferMode") ? Visibility.Visible : Visibility.Hidden; CycleSwapVisibility = (bool)QueryDataClient.Instance.Service.GetConfig("CarrierRobot.RunToRunMode") ? Visibility.Visible : Visibility.Hidden; } private List GetSlotsByModuleCassetteRobot(string module) { List slots = new List(); int i = _modulesCassetteRobot.IndexOf(module); int num = 0; if (i >= 0 && i < _slotsCassetteRobot.Count) num = _slotsCassetteRobot[i]; int j = 0; while (j < num) { slots.Add(j + 1); j++; } return slots; } public void Home() { InvokeClient.Instance.Service.DoOperation("CarrierRobot.Home"); } public void CassetteRobot_Pick() { var module = _modulesDic.ContainsKey(PickSelectedModuleCassetteRobot) ? _modulesDic[PickSelectedModuleCassetteRobot] : PickSelectedModuleCassetteRobot; InvokeClient.Instance.Service.DoOperation($"CarrierRobot.Pick", module, PickSelectedSlotCassetteRobot - 1, PickSelectedBladeCassetteRobot == "Blade1" ? 0 : (PickSelectedBladeCassetteRobot == "Blade2" ? 1 : 2)); } public void CassetteRobot_Place() { var module = _modulesDic.ContainsKey(PlaceSelectedModuleCassetteRobot) ? _modulesDic[PlaceSelectedModuleCassetteRobot] : PlaceSelectedModuleCassetteRobot; InvokeClient.Instance.Service.DoOperation($"CarrierRobot.Place", module, PlaceSelectedSlotCassetteRobot - 1, PlaceSelectedBladeCassetteRobot == "Blade1" ? 0 : (PlaceSelectedBladeCassetteRobot == "Blade2" ? 1 : 2)); } public void CassetteRobot_CycleSwap() { var cyclenum = (int)QueryDataClient.Instance.Service.GetConfig("CarrierRobot.RunToRunNumber"); ; var fromModule = _modulesDic.ContainsKey(CycleSwapFromSelectedModuleCassetteRobot) ? _modulesDic[CycleSwapFromSelectedModuleCassetteRobot] : CycleSwapFromSelectedModuleCassetteRobot; var toModule = _modulesDic.ContainsKey(CycleSwapToSelectedModuleCassetteRobot) ? _modulesDic[CycleSwapToSelectedModuleCassetteRobot] : CycleSwapToSelectedModuleCassetteRobot; var from = int.Parse(fromModule.Replace("Stocker", "")); var to = int.Parse(toModule.Replace("Stocker", "")); if (from == to) { MessageBox.Show("The From cannot equal to To"); return; } InvokeClient.Instance.Service.DoOperation($"CarrierRobot.CycleSwap", fromModule, toModule, 0, 0,cyclenum); } public void CassetteRobot_Swap() { var fromModule = _modulesDic.ContainsKey(SwapFromSelectedModuleCassetteRobot) ? _modulesDic[SwapFromSelectedModuleCassetteRobot] : SwapFromSelectedModuleCassetteRobot; var toModule = _modulesDic.ContainsKey(SwapToSelectedModuleCassetteRobot) ? _modulesDic[SwapToSelectedModuleCassetteRobot] : SwapToSelectedModuleCassetteRobot; InvokeClient.Instance.Service.DoOperation($"CarrierRobot.Transfer", fromModule, toModule, 0, 0); } public void SetOnline(object target) { InvokeClient.Instance.Service.DoOperation($"{target}.SetOnline"); } public void SetOffline(object target) { InvokeClient.Instance.Service.DoOperation($"{target}.SetOffline"); } public void ClosedCmd() { (GetView() as Window).Close(); } } }