| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 | using Aitex.Core.Common.DeviceData;using Caliburn.Micro;using Caliburn.Micro.Core;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 MECF.Framework.UI.Core.Control;using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Windows;using System.Windows.Controls;using FurnaceUI.Models;using RecipeEditorLib.RecipeModel.Params;using MECF.Framework.Common.Utilities;namespace FurnaceUI.Views.Editors{    public class RecipeMFCSettingViewModel : FurnaceUIViewModelBase    {        public Dictionary<string, bool> ExternalOutSets { get; set; } = new Dictionary<string, bool>();        public ObservableCollection<MFCData> MFCSets { get; set; }        //public MFMValue MFMSets { get; set; } = new MFMValue();        public bool IsSave { get; set; } = false;        private Visibility _gridMFCVisibility = Visibility.Hidden;        public Visibility GridMFCVisibility        {            get => _gridMFCVisibility;            set            {                _gridMFCVisibility = value;                NotifyOfPropertyChange("GridMFCVisibility");            }        }        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;                MFCTemplateColumn = RecipeTemplate["MFC"];                int index = 1;                //foreach (var item in MFCTemplateColumn)                //{                //    var isInstalled = QueryDataClient.Instance.Service.GetConfig($"PM1.MFC.{item.ModuleName}.IsMFCInstalled");                //    if (!(bool)isInstalled) continue;                //    MFCDataList.Add(new MFCData()                //    {                //        ScaleValue= SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item.ModuleName}.N2Scale"),                //        No = index,                //        ControlName = item.ModuleName,                //        SetValueParam =new DoubleParam() { Name = "SetValue", Value = item.Value.ToString() },                //        SetUnit = MFCSets[item.ControlName].SetUnit,                //        Rampng = MFCSets[item.ControlName].Rampng,                //        RampngUnit = MFCSets[item.ControlName].RampngUnit,                //        AlarmValue = MFCSets[item.ControlName].AlarmValue == null ? "None" : MFCSets[item.ControlName].AlarmValue,                //        DisplayName = SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item.ModuleName}.GasName"),                //        Unit = SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item.ModuleName}.FlowUnit"),                //        MaxValue = MFCSets[item.ControlName].MaxValue, //SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item.ModuleName}.N2Scale"),                //        MinValue = MFCSets[item.ControlName].MinValue, //SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item.ModuleName}.PhyScale"),                //        IsCheck = MFCSets[item.ControlName].IsCheck,                //        IsEnable = IsEnable                //    }); ;                //    index++;                //}                NotifyOfPropertyChange("RecipeTemplate");            }        }        private ObservableCollection<RecipeTemplateColumnBase> _mFCTemplateColumn;        public ObservableCollection<RecipeTemplateColumnBase> MFCTemplateColumn        {            get => _mFCTemplateColumn;            set            {                _mFCTemplateColumn = value;                NotifyOfPropertyChange("MFCTemplateColumn");            }        }        public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式        public string RecipeType { get; set; }        public RecipeMFCSettingViewModel()        {        }        private ObservableCollection<MFCData> oldMFCData = new ObservableCollection<MFCData>();        protected override void OnViewLoaded(object view)        {            base.OnViewLoaded(view);            RefreshUpdate();            oldMFCData.Clear();            MFCSets.ToList().ForEach(x => oldMFCData.Add((MFCData)CloneUtil.CloneObject(x)));        }        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 TextValueChanged(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 "Value":                        string strRetValue = (sender as TextBox).Text;                        if (strRetValue != "Cancel")                        {                            if (MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().SetValue.Value != strRetValue)                            {                                //MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().SetValue.SetValue(strRetValue);                            }                        }                        break;                    case "Rampng":                        strRetValue = (sender as TextBox).Text;                        if (strRetValue != "Cancel")                        {                            if (MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().Rampng.Value != strRetValue)                            {                                // MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().Rampng.SetValue(strRetValue);                            }                        }                        break;                    //case "AlarmValue":                    //    RecipeGASSettingMFCAlarmViewModel view = new RecipeGASSettingMFCAlarmViewModel(MFCDataList.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;                    //    MFCDataList.Where(x => x.ControlName == controlName).FirstOrDefault().AlarmValue = view.CurrentValue;                    //    break;                    case "MaxValue":                        strRetValue = (sender as TextBox).Text;                        if (strRetValue != "Cancel")                        {                            int max = 0;                            int.TryParse(strRetValue, out max);                            //MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().MaxValue.SetValue(max.ToString("F3"));                        }                        return;                    case "MinValue":                        strRetValue = (sender as TextBox).Text;                        if (strRetValue != "Cancel")                        {                            double min = 0;                            double.TryParse(strRetValue, out min);                            // MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().MinValue.SetValue(min.ToString("F3"));                        }                        return;                    default:                        break;                }                var mfcData = MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault();                if (mfcData != null)                {                    InvokeClient.Instance.Service.DoOperation($"PM1.{controlName}.SetMfcVirtualValue", $"{mfcData.SetValue.Value};{mfcData.Rampng.Value};{mfcData.AlarmValue}");                }                NotifyOfPropertyChange("MFCTemplateColumn");            }        }        public void MFCButtonClickCmd(object senderName, object sender, object typeName)        {            var controlName = (string)senderName;            var tempMFCTemplateColumn = MFCTemplateColumn.Where(x => x.ModuleName == controlName).FirstOrDefault();            if (tempMFCTemplateColumn != null)            {                MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().IsCheck.SetValue((!(MFCSets.Where(x => x.ControlName == controlName).FirstOrDefault().IsCheck.Value)));            }        }        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 (_mFCTemplateColumn != null)            {            }            ((Window)GetView()).DialogResult = true;        }        public void GASSettingCancel()        {            foreach (var item in MFCSets)            {                var findMFC = oldMFCData.FirstOrDefault(x => x.ControlName == item.ControlName);                if (findMFC != null)                {                    if (item.SetValue.IsSaved != findMFC.SetValue.IsSaved || item.Rampng.IsSaved != findMFC.Rampng.IsSaved)                    {                        item.UndoChanges();                        InvokeClient.Instance.Service.DoOperation($"PM1.{item.ControlName}.SetMfcVirtualValue", $"{item.SetValue.Value};{item.Rampng.Value};{item.AlarmValue}");                    }                }                else                {                    item.UndoChanges();                    InvokeClient.Instance.Service.DoOperation($"PM1.{item.ControlName}.SetMfcVirtualValue", $"{item.SetValue.Value};{item.Rampng.Value};{item.AlarmValue}");                }            }            ((Window)GetView()).DialogResult = false;        }        public void RefreshUpdate()        {            //if (MFCSets != null)            //{            //    foreach (var item in MFCSets)            //    {            //        string getMFCName = item.Replace(".Flow", "").Trim();            //        if (MFCDataList.Where(x => x.ControlName == getMFCName).FirstOrDefault() != null)            //        {            //            var mfcData = MFCDataList.Where(x => x.ControlName == getMFCName).FirstOrDefault();            //            mfcData.SetValueParam = MFCSets[item].SetValueParam;            //            mfcData.Rampng=MFCSets[item].Rampng;            //            mfcData.MaxValue =MFCSets[item].MaxValue;            //            mfcData.MinValue = MFCSets[item].MinValue;            //            mfcData.IsCheck = MFCSets[item].IsCheck;            //            mfcData.Unit = MFCSets[item].Unit;            //            // MFCDataList.Where(x => x.ControlName == item).FirstOrDefault().Name = SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item}.GasName");            //            //MFCDataList.Where(x => x.ControlName == item).FirstOrDefault().MaxValue = SystemConfigProvider.Instance.GetValueByName($"PM1.MFC.{item}.N2Scale");            //        }            //    }            //}        }        public void UnitClick(string unit, MFCData mcfData)        {            var windowManager = IoC.Get<IWindowManager>();            RecipeMFCUnitButton2SelectViewModel recipeMFCUnitButton2SelectViewModel = new RecipeMFCUnitButton2SelectViewModel();            recipeMFCUnitButton2SelectViewModel.UnitStr = unit;            if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeMFCUnitButton2SelectViewModel, null, "Button Select"))            {                mcfData.SetUnit.SetValue(recipeMFCUnitButton2SelectViewModel.SelectButtonCommand);            }        }        public void RampngUnitClick(string RampngUnit, MFCData mcfData)        {            var windowManager = IoC.Get<IWindowManager>();            RecipeMFCUnitButtonSelectViewModel recipeMFCUnitButtonSelectViewModel = new RecipeMFCUnitButtonSelectViewModel();            recipeMFCUnitButtonSelectViewModel.UnitStr = RampngUnit;            if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeMFCUnitButtonSelectViewModel, null, "The Button Select"))            {                mcfData.RampngUnit.SetValue(recipeMFCUnitButtonSelectViewModel.SelectButtonCommand);            }        }    }}
 |