public JsonResult ExportligerReport(string filterDatas, string reportTemplateSetting) { return(ExecuteFunctionRun(() => { ReportTemplateParameter[] FilterDatas = JsonConvert.DeserializeObject <ReportTemplateParameter[]>(filterDatas); ReportTemplate ReportTemplate = JsonConvert.DeserializeObject <ReportTemplate>(reportTemplateSetting); ReportSource ReportSource = this.Engine.Analyzer.GetReportSourceByCode(ReportTemplate.SourceCode); SummaryReportResult SummaryReportResult = QueryTable(ReportSource, 0, 0, ReportTemplate.Columns, FilterDatas); Dictionary <string, string> heads = new Dictionary <string, string>(); foreach (ReportTemplateColumn Column in ReportTemplate.Columns) { if (Column.ReportSourceColumnType != ReportSourceColumnType.CustomColumn) { heads.Add(Column.ColumnCode, Column.DisplayName); } //heads.Add(Column.ColumnCode, Column.DisplayName); } List <Dictionary <string, object> > datas = new List <Dictionary <string, object> >(); Dictionary <string, object> data = new Dictionary <string, object>(); for (int i = 0; i < SummaryReportResult.Total; i++) { data = new Dictionary <string, object>(); foreach (string key in heads.Keys) { data.Add(key, SummaryReportResult.Rows[i][key]); } datas.Add(data); } var result = new { FileUrl = ExportExcel.ExportExecl(ReportTemplate.DisplayName + "." + ReportTemplate.Code, heads, datas) }; return Json(result, JsonRequestBehavior.AllowGet); })); }
public JsonResult LoadSourceData(string reportSourceSetting, string filterDatas, int page, int pageSize) { return(ExecuteFunctionRun(() => { ReportSource ReportSource = JsonConvert.DeserializeObject <ReportSource>(reportSourceSetting); SummaryReportResult SummaryReportResult = QueryTable(ReportSource, page, pageSize); return Json(SummaryReportResult, JsonRequestBehavior.AllowGet); })); }
public JsonResult LoadSummaryData(string reportTemplateSetting, string childColumns, string filterDatas, int page, int pageSize) { return(ExecuteFunctionRun(() => { ReportTemplate ReportTemplate = JsonConvert.DeserializeObject <ReportTemplate>(reportTemplateSetting); ReportSource ReportSource = this.Engine.Analyzer.GetReportSourceByCode(ReportTemplate.SourceCode); ReportTemplateParameter[] FilterDatas = JsonConvert.DeserializeObject <ReportTemplateParameter[]>(filterDatas) ?? ReportTemplate.Parameters; //合并显示的列 ReportTemplateColumn[] children = JsonConvert.DeserializeObject <ReportTemplateColumn[]>(childColumns); ReportTemplateColumn[] columns = new ReportTemplateColumn[ReportTemplate.Columns.Length + children.Length]; ReportTemplate.Columns.CopyTo(columns, 0); children.CopyTo(columns, ReportTemplate.Columns.Length); SummaryReportResult SummaryReportResult = QueryTable(ReportSource, page, pageSize, columns, FilterDatas); return Json(SummaryReportResult, JsonRequestBehavior.AllowGet);; })); }
/// <summary> /// 查询表 /// </summary>; /// <param name="ReportSource"></param> /// <param name="TemplateColumns"></param> private SummaryReportResult QueryTable(ReportSource ReportSource, int page, int pageSize, ReportTemplateColumn[] TemplateColumns = null, ReportTemplateParameter[] Parameters = null) { Analytics.AnalyticalQuery Query = this.Engine.BPAQuery.GetAnalyticalQuery(this.Engine, ReportSource); ReportSourceColumn[] Columns = ReportSource.Columns; int dataCount = Query.QueryTableCount(ReportSource.ExecuteTableName, Parameters); int startIndex = 0; int endIndex = dataCount; if (pageSize > 0) { startIndex = ((page - 1) * pageSize + 1) < 1 ? 1 : ((page - 1) * pageSize) + 1; endIndex = page * pageSize >= dataCount ? dataCount : page * pageSize; } //报表数据 List <Dictionary <string, object> > ReportDatas = new List <Dictionary <string, object> >(); //汇总列数据 Dictionary <string, double> SummaryColumns = new Dictionary <string, double>(); Dictionary <string, object> ReportData; DataTable dataTable = Query.QueryTable(ReportSource.ExecuteTableName, Columns, Parameters, startIndex, endIndex); //提取需要被装换的列名 List <string> convertCodes = new List <string>(); //批量查询组织 Unit[] units = this.GetConvertCodesUnits(out convertCodes, TemplateColumns, dataTable.Rows, Columns); //填充返回单元格 foreach (DataRow row in dataTable.Rows) { ReportData = new Dictionary <string, object>(); foreach (ReportSourceColumn col in Columns) { if (col.ReportSourceColumnType != ReportSourceColumnType.CustomColumn) { //从Units中找到对应的Unit if (convertCodes.Contains(col.ColumnCode)) { Unit user = null; foreach (var u in units) { if (u.ObjectID == row[col.ColumnCode].ToString()) { user = u; break; } } if (user != null && user.Name != null) { row[col.ColumnCode] = user.Name; } } ReportData.Add(col.ColumnCode, row[col.ColumnCode]); } //汇总列结算 if (col.ReportSourceColumnType != ReportSourceColumnType.CustomColumn && col.DataType == DataType.Numeric) { double count = 0; if (double.TryParse(row[col.ColumnCode].ToString(), out count)) { if (SummaryColumns.ContainsKey(col.ColumnCode)) { SummaryColumns[col.ColumnCode] += count; } else { SummaryColumns.Add(col.ColumnCode, count); } } } } ReportDatas.Add(ReportData); } SummaryReportResult SummaryReportResult = new SummaryReportResult(ReportDatas, dataCount, SummaryColumns); return(SummaryReportResult); }