/// <summary> /// 解析対象データを作成する /// </summary> /// <param name="dipAlmiSlopeLog">骨塩アルミスロープログ</param> /// <param name="almilogConfig">アルミスロープログ解析設定</param> /// <param name="bloclogConfig">ムラグ解析設定</param> /// <param name="_analysisData">アルミスロープログ解析対象データ</param> private void CreatetAnalysisData(DipAlmiSlopeLog dipAlmiSlopeLog, DtAlmilogAnalysisConfig almilogConfig, DtBloclogAnalysisConfig bloclogConfig, out AlmiLogAnalysisData _analysisData) { _analysisData = new AlmiLogAnalysisData(); try { _logger.EnterJson("{0}", new { dipAlmiSlopeLog, almilogConfig, bloclogConfig }); var areaStandardDataConfgValue = almilogConfig.AreaStandardData.Split(',').Select(x => int.Parse(x)).ToArray(); // バリデーション if (areaStandardDataConfgValue.Length != AlmiAreaDataNum) { // 個数が異なる場合は解析が実施できないためエラー throw new RmsException("アルミスロープログ解析設定の面積算出用データの要素数が不正です"); } var luminanceValue = new int[AnalysisDataMax]; for (int i = 0; i < dipAlmiSlopeLog.LuminanceValue.Length; i++) { luminanceValue[i] = int.Parse(dipAlmiSlopeLog.LuminanceValue[i]); } // AreaStandardDataのデータ数はAlmiAreaDataNum固定だがCモジュールへデータを渡す都合上サイズはAnalysisDataMax必要 var areaStandardData = new int[AnalysisDataMax]; for (int i = 0; i < areaStandardDataConfgValue.Length; i++) { areaStandardData[i] = areaStandardDataConfgValue[i]; } _analysisData = new AlmiLogAnalysisData() { LuminanceValue = luminanceValue, LuminanceValueCount = dipAlmiSlopeLog.LuminanceValue.Length, MinSlopeValue = almilogConfig.MinSlopeValue, MiddleSlopeValue = almilogConfig.MiddleSlopeValue, MaxSlopeValue = almilogConfig.MaxSlopeValue, LowVoltageAreaValue = almilogConfig.LowVoltageAreaValue, HighVoltageAreaValue = almilogConfig.HighVoltageAreaValue, AreaStandardData = areaStandardData, AlmiAreaDataNum = AlmiAreaDataNum, AlsStandardValue = bloclogConfig.AlsStandardValue }; } catch { throw; // ログ出力はpublicメソッドにお任せ } finally { _logger.LeaveJson("{0}", new { _analysisData }); } }
/// <summary> /// DT_ALMILOG_ANALYSIS_CONFIGテーブルからDtAlmilogAnalysisConfigを取得する /// </summary> /// <param name="detectorName">Detector名称</param> /// <param name="isNormalized">規格化フラグ</param> /// <param name="allowNotExist">取得件数が0件である場合を正常系とする場合はtrueを、異常系とする場合はfalseを指定する</param> /// <returns>取得したデータ</returns> public DtAlmilogAnalysisConfig ReadDtAlmilogAnalysisConfig(string detectorName, bool isNormalized, bool allowNotExist = true) { DtAlmilogAnalysisConfig model = null; try { _logger.EnterJson("{0}", new { detectorName, isNormalized }); DBAccessor.Models.DtAlmilogAnalysisConfig entity = null; _dbPolly.Execute(() => { using (DBAccessor.Models.RmsDbContext db = new DBAccessor.Models.RmsDbContext(_appSettings)) { entity = db.DtAlmilogAnalysisConfig.FirstOrDefault(x => x.DetectorName == detectorName && x.IsNormalized == isNormalized); } }); if (entity != null) { model = entity.ToModel(); } else { if (!allowNotExist) { throw new RmsException("DT_ALMILOG_ANALYSIS_CONFIGテーブルに該当レコードが存在しません。"); } } return(model); } catch (RmsException) { throw; } catch (Exception e) { throw new RmsException("DT_ALMILOG_ANALYSIS_CONFIGテーブルのSelectに失敗しました。", e); } finally { _logger.LeaveJson("{0}", model); } }