Пример #1
0
        /// <summary>
        /// 更新界面状态
        /// </summary>
        /// <param name="sourceomc"></param>
        /// <param name="obj"></param>
        /// <param name="name"></param>
        /// <param name="detail"></param>
        /// <param name="occurtime"></param>
        /// <returns></returns>
        public bool RaiseNMAlarm(string sourceomc, string obj, string name, string detail, DateTime occurtime)
        {
            TKAlarm tkalarm = null;

            try
            {
                lock (m_NMAlarms)
                {
                    if (!m_NMAlarms.ContainsKey(sourceomc))
                    {
                        return(false);
                    }

                    if (!m_NMAlarms[sourceomc].ContainsKey(obj))
                    {
                        return(false);
                    }

                    if (!m_NMAlarms[sourceomc][obj].ContainsKey(name))
                    {
                        return(false);
                    }

                    NMAlarm a = m_NMAlarms[sourceomc][obj][name];
                    if (a.TKSn != "" && a.ClearTime == "")
                    {
                        a.LastOccurTime = occurtime.ToString();
                        return(false); // 告警已经发生过,尚未恢复
                    }

                    a.SourceOMC     = sourceomc;
                    a.Object        = obj;
                    a.AlarmName     = name;
                    a.OccurTime     = occurtime.ToString();
                    a.LastOccurTime = occurtime.ToString();
                    a.ClearTime     = "";
                    a.Detail        = detail;
                    a.TKSn          = "";
                    a.ActiveTable   = UniteTKActiveTable;
                    a.ResumeTable   = UniteTKResumeTable;

                    tkalarm = ConvertNMToTKAlarm(a);

                    try
                    {
                        TempStorageHelper.Instance().Store <NMAlarm>(Convert.ToInt64(a.TKSn), a);
                        SqlHelper.ExecuteNonQuery(Connstr, CommandType.Text, a.GetSql());
                        TempStorageHelper.Instance().Clear <NMAlarm>(Convert.ToInt64(a.TKSn));
                    }
                    catch (Exception ex)
                    {
                        // 存储网管告警出异常不再发出告警
                        // 不继续抛出告警, 允许继续往服务器发送告警
                        SendLog(ex.ToString());
                    }
                }

                try
                {
                    if (tkalarm != null)
                    {
                        SendAlarm(tkalarm);
                    }
                }
                catch (Exception ex)
                {
                    // 向服务器发送告警失败,只记录日志,不影响程序运行
                    SendLog(ex.ToString());
                    return(false);
                }
            }
            catch (Exception ex)
            {
                SendLog(ex.ToString());
                return(false);
            }

            return(true);
        }
Пример #2
0
        /// <summary>
        /// 清楚告警,此处没用到
        /// </summary>
        /// <param name="sourceomc"></param>
        /// <param name="obj"></param>
        /// <param name="name"></param>
        /// <param name="cleartime"></param>
        /// <returns></returns>
        public bool ClearNMAlarm(string sourceomc, string obj, string name, DateTime cleartime)
        {
            try
            {
                TKAlarm tkalarm = null;
                lock (m_NMAlarms)
                {
                    if (!m_NMAlarms.ContainsKey(sourceomc))
                    {
                        return(false);
                    }

                    if (!m_NMAlarms[sourceomc].ContainsKey(obj))
                    {
                        return(false);
                    }

                    if (!m_NMAlarms[sourceomc][obj].ContainsKey(name))
                    {
                        return(false);
                    }

                    NMAlarm a = m_NMAlarms[sourceomc][obj][name];
                    if (a.TKSn == "" || a.ClearTime != "")
                    {
                        return(false); //告警已经恢复,恢复动作无效
                    }
                    a.ClearTime   = cleartime.ToString();
                    a.ActiveTable = UniteTKActiveTable;
                    a.ResumeTable = UniteTKResumeTable;

                    tkalarm = ConvertNMToTKAlarm(a);

                    try
                    {
                        SqlHelper.ExecuteNonQuery(Connstr, CommandType.Text, a.GetSql());
                    }
                    catch (Exception ex)
                    {
                        // 存储网管告警出异常不再发出告警
                        // 不继续抛出告警, 允许继续往服务器发送告警
                        SendLog(ex.ToString());
                    }
                }

                try
                {
                    if (tkalarm != null)
                    {
                        SendAlarm(tkalarm);
                    }
                }
                catch (Exception ex)
                {
                    SendLog(ex.ToString());
                    return(false);
                }
            }
            catch (Exception ex)
            {
                SendLog(ex.ToString());
                return(false);
            }

            return(true);
        }