コード例 #1
0
        /// <summary>
        /// アラーム情報を作成しQueueStorageへ登録する
        /// </summary>
        /// <param name="tubeCurrentDeteriorationPredictiveResutLog">管電流経時劣化予兆結果ログ</param>
        /// <param name="messageId">メッセージID</param>
        /// <param name="alarmDef">アラーム定義</param>
        /// <returns>成功した場合true、失敗した場合falseを返す</returns>
        public bool CreateAndEnqueueAlarmInfo(TubeCurrentDeteriorationPredictiveResutLog tubeCurrentDeteriorationPredictiveResutLog, string messageId, IEnumerable <DtAlarmDefTubeCurrentDeteriorationPremonitor> alarmDef)
        {
            bool result = true;

            _logger.EnterJson("{0}", new { tubeCurrentDeteriorationPredictiveResutLog, messageId, alarmDef });

            int index      = 1;
            int alarmCount = alarmDef.Count();

            foreach (var alarm in alarmDef)
            {
                string message = null;
                try
                {
                    // Sq1.1.3: アラームキューを生成する
                    var alarmInfo = new AlarmInfo
                    {
                        SourceEquipmentUid = tubeCurrentDeteriorationPredictiveResutLog.SourceEquipmentUid,
                        TypeCode           = tubeCurrentDeteriorationPredictiveResutLog.TypeCode,
                        ErrorCode          = tubeCurrentDeteriorationPredictiveResutLog.ErrorCode,
                        AlarmLevel         = alarm.AlarmLevel,
                        AlarmTitle         = alarm.AlarmTitle,
                        AlarmDescription   = alarm.AlarmDescription,
                        AlarmDatetime      = _timeProvider.UtcNow.ToString(Utility.Const.AlarmQueueDateTimeFormat),
                        EventDatetime      = tubeCurrentDeteriorationPredictiveResutLog.EventDt,
                        AlarmDefId         = $"{_settings.SystemName}_{_settings.SubSystemName}_{alarm.Sid.ToString()}",
                        MessageId          = alarmCount <= 1 ? messageId : $"{messageId}_{index}"
                    };
                    index++;

                    message = JsonConvert.SerializeObject(alarmInfo);

                    // Sq1.1.4: キューを登録する
                    _queueRepository.SendMessageToAlarmQueue(message);
                }
                catch (Exception e)
                {
                    // アラーム生成エラー or アラームキューにアラーム情報を送信できない(基本設計書 5.1.2.4 エラー処理)
                    _logger.Error(e, string.IsNullOrEmpty(message) ? nameof(Resources.UT_TCP_TCP_005) : nameof(Resources.UT_TCP_TCP_006), new object[] { messageId });
                    result = false;
                }
            }

            _logger.Leave();
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// アラーム定義を取得する
        /// </summary>
        /// <param name="tubeCurrentDeteriorationPredictiveResutLog">管電流経時劣化予兆結果ログ</param>
        /// <param name="messageId">メッセージID</param>
        /// <param name="models">DBから取得したパラメータ</param>
        /// <returns>成功した場合true、失敗した場合falseを返す</returns>
        public bool ReadAlarmDefinition(TubeCurrentDeteriorationPredictiveResutLog tubeCurrentDeteriorationPredictiveResutLog, string messageId, out IEnumerable <DtAlarmDefTubeCurrentDeteriorationPremonitor> models)
        {
            models = null;

            try
            {
                _logger.EnterJson("{0}", new { tubeCurrentDeteriorationPredictiveResutLog, messageId });

                // Sq1.1.1: 管電流経時劣化予兆監視アラーム定義を取得
                models = _dtAlarmDefTubeCurrentDeteriorationPremonitorRepository.ReadDtAlarmDefTubeCurrentDeteriorationPremonitor(tubeCurrentDeteriorationPredictiveResutLog);

                return(true);
            }
            catch (RmsException e)
            {
                // DBにアクセスできない(基本設計書 5.1.2.4 エラー処理)
                _logger.Error(e, nameof(Resources.UT_TCP_TCP_003), new object[] { messageId });
                return(false);
            }
            finally
            {
                _logger.LeaveJson("{0}", new { models });
            }
        }
        /// <summary>
        /// DT_ALARM_DEF_TUBE_CURRENT_DETERIORATION_PREMONITORテーブルからDtAlarmDefTubeCurrentDeteriorationPremonitorを取得する
        /// </summary>
        /// <param name="tubeCurrentDeteriorationPredictiveResutLog">管電流経時劣化予兆結果ログ</param>
        /// <returns>取得したデータ</returns>
        public IEnumerable <DtAlarmDefTubeCurrentDeteriorationPremonitor> ReadDtAlarmDefTubeCurrentDeteriorationPremonitor(TubeCurrentDeteriorationPredictiveResutLog tubeCurrentDeteriorationPredictiveResutLog)
        {
            IEnumerable <DtAlarmDefTubeCurrentDeteriorationPremonitor> models = null;

            try
            {
                _logger.EnterJson("{0}", tubeCurrentDeteriorationPredictiveResutLog);

                List <DBAccessor.Models.DtAlarmDefTubeCurrentDeteriorationPremonitor> entities = null;
                _dbPolly.Execute(() =>
                {
                    using (DBAccessor.Models.RmsDbContext db = new DBAccessor.Models.RmsDbContext(_appSettings))
                    {
                        entities = db.DtAlarmDefTubeCurrentDeteriorationPremonitor
                                   .Where(x => string.IsNullOrEmpty(x.TypeCode) || x.TypeCode == tubeCurrentDeteriorationPredictiveResutLog.TypeCode)
                                   .Where(x => string.IsNullOrEmpty(x.ErrorCode) || x.ErrorCode == tubeCurrentDeteriorationPredictiveResutLog.ErrorCode)
                                   .ToList();
                    }
                });

                if (entities != null)
                {
                    models = entities.Select(x => x.ToModel());
                }

                return(models);
            }
            catch (Exception e)
            {
                throw new RmsException("DT_ALARM_DEF_TUBE_CURRENT_DETERIORATION_PREMONITORテーブルのSelectに失敗しました。", e);
            }
            finally
            {
                _logger.LeaveJson("{0}", models);
            }
        }