Example #1
0
        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);
        }
Example #6
0
 public int WriteDeviceAlarmListToDB(AlarmListInfo deivceAlarmList)
 {
     _deviceAlarmStoreManager.WriteAlarmListToDB(deivceAlarmList);
     return(0);
 }
Example #7
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);
            }
        }