Esempio n. 1
0
        public List <AlarmInfoEx> GetDeviceRTAlarmInfoEx(RealtimeAlarmQueryParam queryParam)
        {
            List <AlarmInfoEx> rtAlarmList = new List <AlarmInfoEx>();

            string sqlRealtimeQuery = $"select * from `realtime-alarm-[{queryParam.companyCode}]` where ";

            if (queryParam.deviceCode != "")
            {
                sqlRealtimeQuery = sqlRealtimeQuery + $"DeviceCode = '{queryParam.deviceCode}' and ";
            }


            string tempAlarmLevelList = string.Join(",", queryParam.alarmLevel.ToArray());

            sqlRealtimeQuery = sqlRealtimeQuery + $"AlarmLevel in ({tempAlarmLevelList})";


            try
            {
                MySqlDataReader queryAlarmReader = Common.Helper.MySqlHelper.ExecuteReader(_parentCompanyHelper.GetCompanyDatabaseName(), CommandType.Text, sqlRealtimeQuery, null);

                while (queryAlarmReader.Read())
                {
                    AlarmInfoEx tempAlarmInfo = new AlarmInfoEx();

                    tempAlarmInfo.AlarmInfoObject = new AlarmInfo();

                    tempAlarmInfo.DeviceCode = queryAlarmReader["DeviceCode"] == null ? "" : queryAlarmReader["DeviceCode"].ToString();//(string)queryAlarmReader["AlarmName"];
                    tempAlarmInfo.AlarmInfoObject.AlarmDate = queryAlarmReader["AlarmDate"] == null ? "" : ((DateTime)queryAlarmReader["AlarmDate"]).ToString("yyyy-MM-dd hh:mm:ss");
                    //tempAlarmInfo.RecoveryDate = queryAlarmReader["RecoverDate"] == null ? "" : ((DateTime)queryAlarmReader["RecoverDate"]).ToString("yyyy-MM-dd hh:mm:ss"); //(string)queryAlarmReader["RecoveryDate"];
                    tempAlarmInfo.AlarmInfoObject.AlarmName  = queryAlarmReader["AlarmName"] == null ? "" : queryAlarmReader["AlarmName"].ToString();//(string)queryAlarmReader["AlarmName"];
                    tempAlarmInfo.AlarmInfoObject.AlarmLevel = queryAlarmReader["AlarmLevel"] == null ? 1 : (int)queryAlarmReader["AlarmLevel"];
                    tempAlarmInfo.AlarmInfoObject.AlarmType  = queryAlarmReader["AlarmType"] == null ? ALARM_TYPE.ALARM_OCCUR : (ALARM_TYPE)(int)queryAlarmReader["AlarmType"];

                    //long temp = int.Parse(queryAlarmReader["AlarmSpanTime"].ToString());

                    //tempAlarmInfo.AlarmInfoObject.AlarmSpanTime = queryAlarmReader["AlarmSpanTime"] == null ? 0 : int.Parse(queryAlarmReader["AlarmSpanTime"].ToString());

                    tempAlarmInfo.AlarmInfoObject.DeviceType     = queryAlarmReader["DeviceType"] == null ? "" : queryAlarmReader["DeviceType"].ToString();
                    tempAlarmInfo.AlarmInfoObject.DeviceName     = queryAlarmReader["DeviceName"] == null ? "" : queryAlarmReader["DeviceName"].ToString();
                    tempAlarmInfo.AlarmInfoObject.AlarmCondition = queryAlarmReader["AlarmCondition"] == null ? "" : queryAlarmReader["AlarmCondition"].ToString();
                    tempAlarmInfo.AlarmInfoObject.AlarmHelp      = queryAlarmReader["AlarmHelp"] == null ? "" : queryAlarmReader["AlarmHelp"].ToString();
                    tempAlarmInfo.AlarmInfoObject.Reserved1      = queryAlarmReader["Reserved1"] == null ? "" : queryAlarmReader["Reserved1"].ToString();
                    tempAlarmInfo.AlarmInfoObject.Reserved2      = queryAlarmReader["Reserved2"] == null ? "" : queryAlarmReader["Reserved2"].ToString();
                    tempAlarmInfo.AlarmInfoObject.Reserved3      = queryAlarmReader["Reserved3"] == null ? "" : queryAlarmReader["Reserved3"].ToString();
                    tempAlarmInfo.AlarmInfoObject.Reserved4      = queryAlarmReader["Reserved4"] == null ? "" : queryAlarmReader["Reserved4"].ToString();
                    tempAlarmInfo.AlarmInfoObject.Reserved5      = queryAlarmReader["Reserved5"] == null ? "" : queryAlarmReader["Reserved5"].ToString();

                    rtAlarmList.Add(tempAlarmInfo);
                }
            }
            catch (Exception ex)
            {
                LoggerManager.Log.Error($"{queryParam.companyCode}:实时故障查询失败!,SQL = {sqlRealtimeQuery}");
            }



            return(rtAlarmList);
        }
