public static void SetAlarm(string myKeyId, Model_SystemAlarm mySystemAlarm) { if (_SystemAlarmBuffer.ContainsKey(myKeyId)) { int m_CurrentAlarmCount = _SystemAlarmBuffer[myKeyId].AlarmCount; if (m_CurrentAlarmCount >= _MaxAlarmCount) { _SystemAlarmBuffer[myKeyId].AlarmCount = _MaxAlarmCount; _SystemAlarmBuffer[myKeyId].UpdateStatus = true; } else { _SystemAlarmBuffer[myKeyId].AlarmCount = _SystemAlarmBuffer[myKeyId].AlarmCount + 1; _SystemAlarmBuffer[myKeyId].UpdateStatus = true; } } else { _SystemAlarmBuffer.Add(myKeyId, mySystemAlarm); _SystemAlarmBuffer[myKeyId].AlarmCount = 1; _SystemAlarmBuffer[myKeyId].UpdateStatus = true; } }
public void GetCollectionAlarm(string[] myFactoryOrganizationId) { string m_Sql = @"SELECT A.NodeId ,A.OrganizationID as OrganizationId ,A.NodeName ,A.ParentNodeId ,A.NodeType ,A.SwitchModels ,A.IpAddress ,A.RealtimeDataTable ,(case when B.StatusSum = B.StatusCount then '工作正常' else '不能连接' end) as Status ,B.[Timestamp] as Timestamp ,'' as InstanceName ,B.[Servers] as Servers FROM net_DataCollectionNet A, (Select C.BranchFactory, C.IP, C.[Servers], sum(case when C.Status = '工作正常' then 1 else 0 end) as StatusSum, count(C.Status) as StatusCount, min(case when C.Status = '工作正常' then getdate() else [Timestamp] end) as Timestamp from system_StatusNet C group by C.BranchFactory, C.IP, C.[Servers] ) B where A.OrganizationID in ({0}) and A.OrganizationID = B.BranchFactory and A.IpAddress = B.IP and A.NodeType = B.[Servers]"; string m_FactoryOrganizationId = ""; for (int i = 0; i < myFactoryOrganizationId.Length; i++) { if (i == 0) { m_FactoryOrganizationId = "'" + myFactoryOrganizationId[i] + "'"; } else { m_FactoryOrganizationId = m_FactoryOrganizationId + ",'" + myFactoryOrganizationId[i] + "'"; } } m_Sql = string.Format(m_Sql, m_FactoryOrganizationId); try { DataTable m_CollectionInterfaceInfoTable = _dataFactory.Query(m_Sql); if (m_CollectionInterfaceInfoTable != null) { for (int i = 0; i < m_CollectionInterfaceInfoTable.Rows.Count; i++) { string m_Status = m_CollectionInterfaceInfoTable.Rows[i]["Status"] == DBNull.Value ? "" : m_CollectionInterfaceInfoTable.Rows[i]["Status"].ToString(); if (m_Status != "工作正常") { Model_SystemAlarm m_SystemAlarmGroup = new Model_SystemAlarm(); m_SystemAlarmGroup.NodeId = m_CollectionInterfaceInfoTable.Rows[i]["NodeId"].ToString(); m_SystemAlarmGroup.Ip = m_CollectionInterfaceInfoTable.Rows[i]["IpAddress"] == DBNull.Value ? "" : m_CollectionInterfaceInfoTable.Rows[i]["IpAddress"].ToString(); m_SystemAlarmGroup.OrganizationId = m_CollectionInterfaceInfoTable.Rows[i]["OrganizationId"] == DBNull.Value ? "" : m_CollectionInterfaceInfoTable.Rows[i]["OrganizationId"].ToString(); m_SystemAlarmGroup.NodeName = m_CollectionInterfaceInfoTable.Rows[i]["NodeName"] == DBNull.Value ? "" : m_CollectionInterfaceInfoTable.Rows[i]["NodeName"].ToString(); m_SystemAlarmGroup.StartTime = m_CollectionInterfaceInfoTable.Rows[i]["Timestamp"] == DBNull.Value ? "" : m_CollectionInterfaceInfoTable.Rows[i]["Timestamp"].ToString(); m_SystemAlarmGroup.Type = m_CollectionInterfaceInfoTable.Rows[i]["Servers"] == DBNull.Value ? "" : m_CollectionInterfaceInfoTable.Rows[i]["Servers"].ToString(); m_SystemAlarmGroup.NodeType = m_CollectionInterfaceInfoTable.Rows[i]["NodeType"] == DBNull.Value ? "" : m_CollectionInterfaceInfoTable.Rows[i]["NodeType"].ToString(); m_SystemAlarmGroup.InstanceName = m_CollectionInterfaceInfoTable.Rows[i]["InstanceName"] == DBNull.Value ? "" : m_CollectionInterfaceInfoTable.Rows[i]["InstanceName"].ToString(); m_SystemAlarmGroup.AlarmDescription = m_SystemAlarmGroup.NodeName; Buffer_SystemAlarm.SetAlarm(m_SystemAlarmGroup.Type + "_" + m_SystemAlarmGroup.NodeType + "_" + m_SystemAlarmGroup.NodeId + "_" + m_SystemAlarmGroup.InstanceName, m_SystemAlarmGroup); } } } } catch { } }
public void GetAmmeterAlarm(string[] myFactoryOrganizationId) { DataTable m_DataBaseInfoTable = GetDataBaseByOrganizationId(myFactoryOrganizationId); if (m_DataBaseInfoTable != null) { string m_SqlTemplate = @"Select N.NodeId ,N.NodeName ,N.ParentNodeId ,N.NodeType ,N.NodeType as Servers ,N.SwitchModels ,N.InstanceName ,M.StatusCount ,M.StatusSum ,M.IpAddress ,M.OrganizationID as OrganizationId ,(case when M.StatusCount - M.StatusSum > 0 then 0 else 1 end) as Status from ( Select A.IpAddress ,A.OrganizationID ,A.ElectricRoom ,count(A.Status) as StatusCount ,sum(case when A.Status = '正常读取' then 1 else 0 end) as StatusSum from {0}.dbo.AmmeterContrast A where EnabledFlag = 1 group by A.OrganizationID,A.ElectricRoom,A.IpAddress) M, net_DataCollectionNet N where N.NodeType = 'Ammeter' and M.IpAddress = N.IpAddress and M.OrganizationID = N.OrganizationID and M.ElectricRoom = N.NodeName and N.OrganizationID = '{1}'"; //A.IpAddress is not null and A.IpAddress <> '' and for (int i = 0; i < myFactoryOrganizationId.Length; i++) { DataRow[] m_DataBaseRow = m_DataBaseInfoTable.Select(string.Format("OrganizationId = '{0}'", myFactoryOrganizationId[i])); if (m_DataBaseRow.Length > 0) { string m_Sql = m_SqlTemplate; m_Sql = string.Format(m_Sql, m_DataBaseRow[0]["MeterDatabase"].ToString(), myFactoryOrganizationId[i]); try { DataTable m_AmmeterInfoTable = _dataFactory.Query(m_Sql); if (m_AmmeterInfoTable != null) { for (int j = 0; j < m_AmmeterInfoTable.Rows.Count; j++) { string m_Status = m_AmmeterInfoTable.Rows[j]["Status"] == DBNull.Value ? "0" : m_AmmeterInfoTable.Rows[j]["Status"].ToString(); if (m_Status != "1") { Model_SystemAlarm m_SystemAlarmGroup = new Model_SystemAlarm(); m_SystemAlarmGroup.NodeId = m_AmmeterInfoTable.Rows[j]["NodeId"].ToString(); m_SystemAlarmGroup.Ip = m_AmmeterInfoTable.Rows[j]["IpAddress"] == DBNull.Value ? "" : m_AmmeterInfoTable.Rows[j]["IpAddress"].ToString(); m_SystemAlarmGroup.OrganizationId = m_AmmeterInfoTable.Rows[j]["OrganizationId"] == DBNull.Value ? "" : m_AmmeterInfoTable.Rows[j]["OrganizationId"].ToString(); m_SystemAlarmGroup.NodeName = m_AmmeterInfoTable.Rows[j]["NodeName"] == DBNull.Value ? "" : m_AmmeterInfoTable.Rows[j]["NodeName"].ToString(); m_SystemAlarmGroup.StartTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); m_SystemAlarmGroup.Type = m_AmmeterInfoTable.Rows[j]["Servers"] == DBNull.Value ? "" : m_AmmeterInfoTable.Rows[j]["Servers"].ToString() + "S"; m_SystemAlarmGroup.NodeType = m_AmmeterInfoTable.Rows[j]["NodeType"] == DBNull.Value ? "" : m_AmmeterInfoTable.Rows[j]["NodeType"].ToString(); m_SystemAlarmGroup.InstanceName = m_AmmeterInfoTable.Rows[j]["InstanceName"] == DBNull.Value ? "" : m_AmmeterInfoTable.Rows[j]["InstanceName"].ToString(); m_SystemAlarmGroup.AlarmDescription = m_SystemAlarmGroup.NodeName; Buffer_SystemAlarm.SetAlarm(m_SystemAlarmGroup.Type + "_" + m_SystemAlarmGroup.NodeType + "_" + m_SystemAlarmGroup.NodeId + "_" + m_SystemAlarmGroup.InstanceName, m_SystemAlarmGroup); } } } } catch { } } } } }
public void GetCollectionSoftwareAlarm(string[] myFactoryOrganizationId) { string m_Sql = @"SELECT A.NodeId ,A.OrganizationID as OrganizationId ,A.NodeName ,A.ParentNodeId ,A.NodeType ,A.SwitchModels ,A.IpAddress ,A.RealtimeDataTable ,B.Status ,B.[Timestamp] as Timestamp ,B.InstanceName ,B.[Servers] ,B.Remark FROM net_DataCollectionNet A, system_StatusNet B where A.OrganizationID in ({0}) and A.OrganizationID = B.BranchFactory and A.IpAddress = B.IP and A.NodeType = 'DataComputer' and B.[Servers] = 'Software'"; string m_FactoryOrganizationId = ""; for (int i = 0; i < myFactoryOrganizationId.Length; i++) { if (i == 0) { m_FactoryOrganizationId = "'" + myFactoryOrganizationId[i] + "'"; } else { m_FactoryOrganizationId = m_FactoryOrganizationId + ",'" + myFactoryOrganizationId[i] + "'"; } } m_Sql = string.Format(m_Sql, m_FactoryOrganizationId); try { DataTable m_SoftwareInfoTable = _dataFactory.Query(m_Sql); if (m_SoftwareInfoTable != null) { for (int i = 0; i < m_SoftwareInfoTable.Rows.Count; i++) { bool m_Status = false; if (m_SoftwareInfoTable.Rows[i]["Timestamp"] != DBNull.Value) { DateTime m_TimeStamp = DateTime.Parse(m_SoftwareInfoTable.Rows[i]["Timestamp"].ToString()); if (m_TimeStamp.AddMinutes(10) >= DateTime.Now) //如果记录的时间与当前时间间隔不到10分钟表示数据采集软件运行正常 { m_Status = true; } } if (m_Status == false) { Model_SystemAlarm m_SystemAlarmGroup = new Model_SystemAlarm(); m_SystemAlarmGroup.NodeId = m_SoftwareInfoTable.Rows[i]["NodeId"].ToString(); m_SystemAlarmGroup.Ip = m_SoftwareInfoTable.Rows[i]["IpAddress"] == DBNull.Value ? "" : m_SoftwareInfoTable.Rows[i]["IpAddress"].ToString(); m_SystemAlarmGroup.OrganizationId = m_SoftwareInfoTable.Rows[i]["OrganizationId"] == DBNull.Value ? "" : m_SoftwareInfoTable.Rows[i]["OrganizationId"].ToString(); m_SystemAlarmGroup.NodeName = m_SoftwareInfoTable.Rows[i]["NodeName"] == DBNull.Value ? "" : m_SoftwareInfoTable.Rows[i]["NodeName"].ToString(); m_SystemAlarmGroup.StartTime = m_SoftwareInfoTable.Rows[i]["Timestamp"] == DBNull.Value ? "" : m_SoftwareInfoTable.Rows[i]["Timestamp"].ToString(); m_SystemAlarmGroup.Type = m_SoftwareInfoTable.Rows[i]["Servers"] == DBNull.Value ? "" : m_SoftwareInfoTable.Rows[i]["Servers"].ToString(); m_SystemAlarmGroup.NodeType = m_SoftwareInfoTable.Rows[i]["NodeType"] == DBNull.Value ? "" : m_SoftwareInfoTable.Rows[i]["NodeType"].ToString(); m_SystemAlarmGroup.InstanceName = m_SoftwareInfoTable.Rows[i]["InstanceName"] == DBNull.Value ? "" : m_SoftwareInfoTable.Rows[i]["InstanceName"].ToString(); m_SystemAlarmGroup.AlarmDescription = m_SystemAlarmGroup.Ip; Buffer_SystemAlarm.SetAlarm(m_SystemAlarmGroup.Type + "_" + m_SystemAlarmGroup.NodeType + "_" + m_SystemAlarmGroup.NodeId + "_" + m_SystemAlarmGroup.InstanceName, m_SystemAlarmGroup); } } } } catch { } }
public void MonitorNetworkStatus(string[] myFactoryOrganizationId, string myGroupIpAddress) { //分厂服务器与数据采集计算机之间的网络 string m_Sql = @"SELECT A.NodeId ,A.OrganizationID as OrganizationId ,A.NodeName ,A.ParentNodeId ,A.NodeType ,A.SwitchModels ,A.IpAddress ,A.RealtimeDataTable ,A.InstanceName FROM net_DataCollectionNet A where A.OrganizationID in ({0}) and (A.NodeType = '{1}' or A.NodeType = '{2}')"; string m_FactoryOrganizationId = ""; for (int i = 0; i < myFactoryOrganizationId.Length; i++) { if (i == 0) { m_FactoryOrganizationId = "'" + myFactoryOrganizationId[i] + "'"; } else { m_FactoryOrganizationId = m_FactoryOrganizationId + ",'" + myFactoryOrganizationId[i] + "'"; } } m_Sql = string.Format(m_Sql, m_FactoryOrganizationId, "DataComputer", "FactoryServer"); try { DataTable m_DataBaseInfoTable = _dataFactory.Query(m_Sql); if (m_DataBaseInfoTable != null) { for (int i = 0; i < m_DataBaseInfoTable.Rows.Count; i++) { bool m_DataComputerNetworkStatus = false; string m_IpAddress = m_DataBaseInfoTable.Rows[i]["IpAddress"] == DBNull.Value ? "" : m_DataBaseInfoTable.Rows[i]["IpAddress"].ToString(); if (m_DataBaseInfoTable.Rows[i]["NodeType"].ToString() == "FactoryServer") //当前节点是分厂服务器时,实际上ping的是分厂服务器到集团服务器的网络 { m_DataComputerNetworkStatus = GetNetworkStatus(myGroupIpAddress); } else { m_DataComputerNetworkStatus = GetNetworkStatus(m_IpAddress); //当前节点是数据采集计算机时,实际上ping的是分厂服务器到采集计算机的网络 } if (m_DataComputerNetworkStatus == false) { Model_SystemAlarm m_SystemAlarmGroup = new Model_SystemAlarm(); m_SystemAlarmGroup.NodeId = m_DataBaseInfoTable.Rows[i]["NodeId"].ToString(); m_SystemAlarmGroup.Ip = m_IpAddress; m_SystemAlarmGroup.OrganizationId = m_DataBaseInfoTable.Rows[i]["OrganizationId"].ToString(); m_SystemAlarmGroup.NodeName = m_DataBaseInfoTable.Rows[i]["NodeName"].ToString(); m_SystemAlarmGroup.StartTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); m_SystemAlarmGroup.Type = "Network"; m_SystemAlarmGroup.NodeType = m_DataBaseInfoTable.Rows[i]["NodeType"].ToString(); m_SystemAlarmGroup.InstanceName = m_DataBaseInfoTable.Rows[i]["InstanceName"] == DBNull.Value ? "" : m_DataBaseInfoTable.Rows[i]["InstanceName"].ToString(); m_SystemAlarmGroup.AlarmDescription = m_SystemAlarmGroup.Ip; Buffer_SystemAlarm.SetAlarm(m_SystemAlarmGroup.Type + "_" + m_SystemAlarmGroup.NodeType + "_" + m_SystemAlarmGroup.NodeId + "_" + m_SystemAlarmGroup.InstanceName, m_SystemAlarmGroup); } } } } catch { } }