| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | using Aitex.Core.RT.OperationCenter;using Aitex.Core.RT.SCCore;using Aitex.Core.Util;using Aitex.Core.WCF;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MECF.Framework.Common.Alarms{ public class AlarmDefineFileManager : Singleton<AlarmDefineFileManager>    {        private Dictionary<int, AlarmDefine> _allAlarmDefineDic;        public Dictionary<int, Dictionary<int, AlarmDefine>> AlarmTables { get; private set; }        public int CurrentAlarmTable { get; set; } = 0;//default table 0        private bool _isCreateWCFChanel = false;        public void CreateWCFChanel()        {            if(!_isCreateWCFChanel)            {                Singleton<WcfServiceManager>.Instance.Initialize(new Type[]                {                    typeof(AlarmDefineService)                });                _isCreateWCFChanel = true;            }        }        public void Initialize()        {            CreateWCFChanel();            //AlarmDefineFileContext context = new AlarmDefineFileContext();            //_allAlarmDefineDic = context.GetAlarmDefine();            //foreach (var alarmdefine in _allAlarmDefineDic.Keys)            //{            //    _allAlarmDefineDic[alarmdefine].IsUse = true;            //}            //AlarmTables = new Dictionary<int, Dictionary<int, AlarmDefine>>()            //{            //    {0, _allAlarmDefineDic},            //};            //InitAlarmTable();            //OP.Subscribe($"System.UpdateAlarmTable", (string cmd, object[] args) =>            //{            //    SC.SetItemValue("PM1.RecipeEditParameter.AlarmTables.AlarmTable", args[0].ToString());            //    InitAlarmTable();            //    return true;            //});            ////for recipe            //OP.Subscribe($"System.SetAlarmTableID", (out string reason, int time, object[] param) =>            //{            //    reason = string.Empty;            //    int.TryParse(param[0].ToString(), out var currentAlarmTable);            //    CurrentAlarmTable = currentAlarmTable;            //    return true;            //});        }        private void InitAlarmTable()        {            if (!SC.ContainsItem("PM1.RecipeEditParameter.AlarmTables.AlarmTable"))                return;            var alarmTableSC = SC.GetStringValue("PM1.RecipeEditParameter.AlarmTables.AlarmTable");            if(!string.IsNullOrEmpty(alarmTableSC))            {                var alarmTables = alarmTableSC.Split('|').ToList();                foreach(var alarmTable in alarmTables)                {                    var alarmTableParas = alarmTable.Split(':');                    if(alarmTableParas.Length > 1)                    {                        int.TryParse(alarmTableParas[0], out int tableID);                        if(!AlarmTables.ContainsKey(tableID))                        {                            AlarmDefineFileContext context = new AlarmDefineFileContext();                            Dictionary<int, AlarmDefine> alarmDefineDic = context.GetAlarmDefine();                            foreach (var alarmdefine in alarmDefineDic.Keys)                            {                                alarmDefineDic[alarmdefine].IsUse = true;                            }                            AlarmTables.Add(tableID, alarmDefineDic);                        }                        var alarmDefines = alarmTableParas[1].Split(';').ToList();                        if(alarmDefines.Count > 0)                        {                            foreach(var alarmDefine in alarmDefines)                            {                                var alarmDefineItems = alarmDefine.Split(',');                                if (alarmDefineItems.Length > 3)                                {                                    int.TryParse(alarmDefineItems[0], out int alarmID);                                    bool.TryParse(alarmDefineItems[1], out bool isUse);                                    int.TryParse(alarmDefineItems[2].Replace("ALG", ""), out int alarmGroup);                                    if (AlarmTables[tableID].ContainsKey(alarmID))                                    {                                        AlarmTables[tableID][alarmID].IsUse = isUse;                                        AlarmTables[tableID][alarmID].AlarmGroup = alarmGroup;                                    }                                }                            }                        }                    }                }            }        }    }}
 |