public static ReportHeaderInfo GetReportHeaderInfo(string argReportKey, bool IsChild) { ReportHeaderInfo vReportHeaderInfo = new ReportHeaderInfo(); if (string.IsNullOrEmpty(argReportKey)) { return(vReportHeaderInfo); } string QueryStr = " and ( IsChild ='' or IsChild is null )"; if (IsChild) { QueryStr = " and IsChild=1 "; } vReportHeaderInfo.ReportRowInfo = new List <ReportRowInfo>(); Services Resource = new Services(); string[] changePassWord = Common.getChangePassWord(); DataTable dt = Resource.Query(" select * from " + Resource.GetTableNameByResourceid("500915419601") + " where ReportKey='" + argReportKey + "' " + QueryStr, changePassWord[0], changePassWord[1], changePassWord[2]).Tables[0]; if (dt.Rows.Count > 0) { int lastr = 0; ReportRowInfo vReportRowInfo = new ReportRowInfo(); foreach (DataRow vDr in dt.Rows) { if (lastr != (string.IsNullOrEmpty(vDr["RowNo"].ToString()) ? 0 : Convert.ToInt32(vDr["RowNo"].ToString())) || lastr == 0) { if (lastr > 0) { vReportHeaderInfo.ReportRowInfo.Add(vReportRowInfo); } vReportRowInfo = new ReportRowInfo(); vReportRowInfo.ReportColumnInfo = new List <ReportColumnInfo>(); vReportRowInfo.RowNo = string.IsNullOrEmpty(vDr["RowNo"].ToString()) ? 0 : Convert.ToInt32(vDr["RowNo"].ToString()); lastr = vReportRowInfo.RowNo; } ReportColumnInfo vReportColumnInfo = new ReportColumnInfo(); vReportColumnInfo.ReportKey = string.IsNullOrEmpty(vDr["ReportKey"].ToString()) ? "" : vDr["ReportKey"].ToString(); vReportColumnInfo.RowNo = Convert.ToInt32(vDr["RowNo"].ToString()); vReportColumnInfo.ColumnNo = Convert.ToInt32(vDr["ColumnNo"].ToString()); vReportColumnInfo.RowHeight = string.IsNullOrEmpty(vDr["RowHeight"].ToString()) ? "" : vDr["RowHeight"].ToString(); vReportColumnInfo.ColumnWidth = string.IsNullOrEmpty(vDr["ColumnWidth"].ToString()) ? "80" : vDr["ColumnWidth"].ToString(); vReportColumnInfo.ShowName = string.IsNullOrEmpty(vDr["ShowName"].ToString()) ? "" : vDr["ShowName"].ToString(); vReportColumnInfo.FieldName = string.IsNullOrEmpty(vDr["FieldName"].ToString()) ? "" : vDr["FieldName"].ToString(); vReportColumnInfo.DataType = string.IsNullOrEmpty(vDr["DataType"].ToString()) ? 1 : Convert.ToInt32(vDr["DataType"].ToString()); vReportColumnInfo.IsHide = Convert.ToBoolean(vDr["IsHide"].ToString() == "1"); vReportColumnInfo.AcrossColumns = string.IsNullOrEmpty(vDr["AcrossColumns"].ToString()) ? 0 : Convert.ToInt32(vDr["AcrossColumns"].ToString()); vReportColumnInfo.InterbankNumber = string.IsNullOrEmpty(vDr["InterbankNumber"].ToString()) ? 0 : Convert.ToInt32(vDr["InterbankNumber"].ToString()); vReportColumnInfo.IsAddCommonQuery = Convert.ToBoolean(vDr["IsAddCommonQuery"].ToString() == "1"); vReportRowInfo.ReportColumnInfo.Add(vReportColumnInfo); vReportRowInfo.ReportKey = vReportColumnInfo.ReportKey; } vReportHeaderInfo.ReportRowInfo.Add(vReportRowInfo); vReportHeaderInfo.ReportKey = vReportRowInfo.ReportKey; } return(vReportHeaderInfo); }
public virtual JObject GetReportData(HttpContext context) { YZRequest request = new YZRequest(context); string path = request.GetString("path"); string viewName = request.GetString("viewName", null); string outputType = request.GetString("outputType", ""); YZClientParamCollection runtimeParams = JArray.Parse(Encoding.UTF8.GetString(Convert.FromBase64String(request.GetString("params", YZJsonHelper.Base64EmptyJArray)))).ToObject <YZClientParamCollection>(); //获得数据 Report report; ReportView view; DataTable dataTable; int rowcount; using (BPMConnection cn = new BPMConnection()) { cn.WebOpen(); //获得报表定义 report = Report.Open(cn, path); if (String.IsNullOrEmpty(viewName)) { view = report.DefaultView; } else { view = report.Views.TryGetItem(viewName); } string srcdata = request.GetString("srcdata", null); if (String.IsNullOrEmpty(srcdata)) { BPMDBParameterCollection selectParameters = report.QueryParameters.CreateNullDBParameters(); //应用查询条件 foreach (BPMDBParameter selectParam in selectParameters) { YZClientParam clientParam = runtimeParams.TryGetItem(selectParam.Name); if (clientParam != null && clientParam.value != null) { selectParam.Value = clientParam.value; } } cn.RequestParams["sortstring"] = request.GetSortString(""); cn.UpdateRequestParams(); //获得数据 FlowDataTable ftable = new FlowDataTable(); ftable.Load(cn, BPMCommandType.Report, path, selectParameters, report.ClientCursor, request.Start, request.Limit, out rowcount); dataTable = ftable.ToDataTable(); } else { dataTable = JArray.Parse(Encoding.UTF8.GetString(Convert.FromBase64String(srcdata))).ToObject <DataTable>(); rowcount = request.GetInt32("total"); } } //将数据转化为Json集合 JObject rv = new JObject(); rv[YZJsonProperty.total] = rowcount; rv["srcdata"] = Convert.ToBase64String(Encoding.UTF8.GetBytes(JArray.FromObject(dataTable).ToString(Formatting.None, YZJsonHelper.Converters))); JArray children = new JArray(); rv.Add("children", children); //不管是什么view都要给数据 foreach (DataRow row in dataTable.Rows) { JObject item = new JObject(); children.Add(item); foreach (DataColumn column in dataTable.Columns) { object value = row[column.ColumnName]; item[column.ColumnName] = JToken.FromObject(value); if (NameCompare.EquName(column.ColumnName, "TaskID") && (value is int)) { item["Token"] = YZSecurityHelper.GenTaskAccessToken((int)value); } //为任务链接生成Token ReportColumnInfo colInfo = report.ReportColumnInfos.TryGetItem(column.ColumnName); if (colInfo != null && colInfo.LinkType == ReportLinkType.Task) { ParameterFill paramFill = colInfo.ParametersFill.TryGetItem("@TaskID"); if (paramFill != null) { int linktoTaskID; if (Int32.TryParse(Convert.ToString(row[paramFill.FillWith]), out linktoTaskID)) { item[column.ColumnName + "Token"] = YZSecurityHelper.GenTaskAccessToken((int)linktoTaskID); } } } } } if (String.Compare(outputType, "Export", true) != 0) { if (view is ReportMSChartView) { this.ApplyMSChartData(request, rv, view as ReportMSChartView, dataTable); } if (view is ReportExcelView) { this.ApplyExcelData(request, rv, view as ReportExcelView, dataTable, runtimeParams); } } return(rv); }