123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627 |
- using Aitex.Core.Common.DeviceData;
- using Caliburn.Micro;
- using Caliburn.Micro.Core;
- using FurnaceUI.Models;
- using MECF.Framework.Common.DataCenter;
- using MECF.Framework.Common.OperationCenter;
- using MECF.Framework.Common.RecipeCenter;
- using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig;
- using MECF.Framework.UI.Client.CenterViews.Dialogs;
- using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
- using RecipeEditorLib.RecipeModel.Params;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- namespace FurnaceUI.Views.Editors
- {
- public class RecipeGASSettingViewModel : FurnaceUIViewModelBase
- {
- public ObservableCollection<BoolParam> ValveSets { get; set; } = new ObservableCollection<BoolParam>();
- public Dictionary<string, bool> ExternalOutSets { get; set; } = new Dictionary<string, bool>();
- //public Dictionary<string, MFCData> MFCSets { get; set; } = new Dictionary<string, MFCData>();
- public ObservableCollection<MFCData> MFCSets { get; set; } = new ObservableCollection<MFCData>();
- public Dictionary<string, MFMValue> MFMSets { get; set; } = new Dictionary<string, MFMValue>();
- //public MFMValue MFMSets { get; set; } = new MFMValue();
- public bool IsSave { get; set; } = false;
- private bool _eXOU1 = false;
- public bool EXOU1
- {
- get => _eXOU1;
- set
- {
- _eXOU1 = value;
- NotifyOfPropertyChange("EXOU1");
- }
- }
- private bool _eXOU2 = false;
- public bool EXOU2
- {
- get => _eXOU2;
- set
- {
- _eXOU2 = value;
- NotifyOfPropertyChange("EXOU2");
- }
- }
- private bool _eXOU3 = false;
- public bool EXOU3
- {
- get => _eXOU3;
- set
- {
- _eXOU3 = value;
- NotifyOfPropertyChange("EXOU3");
- }
- }
- private bool _eXOU4 = false;
- public bool EXOU4
- {
- get => _eXOU4;
- set
- {
- _eXOU4 = value;
- NotifyOfPropertyChange("EXOU4");
- }
- }
- private bool _eXOU5 = false;
- public bool EXOU5
- {
- get => _eXOU5;
- set
- {
- _eXOU5 = value;
- NotifyOfPropertyChange("EXOU5");
- }
- }
- private bool _eXOU6 = false;
- public bool EXOU6
- {
- get => _eXOU6;
- set
- {
- _eXOU6 = value;
- NotifyOfPropertyChange("EXOU6");
- }
- }
- private Visibility _gridMFCVisibility = Visibility.Hidden;
- public Visibility GridMFCVisibility
- {
- get => _gridMFCVisibility;
- set
- {
- _gridMFCVisibility = value;
- NotifyOfPropertyChange("GridMFCVisibility");
- }
- }
- private Visibility _gridMFMVisibility = Visibility.Hidden;
- public Visibility GridMFMVisibility
- {
- get => _gridMFMVisibility;
- set
- {
- _gridMFMVisibility = value;
- NotifyOfPropertyChange("GridMFMVisibility");
- }
- }
- private Visibility _gridValveVisibility = Visibility.Hidden;
- public Visibility GridValveVisibility
- {
- get => _gridValveVisibility;
- set
- {
- _gridValveVisibility = value;
- NotifyOfPropertyChange("GridValveVisibility");
- }
- }
- private string _Value;
- public string Value
- {
- get => _Value;
- set
- {
- _Value = value;
- NotifyOfPropertyChange("Value");
- }
- }
- public Dictionary<string, ObservableCollection<RecipeTemplateColumnBase>> _recipeTemplate;
- public Dictionary<string, ObservableCollection<RecipeTemplateColumnBase>> RecipeTemplate
- {
- get => _recipeTemplate;
- set
- {
- _recipeTemplate = value;
- ValveTemplateColumn = RecipeTemplate["Valve"];
- if (RecipeType != "Sub" && RecipeType != "Abort Sub" && RecipeType != "Abort")
- {
- 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);
- }
- }
- }
- MFMTemplateColumn = RecipeTemplate["MFM"];
- MFMDataList.Clear();
- foreach (var item in MFMTemplateColumn)
- {
- MFMDataList.Add(new MFMData()
- {
- ControlName = item.ControlName,
- DisplayName = item.DisplayName,
- SetValue = new StringParam() { Name = "SetValue", Value = MFMSets[item.ControlName].Value.ToString() },
- AlarmValue = MFMSets[item.ControlName].AlarmValue,
- Name = SystemConfigProvider.Instance.GetValueByName($"PM1.MFM.{item.ModuleName}.Name"),
- Unit = SystemConfigProvider.Instance.GetValueByName($"PM1.MFM.{item.ModuleName}.FlowUnit"),
- MaxValue = new DoubleParam() { Name = "MaxValue", Value = SystemConfigProvider.Instance.GetValueByName($"PM1.MFM.{item.ModuleName}.N2Scale")},
- IsEnable = IsEnable
- });
- }
- MFCTemplateColumn = RecipeTemplate["MFC"];
- foreach (var item in MFCTemplateColumn)
- {
- var isInstalled = QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{item.ModuleName}.IsMFCInstalled");
- if (!(bool)isInstalled) continue;
- var mfc = MFCSets.FirstOrDefault(x => x.ControlName == item.ModuleName);
- if (mfc != null)
- {
- mfc.SetValue.Value = item.Value.ToString();
- mfc.DisplayName = SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item.ModuleName}.GasName");
- mfc.Unit = SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item.ModuleName}.FlowUnit");
- mfc.MaxValue.Value = SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item.ModuleName}.N2Scale");
- mfc.IsEnable = IsEnable;
- }
- }
- NotifyOfPropertyChange("RecipeTemplate");
- }
- }
- private ObservableCollection<RecipeTemplateColumnBase> _valveTemplateColumn;
- public ObservableCollection<RecipeTemplateColumnBase> ValveTemplateColumn
- {
- get => _valveTemplateColumn;
- set
- {
- _valveTemplateColumn = value;
- CreateDictDefault();
- NotifyOfPropertyChange("ValveTemplateColumn");
- }
- }
- private ObservableCollection<RecipeTemplateColumnBase> _mFMTemplateColumn;
- public ObservableCollection<RecipeTemplateColumnBase> MFMTemplateColumn
- {
- get => _mFMTemplateColumn;
- set
- {
- _mFMTemplateColumn = value;
- NotifyOfPropertyChange("MFMTemplateColumn");
- }
- }
- private ObservableCollection<RecipeTemplateColumnBase> _mFCTemplateColumn;
- public ObservableCollection<RecipeTemplateColumnBase> MFCTemplateColumn
- {
- get => _mFCTemplateColumn;
- set
- {
- _mFCTemplateColumn = value;
- NotifyOfPropertyChange("MFCTemplateColumn");
- }
- }
- private ObservableCollection<MFMData> _mFMDatas = new ObservableCollection<MFMData>();
- public ObservableCollection<MFMData> MFMDataList
- {
- get => _mFMDatas;
- set
- {
- _mFMDatas = value;
- NotifyOfPropertyChange("MFMDataList");
- }
- }
- private void CreateDictDefault()
- {
- foreach (var item in _valveTemplateColumn)
- {
- var tempVal = ValveSets.FirstOrDefault(x => x.Name == item.ControlName);
- if (tempVal==null)
- {
- ValveSets.Add(new BoolParam() { Name = item.ControlName ,Value=false});
- }
- }
- }
- public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式
- public string RecipeType { get; set; }
- public RecipeGASSettingViewModel()
- {
- for (int i = 1; i < 7; i++)
- {
- ExternalOutSets.Add($"EXOU{i}", false);
- }
- }
- protected override void OnViewLoaded(object view)
- {
- base.OnViewLoaded(view);
- GridMFCVisibility = Visibility.Visible;
- RefreshUpdate();
- }
- private string ShowNumberKeyboard(Control control, string defaultValue)
- {
- NumberKeyboard numberKeyboard = new NumberKeyboard("", defaultValue);
- var point = control.PointFromScreen(new Point(0, 0));
- double wx = SystemParameters.WorkArea.Width;
- double hy = SystemParameters.WorkArea.Height;
- if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < hy)
- {
- numberKeyboard.Top = -point.Y + control.ActualHeight + 5;
- }
- else
- {
- numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;
- }
- if (-point.X + numberKeyboard.Width < wx)
- {
- numberKeyboard.Left = -point.X;
- }
- else
- {
- numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);
- }
- if ((bool)numberKeyboard.ShowDialog())
- return numberKeyboard.ValueString;
- else
- return "Cancel";
- }
- public void MFCChangedCmd(object senderName, object sender, object typeName)
- {
- var controlName = (string)senderName;
- var tempMFCTemplateColumn = MFCTemplateColumn.Where(x => x.ModuleName == controlName).FirstOrDefault();
- if (tempMFCTemplateColumn != null)
- {
- switch (typeName.ToString())
- {
- //case "Status":
- // SwitchDialog dlg = new SwitchDialog();
- // dlg.IsOpen = MFCDataList.Where(x => x.ControlName == controlName).FirstOrDefault().Status == "Open";
- // dlg.WindowStartupLocation = WindowStartupLocation.CenterScreen;
- // dlg.ShowDialog();
- // if (dlg.IsSave)
- // {
- // MFCDataList.Where(x => x.ControlName == controlName).FirstOrDefault().Status = dlg.IsOpen ? "Open" : "Close";
- // }
- // break;
- case "Value":
- string strRetValue = ShowNumberKeyboard(sender as Button, "");
- if (strRetValue != "Cancel")
- {
- //MFCTemplateColumn.Where(x => x.ControlName == controlName).FirstOrDefault().Value = double.Parse(strRetValue);
- MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().SetValue.Value = strRetValue;
- }
- break;
- case "Rampng":
- strRetValue = ShowNumberKeyboard(sender as Button, "");
- if (strRetValue != "Cancel")
- {
- MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().Rampng.Value = strRetValue;
- }
- break;
- case "AlarmValue":
- RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().AlarmValue.ToString());
- WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
- if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
- MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().AlarmValue = view.CurrentValue;
- break;
- default:
- break;
- }
- var mfcData = MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault();
- if (mfcData != null)
- {
- InvokeClient.Instance.Service.DoOperation($"PM1.{controlName}.SetMfcVirtualValue", $"{mfcData.SetValue};{mfcData.Rampng};{mfcData.AlarmValue}");
- }
- NotifyOfPropertyChange("MFCTemplateColumn");
- }
- }
- public void MFMChangedCmd(object senderName, object sender, object typeName)
- {
- var controlName = (string)senderName;
- var control = (Button)sender;
- var tempMFMTemplateColumn = MFMTemplateColumn.Where(x => x.ControlName == controlName).FirstOrDefault();
- if (tempMFMTemplateColumn != null)
- {
- switch (typeName.ToString())
- {
- case "Value":
- string strRetValue = ShowNumberKeyboard(sender as Button, $"{tempMFMTemplateColumn.Value}");
- if (strRetValue != "Cancel")
- {
- MFMTemplateColumn.Where(x => x.ControlName == controlName).FirstOrDefault().Value = double.Parse(strRetValue);
- MFMDataList.Where(x => x.ControlName == controlName).FirstOrDefault().SetValue.Value = strRetValue;
- NotifyOfPropertyChange("MFMTemplateColumn");
- }
- break;
- case "AlarmValue":
- RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFMDataList.Where(x => x.ControlName == controlName).FirstOrDefault().AlarmValue.ToString());
- WindowManager wm = IoC.Get<IWindowManager>() as WindowManager;
- if (!(bool)wm.ShowDialogWithTitle(view, null, "Select Flow Alarm Table")) break;
- MFMDataList.Where(x => x.ControlName == controlName).FirstOrDefault().AlarmValue = view.CurrentValue;
- break;
- }
- }
- }
- 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 MFCShowVauleCmd(object senderName, object sender, object maxValue)
- {
- var windowManager = IoC.Get<IWindowManager>();
- var controlName = (string)senderName;
- var control = (Button)sender;
- RecipeFlowSettingViewModel recipeFlowSettingViewModel = new RecipeFlowSettingViewModel();
- recipeFlowSettingViewModel.RecipeType = RecipeType;
- recipeFlowSettingViewModel.SelectMfcFlow = controlName;
- recipeFlowSettingViewModel.SelectFlowValue = control.Content.ToString().Contains("Force") ? "0.0" : control.Content.ToString();
- recipeFlowSettingViewModel.MaxValue = Convert.ToDouble(maxValue);
- if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeFlowSettingViewModel, null, "Recipe Flow Setting"))
- {
- Value = recipeFlowSettingViewModel.SelectFlow;
- MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().SetValue.Value = recipeFlowSettingViewModel.SelectFlow;
- var mfcData = MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault();
- if (mfcData != null)
- {
- InvokeClient.Instance.Service.DoOperation($"PM1.{controlName}.SetMfcVirtualValue", $"{mfcData.SetValue};{mfcData.Rampng};{mfcData.AlarmValue}");
- }
- NotifyOfPropertyChange("MFCTemplateColumn");
- }
- }
- public void GASSettingSave()
- {
- IsSave = true;
- if (_valveTemplateColumn != null)
- {
- foreach (var item in _valveTemplateColumn)
- {
- var tempVal = ValveSets?.FirstOrDefault(x => x.Name == item.ControlName);
- if (tempVal != null)
- {
- switch (item.SelectedValueIndex)
- {
- case 0:
- tempVal.Value = false;
- break;
- case 1:
- tempVal.Value = true;
- break;
- case 2:
- tempVal.Value = false;//"Continue"
- break;
- }
- //ValveSets[item.ControlName] = item.SelectedValueIndex == 0 ? "Close" : "Open";
- }
- else
- {
- BoolParam valveSet = new BoolParam() { Name = item.ControlName, Value = false };
- switch (item.SelectedValueIndex)
- {
- case 0:
- valveSet.Value = false;
- break;
- case 1:
- valveSet.Value = true;
- break;
- case 2:
- valveSet.Value = false;// "Continue";
- break;
- }
- ValveSets.Add(valveSet);
- }
- }
- if (_mFCTemplateColumn != null)
- {
- }
- if (_mFMTemplateColumn != null)
- {
- foreach (var item in MFMDataList)
- {
- if (MFMSets != null)
- {
- //MFMSets.Value = item.Value.ToString();
- //MFMSets.AlarmValue = item.AlarmValue.ToString();
- if (MFMSets.ContainsKey(item.ControlName))
- {
- MFMSets[item.ControlName].Value = item.SetValue.ToString();
- MFMSets[item.ControlName].AlarmValue = item.AlarmValue.ToString();
- }
- else
- {
- MFMSets.Add(item.ControlName, new MFMValue()
- {
- Value = item.SetValue.Value,
- AlarmValue = item.AlarmValue.ToString(),
- Name = item.Name,
- });
- }
- }
- }
- }
- ExternalOutSets["EXOU1"] = EXOU1;
- ExternalOutSets["EXOU2"] = EXOU2;
- ExternalOutSets["EXOU3"] = EXOU3;
- ExternalOutSets["EXOU4"] = EXOU4;
- ExternalOutSets["EXOU5"] = EXOU5;
- ExternalOutSets["EXOU6"] = EXOU6;
- ((Window)GetView()).DialogResult = true;
- }
- }
- public void GASSettingCancel()
- {
- ((Window)GetView()).DialogResult = false;
- }
- public void GASSettingSelectCmd(string cmd)
- {
- GridMFCVisibility = Visibility.Hidden;
- GridMFMVisibility = Visibility.Hidden;
- GridValveVisibility = Visibility.Hidden;
- switch (cmd)
- {
- case "MFC":
- GridMFCVisibility = Visibility.Visible;
- break;
- case "MFM":
- GridMFMVisibility = Visibility.Visible;
- break;
- case "Valve":
- GridValveVisibility = Visibility.Visible;
- break;
- default:
- break;
- }
- }
- public void RefreshUpdate()
- {
- foreach (var item in ValveTemplateColumn)
- {
- var tempVal = ValveSets.FirstOrDefault(x => x.Name == item.ControlName);
- if (ValveSets != null && tempVal != null)
- {
- if (tempVal.Value)
- { item.SelectedValueIndex = 0; }
- else
- {
- item.SelectedValueIndex = 1;
- }
- //case "Continue":
- // item.SelectedValueIndex = 2;
- // break;
- }
- //item.SelectedValueIndex = ValveSets[item.ControlName] == "Close" ? 0 : 1;
- }
- //if (MFCSets != null)
- //{
- // foreach (var item in MFCSets)
- // {
- // string getMFCName = item.Replace(".Flow", "").Trim();
- // if (MFCDataList.Where(x => x.ControlName== getMFCName).FirstOrDefault() != null)
- // {
- // MFCDataList.Where(x => x.ControlName == getMFCName).FirstOrDefault().SetValueParam = MFCSets[item].SetValueParam;
- // }
- // }
- //}
- if (ExternalOutSets != null && ExternalOutSets.Count > 0)
- {
- foreach (var item in ExternalOutSets.Keys)
- {
- switch (item)
- {
- case "EXOU1":
- EXOU1 = ExternalOutSets[item];
- break;
- case "EXOU2":
- EXOU2 = ExternalOutSets[item];
- break;
- case "EXOU3":
- EXOU3 = ExternalOutSets[item];
- break;
- case "EXOU4":
- EXOU4 = ExternalOutSets[item];
- break;
- case "EXOU5":
- EXOU5 = ExternalOutSets[item];
- break;
- case "EXOU6":
- EXOU6 = ExternalOutSets[item];
- break;
- default:
- break;
- }
- }
- }
- }
- }
- }
|