public async Task WriteAlarmListToDB(AlarmListInfo alarmListInfo) { await Task.Run(() => { string insertSQL = $"Insert into `{_alarmTableName}` values "; for (int i = 0; i < alarmListInfo.AlarmList.Count(); i++) { AlarmInfo temiAlarmItem = alarmListInfo.AlarmList[i]; string alarmSql; alarmSql = $"(null,'{temiAlarmItem.AlarmDate}','{temiAlarmItem.RecoveryDate}',"; alarmSql += $"'{temiAlarmItem.AlarmName}',{temiAlarmItem.AlarmLevel},"; alarmSql += $"{(int)temiAlarmItem.AlarmType},{temiAlarmItem.AlarmSpanTime},"; alarmSql += $"'{temiAlarmItem.DeviceType}','{temiAlarmItem.DeviceName}',"; alarmSql += $"'{temiAlarmItem.AlarmCondition}','{temiAlarmItem.AlarmHelp}',"; alarmSql += $"'{temiAlarmItem.Reserved1}','{temiAlarmItem.Reserved2}',"; alarmSql += $"'{temiAlarmItem.Reserved3}','{temiAlarmItem.Reserved4}',"; alarmSql += $"'{temiAlarmItem.Reserved5}'),"; insertSQL += alarmSql; } insertSQL = insertSQL.Remove(insertSQL.Length - 1, 1); try { Common.Helper.MySqlHelper.ExecuteNonQuery(Conn, CommandType.Text, insertSQL, null); } catch (Exception ex) { LoggerManager.Log.Error($"{_parentDeviceInfo.CompanyCode}-{_parentDeviceInfo.DeviceCode}:向数据库写故障数据失败!,SQL = {insertSQL}"); } }); }
public async void WriteAlarmListToDB(AlarmListInfo alarmListInfo) { string insertSQL = $"Insert into `{_alarmTableName}` values "; for (int i = 0; i < alarmListInfo.AlarmList.Count(); i++) { AlarmInfo temiAlarmItem = alarmListInfo.AlarmList[i]; string alarmSql; alarmSql = $"(null,'{temiAlarmItem.AlarmDate}','{temiAlarmItem.RecoveryDate}',"; alarmSql += $"'{temiAlarmItem.AlarmName}',{temiAlarmItem.AlarmLevel},"; alarmSql += $"{temiAlarmItem.AlarmLevel},{temiAlarmItem.AlarmType},"; alarmSql += $"'{temiAlarmItem.DeviceType}','{temiAlarmItem.DeviceName}',"; alarmSql += $"'{temiAlarmItem.AlarmCondition}','{temiAlarmItem.AlarmHelp}',"; alarmSql += $"'{temiAlarmItem.Reserved1}','{temiAlarmItem.Reserved2}',"; alarmSql += $"'{temiAlarmItem.Reserved3}','{temiAlarmItem.Reserved4}',"; alarmSql += $"'{temiAlarmItem.Reserved5}'),"; insertSQL += alarmSql; } insertSQL.Remove(insertSQL.Length - 1, 1); try { Common.Helper.MySqlHelper.ExecuteNonQuery(Conn, CommandType.Text, insertSQL, null); } catch (Exception ex) { LoggerManager.Log.Error("向数据库写故障失败!"); } }
private void AlarmListHandler(string[] AlarmList) { for (int i = 0; i < AlarmList.Count(); i++) { AlarmListInfo companyAlarm = JsonConvert.DeserializeObject <AlarmListInfo>(AlarmList[i]); AnalzeAlarmList(companyAlarm); } }
private void AnalzeAlarmList(AlarmListInfo companyAlarmList) { AlarmListInfo toDbAlarmListInfo = new AlarmListInfo(); toDbAlarmListInfo.DeviceInfo = companyAlarmList.DeviceInfo; for (int i = 0; i < companyAlarmList.AlarmList.Count(); i++) { AlarmInfo alarmItem = companyAlarmList.AlarmList[i]; string deviceAlarmKey = $"RT-ALARM-[{companyAlarmList.DeviceInfo.CompanyCode}-{companyAlarmList.DeviceInfo.DeviceCode}]"; string alarmMessage = _redisClient.HGet(deviceAlarmKey, alarmItem.AlarmName); if (alarmMessage == null) { if (alarmItem.AlarmType == ALARM_TYPE.ALARM_OCCUR) { string alarmValue = JsonConvert.SerializeObject(alarmItem); _redisClient.HSet(deviceAlarmKey, alarmItem.AlarmName, alarmValue); } else { alarmItem.RecoveryDate = alarmItem.AlarmDate; toDbAlarmListInfo.AlarmList.Add(alarmItem); } } else { if (alarmItem.AlarmType == ALARM_TYPE.ALARM_OCCUR) { AlarmInfo occuralarmItem = JsonConvert.DeserializeObject <AlarmInfo>(alarmMessage); toDbAlarmListInfo.AlarmList.Add(alarmItem); string alarmValue = JsonConvert.SerializeObject(alarmItem); _redisClient.HSet(deviceAlarmKey, alarmItem.AlarmName, alarmValue); } else { AlarmInfo occuralarmItem = JsonConvert.DeserializeObject <AlarmInfo>(alarmMessage); occuralarmItem.RecoveryDate = alarmItem.AlarmDate; toDbAlarmListInfo.AlarmList.Add(occuralarmItem); _redisClient.HDel(deviceAlarmKey, alarmItem.AlarmName); } } } WriteAlarmListToDB(toDbAlarmListInfo); }
public int WriteDeviceAlarmListToDB(AlarmListInfo deivceAlarmList) { if (_mapDevices.ContainsKey(deivceAlarmList.DeviceInfo.DeviceCode) == true) { DeviceHelper deviceItem = _mapDevices[deivceAlarmList.DeviceInfo.DeviceCode]; if (deviceItem.WriteDeviceAlarmListToDB(deivceAlarmList) != 0) { LoggerManager.Log.Error($"公司[{deivceAlarmList.DeviceInfo.CompanyCode}]-设备[{deivceAlarmList.DeviceInfo.DeviceCode}],写故障数据失败!"); } } else { LoggerManager.Log.Error($"没有查询到公司[{deivceAlarmList.DeviceInfo.CompanyCode}]的设备[{deivceAlarmList.DeviceInfo.DeviceCode}]!"); } return(0); }
public int WriteDeviceAlarmListToDB(AlarmListInfo deivceAlarmList) { _deviceAlarmStoreManager.WriteAlarmListToDB(deivceAlarmList); return(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); } }