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);
    }
Esempio n. 2
0
        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);
        }