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; using System.Windows.Controls; using MECF.Framework.Common.OperationCenter; using Aitex.Core.Common.DeviceData; namespace FurnaceUI.Views.Editors { public class RecipeValveViewModel : FurnaceUIViewModelBase { public Dictionary ValveSets { get; set; } = new Dictionary(); private ObservableCollection _valveTemplateColumn; public ObservableCollection ValveTemplateColumn { get => _valveTemplateColumn; set { _valveTemplateColumn = value; CreateDictDefault(); NotifyOfPropertyChange("ValveTemplateColumn"); } } public Dictionary> _recipeTemplate; public Dictionary> RecipeTemplate { get => _recipeTemplate; set { _recipeTemplate = value; ValveTemplateColumn = RecipeTemplate["Valve"]; foreach (var valve in ValveTemplateColumn) { valve.IsEnable = IsEnable; int iCount = valve.Options.Count; for (int i = 0; i < iCount; i++) { if (valve.Options[i].ControlName.Contains("Continue")) valve.Options.RemoveAt(i); } } NotifyOfPropertyChange("RecipeTemplate"); } } private void CreateDictDefault() { foreach (var item in _valveTemplateColumn) { if (!ValveSets.ContainsKey(item.ControlName)) { ValveSets.Add(item.ControlName, "Close"); } } } public bool IsSave { get; set; } public RecipeValveViewModel() { } public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式 public string RecipeType { get; set; } protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); LoadData(); } private void LoadData() { foreach (var item in ValveSets.Keys) { if (ValveSets[item] == "Open") { var templateColumn =ValveTemplateColumn.Where(x => x.ControlName == item).FirstOrDefault(); if (templateColumn != null) { templateColumn.SelectedValueIndex = 1; } } } } public void GASValveSelectionChanged(object sender, object e) { var obj = (RecipeTemplateColumnBase)((ComboBox)sender).DataContext; bool isOpen = false; if (obj.SelectedValueIndex == 0) { isOpen = false; } else if (obj.SelectedValueIndex == 1) { isOpen = true; } InvokeClient.Instance.Service.DoOperation($"PM1.{obj.ControlName}.{AITValveOperation.GVVirtualTurnValve}", isOpen); } public void GASSettingSave() { IsSave = true; if (_valveTemplateColumn != null) { foreach (var item in _valveTemplateColumn) { if (ValveSets != null) if (ValveSets.ContainsKey(item.ControlName)) { switch (item.SelectedValueIndex) { case 0: ValveSets[item.ControlName] = "Close"; break; case 1: ValveSets[item.ControlName] = "Open"; break; case 2: ValveSets[item.ControlName] = "Continue"; break; } } else { string valveSet = "Close"; switch (item.SelectedValueIndex) { case 0: valveSet = "Close"; break; case 1: valveSet = "Open"; break; case 2: valveSet = "Continue"; break; } ValveSets.Add(item.ControlName, valveSet); } } } } public void TempSetSave() { GASSettingSave(); ((Window)GetView()).DialogResult = true; } public void TempSetCancel() { IsSave = false; ((Window)GetView()).DialogResult = false; } } }