| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649 | using Aitex.Core.RT.Event;using Caliburn.Micro.Core;using MECF.Framework.Common.Alarms;using MECF.Framework.Common.OperationCenter;using MECF.Framework.UI.Client.CenterViews.Alarms;using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig;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;namespace FurnaceUI.Views.Parameter{    public class AlarmtableParameterViewModel : FurnaceUIViewModelBase    {        public bool IsPermission { get => this.Permission == 3; }        private AlarmProvider _alarmProvider = new AlarmProvider();        public Dictionary<int, ObservableCollection<AlarmParameterOperation>> TableAlarmParameterOperations = new Dictionary<int, ObservableCollection<AlarmParameterOperation>>();        public ObservableCollection<AlarmParameterOperation> AlarmParameterOperations { get; set; } = new ObservableCollection<AlarmParameterOperation>();        public ObservableCollection<string> AlarmGroups { get; set; } = new ObservableCollection<string>();        public ObservableCollection<string> TableList { get; set; } = new ObservableCollection<string>();        private int _alarmGroupsWidth = 285;        public string SelectedAlarmGroup { get; set; }        public int AlarmGroupsWidth        {            get => _alarmGroupsWidth;            set            {                _alarmGroupsWidth = value;                NotifyOfPropertyChange("AlarmGroupsWidth");            }        }        private List<string> _groupNames = new List<string>           (new string[] {            "None Specified",            "ALG01",            "ALG02",            "ALG03",            "ALG04",            "ALG05",            "ALG06",            "ALG07",            "ALG08",            "ALG09",            "ALG10"           });        public Dictionary<string, Dictionary<string, EventItem>> AllGroupAlarmList = new Dictionary<string, Dictionary<string, EventItem>>();        public List<string> GroupNames        {            get => _groupNames;            set            {                _groupNames = value;                NotifyOfPropertyChange("GroupNames");            }        }        public int SelectedAlarmTableIndex = 0;        public string EntryValue;        public Visibility _alarmTableVisibility = Visibility.Collapsed;        public Visibility AlarmTableVisibility        {            get => _alarmTableVisibility;            set            {                _alarmTableVisibility = value;                NotifyOfPropertyChange("AlarmTableVisibility");            }        }        public Visibility _alarmGroupsVisibility = Visibility.Collapsed;        public Visibility AlarmGroupsVisibility        {            get => _alarmGroupsVisibility;            set            {                _alarmGroupsVisibility = value;                if (_alarmGroupsVisibility == Visibility.Visible)                { AlarmGroupsWidth = 235; }                else                {                    AlarmGroupsWidth = 0;                }                NotifyOfPropertyChange("AlarmGroupsVisibility");            }        }        protected override void OnViewLoaded(object view)        {            base.OnViewLoaded(view);            var alarmDict = _alarmProvider.GetXmlAlarmList();            AllGroupAlarmList = alarmDict;            SetVisibility();            // AlarmGroups.Clear();            //alarmDict.Keys.ToList().ForEach(p => AlarmGroups.Add(new ShowAlarmGroup() { Name = p.Name, Display = p.Display }));            //if (AlarmGroups.Where(x => x.AlarmBoolValue == true).Count() <= 0)            //{            //    AlarmGroups[0].AlarmBoolValue = true;            //}            //for (int i = 0; i < 6; i++)            //{            //    ObservableCollection<AlarmParameterOperation> tempAlarmParameterOperation = new ObservableCollection<AlarmParameterOperation>();            //    int index = 1;            //    foreach (var item in alarmDict.Keys)            //    {            //        foreach (var temp in alarmDict[item].Keys)            //        {            //            tempAlarmParameterOperation.Add(new AlarmParameterOperation()            //            {            //                No = index,            //                ID = temp,            //                IsSave = true,            //                IsEdit = true,            //                AlarmText = alarmDict[item][temp].Message,            //                Group = "None Specified"            //            });            //            index++;            //        }            //    }            //    if (!TableAlarmParameterOperations.ContainsKey(i))            //    {            //        TableAlarmParameterOperations.Add(i, tempAlarmParameterOperation);            //    }            //}            //AlarmParameterOperations.Clear();            ////TableAlarmParameterOperations[0].ToList().ForEach(p => AlarmParameterOperations.Add(p));            //var findGroupAlarm = AllGroupAlarmList.Keys.Where(x => x.Name == AlarmGroups[0].Name).FirstOrDefault();            //var idItems = AllGroupAlarmList[findGroupAlarm].Keys.ToList();            //TableAlarmParameterOperations[SelectedAlarmTableIndex].Where(x => idItems.Contains(x.ID)).ToList().ForEach(p => AlarmParameterOperations.Add(p));            //GetAlarmParameterFormConfig();        }        private void SetVisibility()        {            if (AllGroupAlarmList != null)            {                if (AllGroupAlarmList.Count < 2)                {                    AlarmTableVisibility = Visibility.Collapsed;                    if (AllGroupAlarmList.Count != 0)                    {                        AlarmParameterOperations.Clear();                        foreach (var subitem in AllGroupAlarmList[AllGroupAlarmList.Keys.FirstOrDefault()].Keys)                        {                            AlarmParameterOperations.Add(new AlarmParameterOperation(subitem, AllGroupAlarmList[AllGroupAlarmList.Keys.FirstOrDefault()][subitem]));                        }                    }                }                else                {                    AlarmTableVisibility = Visibility.Visible;                    TableList.Clear();                    foreach (var item in AllGroupAlarmList.Keys)                    {                        TableList.Add(item);                    }                    AlarmParameterOperations.Clear();                    foreach (var subitem in AllGroupAlarmList[AllGroupAlarmList.Keys.FirstOrDefault()].Keys)                    {                        AlarmParameterOperations.Add(new AlarmParameterOperation(subitem, AllGroupAlarmList[AllGroupAlarmList.Keys.FirstOrDefault()][subitem]));                    }                }                SetAlarmGroup(AllGroupAlarmList.Keys.FirstOrDefault());            }            else            {                AlarmTableVisibility = Visibility.Hidden;            }        }        public void AlarmTableSelected(string index)        {            int tempValue = int.Parse(index);            SelectedAlarmTableIndex = tempValue;            AlarmParameterOperations.Clear();            SetAlarmGroup(index);            //TableAlarmParameterOperations[tempValue].ToList().ForEach(p => AlarmParameterOperations.Add(p));        }        private void SetAlarmGroup(string index)        {            AlarmGroups.Clear();            var categoryList = AllGroupAlarmList[index].Values.Select(x => x.Category);            foreach (var item in categoryList)            {                if (!AlarmGroups.Contains(item))                {                    AlarmGroups.Add(item);                }            }            if (AlarmGroups.Count < 2)            {                AlarmGroupsVisibility = Visibility.Collapsed;                AlarmParameterOperations.Clear();                foreach (var subitem in AllGroupAlarmList[AllGroupAlarmList.Keys.FirstOrDefault()].Keys)                {                    AlarmParameterOperations.Add(new AlarmParameterOperation(subitem, AllGroupAlarmList[AllGroupAlarmList.Keys.FirstOrDefault()][subitem]));                }            }            else            {                AlarmGroupsVisibility = Visibility.Visible;                AlarmParameterOperations.Clear();                foreach (var subitem in AllGroupAlarmList[index].Keys)                {                    AlarmParameterOperations.Add(new AlarmParameterOperation(subitem, AllGroupAlarmList[index][subitem]));                }            }        }        public void AlarmTableSave()        {            var saveStr = GetParameterStrToSave();            InvokeClient.Instance.Service.DoOperation($"System.UpdateAlarmTable", saveStr);        }        /// <summary>        /// 按照Id号或者Alarm文本查找        /// </summary>        /// <param name="alarmId"></param>        /// <param name="alarmText"></param>        public void AlarmValueFind(string alarmId, string alarmText)        {            if (alarmId != "" || alarmText != "")            {                bool bHaveValue = false;                foreach (var alarmOperation in TableAlarmParameterOperations[SelectedAlarmTableIndex])                {                    if (alarmOperation.ID.ToString() == alarmId || (alarmText != "" && alarmOperation.Description.ToLower().Contains(alarmText.ToLower())))                    {                        if (!bHaveValue)                        {                            bHaveValue = true;                            AlarmParameterOperations.Clear();                            AlarmParameterOperations.Add(alarmOperation);                        }                        else                        {                            AlarmParameterOperations.Add(alarmOperation);                        }                    }                }            }            else            {                MessageBox.Show("Please input condition! ");            }        }        private string GetParameterStrToSave()        {            List<string> tableParameters = new List<string>();            foreach (var item in TableAlarmParameterOperations.Keys)            {                List<string> ParametersStr = new List<string>();                foreach (var alarmOperation in TableAlarmParameterOperations[item])                {                    ParametersStr.Add(alarmOperation.ToString());                }                if (ParametersStr != null && ParametersStr.Count > 0)                {                    tableParameters.Add($"{item}:{String.Join(";", ParametersStr)}");                }            }            return String.Join("|", tableParameters);        }        private string GetParameterStr()        {            List<string> tableParameters = new List<string>();            foreach (var item in TableAlarmParameterOperations.Keys)            {                List<string> ParametersStr = new List<string>();                foreach (var alarmOperation in AlarmParameterOperations)                {                    if (EntryValue == "AllOn")                        alarmOperation.Bypass = true;                    else if (EntryValue == "AllOff")                        alarmOperation.Bypass = false;                    if (!alarmOperation.IsEdit || alarmOperation.Group != "None Specified" || alarmOperation.IsEdit)                    {                        ParametersStr.Add(alarmOperation.ToString());                    }                }                EntryValue = null;                if (ParametersStr != null && ParametersStr.Count > 0)                {                    tableParameters.Add($"{item}:{String.Join(";", ParametersStr)}");                }            }            return String.Join("|", tableParameters);        }        private void GetAlarmParameterFormConfig()        {            string strHeader = "PM1.RecipeEditParameter.AlarmTables";            var getConfigAlarm = SystemConfigProvider.Instance.GetValueByName($"{strHeader}.AlarmTable");            if (getConfigAlarm != null && getConfigAlarm != "")            {                var dictTableAlarm = StrParameterToAlarmOperation(getConfigAlarm);                foreach (var item in dictTableAlarm.Keys)                {                    foreach (var itemOP in dictTableAlarm[item])                    {                        var alarmOP = TableAlarmParameterOperations[item].Where(x => x.ID == itemOP.ID).FirstOrDefault();                        alarmOP.IsEdit = itemOP.IsEdit;                        alarmOP.Group = itemOP.Group;                        alarmOP.SelectedIndex = GroupNames.FindIndex(x => x == itemOP.Group);                        //  alarmOP.IsSave = itemOP.IsSave;                    }                }            }        }        private Dictionary<int, ObservableCollection<AlarmParameterOperation>> StrParameterToAlarmOperation(string parameterStr)        {            Dictionary<int, ObservableCollection<AlarmParameterOperation>> tempAlarmOperation = new Dictionary<int, ObservableCollection<AlarmParameterOperation>>();            string[] tableParameters = parameterStr.Split('|');            if (tableParameters.Length > 0)            {                foreach (var item in tableParameters)                {                    ObservableCollection<AlarmParameterOperation> alarmParameterOperations = new ObservableCollection<AlarmParameterOperation>();                    var tabelPar = item.Split(':');                    var alarmstrs = tabelPar[1].Split(';');                    if (alarmstrs != null && alarmstrs.Length > 0)                    {                        foreach (var alarmitem in alarmstrs)                        {                            alarmParameterOperations.Add(new AlarmParameterOperation(alarmitem));                        }                    }                    if (alarmParameterOperations.Count > 0)                    {                        tempAlarmOperation.Add(int.Parse(tabelPar[0]), alarmParameterOperations);                    }                }            }            return tempAlarmOperation;        }        public void AlarmTableAllOn()        {            EntryValue = "AllOn";            GetAlarmParameterOperations();            //var alarmDict = _alarmProvider.GetXmlAlarmList();            //AllGroupAlarmList = alarmDict;            //SetVisibility();        }        public void AlarmTableAllOff()        {            EntryValue = "AllOff";            GetAlarmParameterOperations();        }        public void AlarmTableCancel()        {        }        public void GetAlarmParameterOperations()        {            //if (AllGroupAlarmList[SelectedAlarmTableIndex.ToString()].AlarmBoolValue == true)            //{            //    AlarmParameterOperations.Clear();            //    //var findGroupAlarm = AllGroupAlarmList.Keys.Where(x => x.Name == AlarmGroups[0].Name).FirstOrDefault();            //    //var idItems = AllGroupAlarmList[findGroupAlarm].Keys.ToList();            //    //TableAlarmParameterOperations[SelectedAlarmTableIndex].Where(x => idItems.Contains(x.ID)).ToList().ForEach(p => AlarmParameterOperations.Add(p));            //}            if (AllGroupAlarmList == null || AllGroupAlarmList.Count == 0) return;            foreach (var item in AllGroupAlarmList[SelectedAlarmTableIndex.ToString()])            {                if (AlarmGroups.Count < 2)                {                    if (EntryValue == "AllOn")                        item.Value.Bypass = true;                    else if (EntryValue == "AllOff")                        item.Value.Bypass = false;                }                else                {                    if (SelectedAlarmGroup != null)                    {                        if (item.Value.Category == SelectedAlarmGroup)                        {                            if (EntryValue == "AllOn")                                item.Value.Bypass = true;                            else if (EntryValue == "AllOff")                                item.Value.Bypass = false;                        }                    }                }            }            AlarmParameterOperations.Clear();            IEnumerable<KeyValuePair<string, EventItem>> findGroupAlarm;            if (SelectedAlarmGroup != null)            {                findGroupAlarm = AllGroupAlarmList[SelectedAlarmTableIndex.ToString()].Where(x => x.Value.Category == SelectedAlarmGroup);            }            else            {                findGroupAlarm = AllGroupAlarmList[SelectedAlarmTableIndex.ToString()];            }            foreach (var item in findGroupAlarm)            {                AlarmParameterOperations.Add(new AlarmParameterOperation(item.Key, item.Value));            }            //  GetParameterStr();        }        public void AlarmTypeSelected(object obj)        {            var tempobj = obj;            var selectedAlarmGroup = (string)tempobj;            SelectedAlarmGroup = selectedAlarmGroup;            AlarmParameterOperations.Clear();            var findGroupAlarm = AllGroupAlarmList[SelectedAlarmTableIndex.ToString()].Where(x => x.Value.Category == selectedAlarmGroup);            foreach (var item in findGroupAlarm)            {                AlarmParameterOperations.Add(new AlarmParameterOperation(item.Key, item.Value));            }        }        public class AlarmParameterOperation : PropertyChangedBase        {            public AlarmParameterOperation()            { }            private string _alarmName;            public string AlarmName            {                get => _alarmName;                set                {                    _alarmName = value;                    NotifyOfPropertyChange("AlarmName");                }            }            private string _source;            public string Source            {                get => _source;                set                {                    _source = value;                    NotifyOfPropertyChange("Source");                }            }            private long _id;            public long ID            {                get => _id;                set                {                    _id = value;                    NotifyOfPropertyChange("ID");                }            }            private string _description;            public string Description            {                get => _description;                set                {                    _description = value;                    NotifyOfPropertyChange("Description");                }            }            private string _solution;            public string Solution            {                get => _solution;                set                {                    _solution = value;                    NotifyOfPropertyChange("Solution");                }            }            private string _explaination;            public string Explaination            {                get => _explaination;                set                {                    _explaination = value;                    NotifyOfPropertyChange("Explaination");                }            }            private bool _bypass;            public bool Bypass            {                get => _bypass;                set                {                    _bypass = value;                    NotifyOfPropertyChange("Bypass");                }            }            private string _group;            public string Group            {                get => _group;                set                {                    _group = value;                    NotifyOfPropertyChange("Group");                }            }            private bool _isEdit;            public bool IsEdit            {                get => _isEdit;                set                {                    _isEdit = value;                    NotifyOfPropertyChange("IsEdit");                }            }            private int _selectedIndex;            public int SelectedIndex            {                get => _selectedIndex;                set                {                    _selectedIndex = value;                    NotifyOfPropertyChange("SelectedIndex");                }            }            public AlarmParameterOperation(string key, EventItem eventItem)            {                AlarmName = key;                if (eventItem != null)                {                    ID = eventItem.Id;                    Source = eventItem.Source;                    Description = eventItem.Description;                    Solution = eventItem.Solution;                    Explaination = eventItem.Explaination;                    Bypass = eventItem.Bypass;                    Group = eventItem.Group.ToString();                    IsEdit = eventItem.Editable;                }            }            public AlarmParameterOperation(string alarmParameterStr)            {                if (alarmParameterStr != null)                {                    var alarmPar = alarmParameterStr.Split(',');                    if (alarmPar != null && alarmPar.Length > 0)                    {                        _id = int.Parse(alarmPar[0]);                        //_isSave = bool.Parse(alarmPar[1]);                        _group = alarmPar[2];                        _isEdit = bool.Parse(alarmPar[3]);                    }                }            }            public override string ToString()            {                string rtnString = $"{_id},{_group},{_isEdit}";                return rtnString;            }        }        public class ShowAlarmGroup : PropertyChangedBase        {            private string _name;            public string Name            {                get => _name; set                {                    _name = value;                    NotifyOfPropertyChange("Name");                }            }            private string _display;            public string Display            {                get => _display; set                {                    _display = value;                    NotifyOfPropertyChange("Display");                }            }            private bool _bvalue = false;            public bool AlarmBoolValue            {                get { return _bvalue; }                set { _bvalue = value; NotifyOfPropertyChange("AlarmBoolValue"); }            }        }    }}
 |