/// <summary> /// Получить отчет по значениям тегов /// </summary> public string GetTagsReport(DSRouterTagsReportSettings reportSettings) { string result = null; try { string reportName = "Отчет " + DateTime.Now.ToShortDateString(); if (SaveTagsReport(DEFAULT_PATH_TO_DIRECTORY_TO_SHARE_FILES, reportName, reportSettings) == null) return null; result = DEFAULT_URL_TO_DIRECTORY_TO_SHARE_FILES + reportName + reportSettings.ReportExtension; } catch (Exception ex) { Log.WriteErrorMessage("DSRouterService.GetTagsReport() : Исключение : " + ex.Message); } return result; }
/// <summary> /// Получить отчет по значениям тегов /// </summary> public byte[] GetTagsReportAsByteArray(DSRouterTagsReportSettings reportSettings) { byte[] result = null; try { string reportName = "Отчет " + DateTime.Now.ToShortDateString(); var pathToReport = SaveTagsReport(Path.GetTempPath(), reportName, reportSettings); if (pathToReport == null) return null; using (var stream = File.Open(pathToReport, FileMode.Open)) { result = new byte[stream.Length]; stream.Read(result, 0, result.Length); stream.Close(); } } catch (Exception ex) { Log.WriteErrorMessage("DSRouterService.GetTagsReportAsByteArray() : Исключение : " + ex.Message); } return result; }
/// <summary> /// Собирает данные и сохраняет отчет в указанное место /// </summary> private string SaveTagsReport(string pathToSave, string reportName, DSRouterTagsReportSettings reportSettings) { string result = null; // Получаем тренды var trends = GetTrends(reportSettings.Tags, reportSettings.StartDateTime, reportSettings.EndDateTime); if (trends == null || trends.Count == 0) return null; // Если надо, то приводим тренды к единому шагу Dictionary<DateTime, Tuple<object, object, object, object>> trendsWithFixStep = null; if (reportSettings.Interval != 0) { trendsWithFixStep = GetTrendsWithFixStep(trends, reportSettings.Interval, reportSettings.StartDateTime, reportSettings.EndDateTime); } // Заполняем DataSet var dataSource = FillDataSet(null, trends, trendsWithFixStep); #region Формирование отчета string reportTemplateName = String.IsNullOrWhiteSpace(reportSettings.ReportTamplateName) ? "TagsReport" : reportSettings.ReportTamplateName; var report = new Report(reportTemplateName); report.SetDataSource(dataSource); report.SaveReportFile(pathToSave, reportName, reportSettings.ReportExtension.ToString()); result = Path.Combine(pathToSave, reportName + "." + reportSettings.ReportExtension.ToString()); #endregion return result; }