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