Esempio n. 2
0
        private void AlarmListHandler(string[] AlarmList)
        {
            //更新设备的Alarm状态
            Dictionary <string, DeviceBase> updateAlarmDeviceInfo = new Dictionary <string, DeviceBase>();

            //////////////////////////////////////////////////////////
            //add by fuhui 2018-08-10
            //声明MySql 实时数据库内存表的更新条件
            Dictionary <string, AlarmInfoEx> occurAlarmList = new Dictionary <string, AlarmInfoEx>();
            List <string> recoveryAlarmNameList             = new List <string>();
            List <string> recoveryDeviceCodeList            = new List <string>();

            // end by fuhui
            ///////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < AlarmList.Count(); i++)
            {
                AlarmListInfo companyAlarm = JsonConvert.DeserializeObject <AlarmListInfo>(AlarmList[i]);
                AnalzeAlarmList(companyAlarm);

                string tempUpdateAlarmKey = $"{ companyAlarm.DeviceInfo.CompanyCode}-{ companyAlarm.DeviceInfo.DeviceCode}";

                if (!updateAlarmDeviceInfo.ContainsKey(tempUpdateAlarmKey))
                {
                    updateAlarmDeviceInfo.Add(tempUpdateAlarmKey, companyAlarm.DeviceInfo);
                }

                //////////////////////////////////////////////////////////
                //add by fuhui 2018-08-10
                //增加内存表的更新条件
                string tempAlarmDeviceCode = companyAlarm.DeviceInfo.DeviceCode;
                for (int j = 0; j < companyAlarm.AlarmList.Count(); j++)
                {
                    string      tempAlarmKey    = $"{tempAlarmDeviceCode}-{companyAlarm.AlarmList[j].AlarmName}";
                    AlarmInfoEx tempAlarmObject = new AlarmInfoEx();

                    tempAlarmObject.DeviceCode      = tempAlarmDeviceCode;
                    tempAlarmObject.AlarmInfoObject = companyAlarm.AlarmList[j];



                    if (companyAlarm.AlarmList[j].AlarmType == ALARM_TYPE.ALARM_OCCUR)//增加实时故障信息
                    {
                        if (!occurAlarmList.ContainsKey(tempAlarmKey))
                        {
                            occurAlarmList.Add(tempAlarmKey, tempAlarmObject);
                        }
                        else
                        {
                            occurAlarmList[tempAlarmKey] = tempAlarmObject;
                        }
                    }
                    else if (companyAlarm.AlarmList[j].AlarmType == ALARM_TYPE.ALRAM_RECOVERY) //删除实时故障信息
                    {
                        if (!recoveryAlarmNameList.Contains(tempAlarmObject.AlarmInfoObject.AlarmName))
                        {
                            recoveryAlarmNameList.Add(tempAlarmObject.AlarmInfoObject.AlarmName);
                        }

                        if (!recoveryDeviceCodeList.Contains(tempAlarmObject.DeviceCode))
                        {
                            recoveryDeviceCodeList.Add(tempAlarmObject.DeviceCode);
                        }
                    }
                }
                //end by fuhui
                ///////////////////////////////////////////
            }

            if (AlarmList.Count() > 0)
            {
                var client = RedisManager.GetClient();

                //更新公司实时故障的状态
                string DevictRedisHashName = "DeviceStatusTable";
                var    alarmUUID           = Guid.NewGuid().ToString();
                client.HSet(DevictRedisHashName, $"[{_parentCompanyHelper.GetCompanyInfo().CompanyCode}]-AlarmUpdateCode", alarmUUID);

                foreach (KeyValuePair <string, DeviceBase> pair in updateAlarmDeviceInfo)
                {
                    //更新实时故障的状态
                    string DataRedisHashName = $"[{ pair.Value.CompanyCode}]-[{ pair.Value.DeviceCode}]";
                    alarmUUID = Guid.NewGuid().ToString();
                    client.HSet(DataRedisHashName, $"AlarmUpdateCode", alarmUUID);
                }



                //更新MySQL数据库中实时故障数据内存表
            }



            if (occurAlarmList.Count() > 0)
            {
                _realtimeAlarmHelper.InsertRealtimeAlarm(occurAlarmList);
            }


            if (recoveryDeviceCodeList.Count() > 0)
            {
                _realtimeAlarmHelper.DeleteRealtimeAlarm(recoveryAlarmNameList, recoveryDeviceCodeList);
            }
        }