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); }
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); } }