示例#1
0
        //----------------------------------------------------------------------------------------------
        private void StopAlarme(int?nIdAlarme)
        {
            if (nIdAlarme == null)
            {
                return;
            }

            // Traitement de l'état opérationnel des schémas
            CSpvAlarmeDonnee alarmeData = new CSpvAlarmeDonnee(ContexteDonnee);

            if (alarmeData.ReadIfExists(nIdAlarme.Value))
            {
                List <CElementDeArbreOperationnel> listeNoeudsConcernes = new List <CElementDeArbreOperationnel>();
                if (alarmeData.EquipId != null)
                {
                    m_dicEquipementToNoeudArbreOp.TryGetValue(alarmeData.EquipId.Value, out listeNoeudsConcernes);
                }
                else if (alarmeData.SiteId != null)
                {
                    m_dicSiteToNoeudArbreOp.TryGetValue(alarmeData.SiteId.Value, out listeNoeudsConcernes);
                }
                else if (alarmeData.LiaiId != null)
                {
                    m_dicLiaisonToNoeudArbreOp.TryGetValue(alarmeData.LiaiId.Value, out listeNoeudsConcernes);
                }

                // Passe tous les coef opérationnels à 1 = OK
                PropageCoefOperationnel(listeNoeudsConcernes, 1.0);
            }


            List <CInfoElementDeSchemaSupervise> lst = null;

            if (m_dicAlarmeToElementsConcernes.TryGetValue((int)nIdAlarme, out lst))
            {
                List <CInfoElementDeSchemaSupervise> lstAPrevenir = new List <CInfoElementDeSchemaSupervise>(lst);
                while (lstAPrevenir.Count != 0)
                {
                    lstAPrevenir.Sort();
                    CInfoElementDeSchemaSupervise[] infos = lstAPrevenir.ToArray();
                    lstAPrevenir.Clear();
                    foreach (CInfoElementDeSchemaSupervise info in infos)
                    {
                        info.StopAlarme(nIdAlarme.Value);
                        CInfoElementDeSchemaSupervise parent = info.Parent;
                        if (parent != null)
                        {
                            lstAPrevenir.Add(parent);
                        }
                    }
                }
            }

            if (lst != null && lst.Count > 0)
            {
                Refresh();
            }
        }
示例#2
0
        public CSpvAlarmeDonnee GetSpvAlarme(CContexteDonnee contexteDonnee)
        {
            AssureData();

            CSpvAlarmeDonnee alarme = new CSpvAlarmeDonnee(contexteDonnee);

            if (alarme.ReadIfExists(m_nIdAlarmData))
            {
                return(alarme);
            }
            return(null);
        }
示例#3
0
        //----------------------------------------------------------------------------------------------
        private void StartAlarme(CInfoAlarmeAffichee infoAlarme)
        {
            //int nIdAlarme = infoAlarme.IdSpvEvtAlarme;
            int nIdAlarmeData = infoAlarme.IdSpvAlarmeData;

            m_dicAlarmes[nIdAlarmeData] = infoAlarme;

            // Traitement de l'état opérationnel des schémas
            CSpvAlarmeDonnee alarmeData = new CSpvAlarmeDonnee(ContexteDonnee);

            if (infoAlarme.SeverityCode >= (int)EGraviteAlarme.Major &&
                alarmeData.ReadIfExists(nIdAlarmeData))
            {
                List <CElementDeArbreOperationnel> listeNoeudsConcernes = new List <CElementDeArbreOperationnel>();
                if (alarmeData.EquipId != null)
                {
                    m_dicEquipementToNoeudArbreOp.TryGetValue(alarmeData.EquipId.Value, out listeNoeudsConcernes);
                }
                else if (alarmeData.SiteId != null)
                {
                    m_dicSiteToNoeudArbreOp.TryGetValue(alarmeData.SiteId.Value, out listeNoeudsConcernes);
                }
                else if (alarmeData.LiaiId != null)
                {
                    m_dicLiaisonToNoeudArbreOp.TryGetValue(alarmeData.LiaiId.Value, out listeNoeudsConcernes);
                }

                PropageCoefOperationnel(listeNoeudsConcernes, 0.0);
            }


            List <CInfoElementDeSchemaSupervise> lstConcernes = null;

            if (infoAlarme.InfoEquipement != null)
            {
                m_dicDirectementConcernesParEquipement.TryGetValue(infoAlarme.InfoEquipement.Id, out lstConcernes);
            }
            if (infoAlarme.InfoLiaison != null)
            {
                m_dicDirectementConcernesParLiaison.TryGetValue(infoAlarme.InfoLiaison.Id, out lstConcernes);
            }
            if (infoAlarme.InfoSite != null && infoAlarme.InfoSite.Id != null)
            {
                m_dicDirectementConcernesParSite.TryGetValue(infoAlarme.InfoSite.Id.Value, out lstConcernes);
            }
            Dictionary <CInfoElementDeSchemaSupervise, bool> dicConcernes = new Dictionary <CInfoElementDeSchemaSupervise, bool>();

            if (lstConcernes != null)
            {
                List <CInfoElementDeSchemaSupervise> lstAPrevenir = new List <CInfoElementDeSchemaSupervise>(lstConcernes);
                bool bFirstNiveau = true;
                while (lstAPrevenir.Count != 0)
                {
                    lstAPrevenir.Sort();
                    CInfoElementDeSchemaSupervise[] infos = lstAPrevenir.ToArray();
                    lstAPrevenir.Clear();
                    foreach (CInfoElementDeSchemaSupervise info in infos)
                    {
                        if (bFirstNiveau)
                        {
                            dicConcernes[info] = true;
                        }
                        info.StartAlarme(infoAlarme, false);
                        CInfoElementDeSchemaSupervise parent = info.Parent;
                        if (parent != null)
                        {
                            lstAPrevenir.Add(parent);
                        }
                    }
                    bFirstNiveau = false;
                }
                if (lstConcernes.Count > 0)
                {
                    Refresh();
                }
            }
            List <CInfoElementDeSchemaSupervise> lst = new List <CInfoElementDeSchemaSupervise>();

            lst.AddRange(dicConcernes.Keys);
            m_dicAlarmeToElementsConcernes[nIdAlarmeData] = lst;
        }