Example #1
0
        /// <summary>
        /// アラーム設定を取得する
        /// </summary>
        /// <param name="alarmInfo">アラーム情報</param>
        /// <param name="equipment">機器データ</param>
        /// <param name="alarmConfig">アラーム設定</param>
        /// <returns>成功した場合true、失敗した場合falseを返す</returns>
        public bool ReadDtAlarmConfig(AlarmInfo alarmInfo, out DtEquipment equipment, out DtAlarmConfig alarmConfig)
        {
            equipment   = null;
            alarmConfig = null;

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

                // Sq1.1.2: アラーム設定を取得する
                // Sq1.1.3: メール送信先を取得する
                equipment   = _dtEquipmentRepository.ReadDtEquipment(alarmInfo.SourceEquipmentUid, false);
                alarmConfig = _dtAlarmConfigRepository.ReadDtAlarmConfig(alarmInfo.AlarmLevel, false);

                return(true);
            }
            catch (RmsException e)
            {
                // アラーム設定取得失敗(基本設計書 5.3.4 エラー処理)
                _logger.Error(e, nameof(Resources.OP_ALR_ALR_005), new object[] { alarmInfo?.MessageId });
                return(false);
            }
            finally
            {
                _logger.LeaveJson("{0}", new { equipment, alarmConfig });
            }
        }
Example #2
0
        /// <summary>
        /// DT_EQUIPMENTテーブルからDtEquipmentを取得する
        /// </summary>
        /// <param name="equipmentNumber">機器管理番号</param>
        /// <param name="allowNotExist">取得件数が0件である場合を正常系とする場合はtrueを、異常系とする場合はfalseを指定する</param>
        /// <returns>取得したデータ</returns>
        public DtEquipment ReadDtEquipment(string equipmentNumber, bool allowNotExist = true)
        {
            DtEquipment model = null;

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

                DBAccessor.Models.DtEquipment entity = null;
                _dbPolly.Execute(() =>
                {
                    using (DBAccessor.Models.RmsDbContext db = new DBAccessor.Models.RmsDbContext(_appSettings))
                    {
                        entity = db.DtEquipment.Include(x => x.InstallBaseS).FirstOrDefault(x => x.EquipmentNumber == equipmentNumber);
                    }
                });

                if (entity != null)
                {
                    model = entity.ToModelIncludedInstallBase();
                }
                else
                {
                    if (!allowNotExist)
                    {
                        var info = new { EquipmentNumber = equipmentNumber };
                        throw new RmsException(string.Format("DT_EQUIPMENTテーブルに該当レコードが存在しません。(検索条件: {0})", JsonConvert.SerializeObject(info)));
                    }
                }

                return(model);
            }
            catch (Exception e)
            {
                throw new RmsException("DT_EQUIPMENTテーブルのSelectに失敗しました。", e);
            }
            finally
            {
                _logger.LeaveJson("{0}", model);
            }
        }
Example #3
0
        /// <summary>
        /// メール送信情報を作成しQueueStorageへ登録する
        /// </summary>
        /// <param name="messageId">メッセージID</param>
        /// <param name="alarmInfo">アラーム情報</param>
        /// <param name="alarmConfig">アラーム設定</param>
        /// <param name="equipment">機器データ</param>
        /// <returns>成功した場合true、失敗した場合falseを返す</returns>
        public bool CreateAndEnqueueAlarmInfo(string messageId, AlarmInfo alarmInfo, DtAlarmConfig alarmConfig, DtEquipment equipment)
        {
            try
            {
                _logger.EnterJson("{0}", new { alarmInfo, alarmConfig, equipment });

                var mailInfo = new MailInfo
                {
                    MailAddressTo         = alarmConfig.MailAddress,
                    MailAddressFrom       = _settings.AlarmMailAddressFrom,
                    MailSubject           = alarmInfo.AlarmTitle,
                    CustomerNumber        = equipment.DtInstallBase.CustomerNumber,
                    CustomerName          = equipment.DtInstallBase.CustomerName,
                    EquipmentSerialNumber = equipment.DtInstallBase.EquipmentSerialNumber,
                    EquipmentNumber       = equipment.DtInstallBase.EquipmentNumber,
                    EquipmentName         = equipment.DtInstallBase.EquipmentName,
                    TypeCode         = alarmInfo.TypeCode,
                    ErrorCode        = alarmInfo.ErrorCode,
                    AlarmLevel       = alarmInfo.AlarmLevel,
                    EventDate        = alarmInfo.EventDatetime,
                    AlarmDescription = alarmInfo.AlarmDescription
                };

                string message = JsonConvert.SerializeObject(mailInfo);
                _queueRepository.SendMessageToMailQueue(message);

                return(true);
            }
            catch (RmsException e)
            {
                // メールキュー登録失敗(基本設計書 5.3.4 エラー処理)
                _logger.Error(e, nameof(Resources.OP_ALR_ALR_007), new object[] { messageId });
                return(false);
            }
            finally
            {
                _logger.Leave();
            }
        }
Example #4
0
        /// <summary>
        /// アラームをDBに登録する
        /// </summary>
        /// <param name="messageId">メッセージID</param>
        /// <param name="hasMail">メールありフラグ</param>
        /// <param name="alarmInfo">アラーム情報</param>
        /// <param name="equipment">機器データ</param>
        /// <returns>成功した場合true、失敗した場合falseを返す</returns>
        public bool RegistAlarmInfo(string messageId, bool hasMail, AlarmInfo alarmInfo, DtEquipment equipment)
        {
            try
            {
                _logger.EnterJson("{0}", new { messageId, hasMail, alarmInfo, equipment });

                var dtAlarm = new DtAlarm
                {
                    EquipmentSid     = equipment.Sid,
                    TypeCode         = alarmInfo.TypeCode,
                    ErrorCode        = alarmInfo.ErrorCode,
                    AlarmLevel       = alarmInfo.AlarmLevel,
                    AlarmTitle       = alarmInfo.AlarmTitle,
                    AlarmDescription = alarmInfo.AlarmDescription,
                    AlarmDatetime    = DateTime.Parse(alarmInfo.AlarmDatetime, null, DateTimeStyles.RoundtripKind),
                    AlarmDefId       = alarmInfo.AlarmDefId,
                    EventDatetime    = DateTime.Parse(alarmInfo.EventDatetime, null, DateTimeStyles.RoundtripKind),
                    HasMail          = hasMail,
                    MessageId        = messageId
                };

                _dtAlarmRepository.CreateDtAlarm(dtAlarm);
                return(true);
            }
            catch (RmsException e)
            {
                var dtAlarm = new
                {
                    EquipmentSid     = equipment?.Sid,
                    TypeCode         = alarmInfo?.TypeCode,
                    ErrorCode        = alarmInfo?.ErrorCode,
                    AlarmLevel       = alarmInfo?.AlarmLevel,
                    AlarmTitle       = alarmInfo?.AlarmTitle,
                    AlarmDescription = alarmInfo?.AlarmDescription,
                    AlarmDatetime    = alarmInfo?.AlarmDatetime,
                    AlarmDefId       = alarmInfo?.AlarmDefId,
                    EventDatetime    = alarmInfo?.EventDatetime,
                    HasMail          = hasMail,
                    MessageId        = messageId
                };

                // アラームデータ保存失敗(基本設計書 5.3.4 エラー処理)
                _logger.Error(e, nameof(Resources.OP_ALR_ALR_009), new object[] { JsonConvert.SerializeObject(dtAlarm), messageId });
                return(false);
            }
            finally
            {
                _logger.Leave();
            }
        }