示例#1
0
        public ActionResult GetChartData()
        {
            //获得参数
            string code = Request["code"].Trim();
            //int rows = Convert.ToInt32(Request["rows"].Trim());
            //int page = Convert.ToInt32(Request["page"].Trim());
            string queryParams = Request["queryParams"];//查询条件

            //string sidx = Request["sidx"];//排序条件
            //string sord = Request["sord"];//最后个字段排序方式
            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;

            DataTable dt = new DataTable();

            //取消获取报表的语句。原因:既然能进这个页面肯定是已具有code代码
            //var report = _reportAppService.GetReport(code);
            //执行sql语句
            try
            {
                dt = _reportAppService.GetDataTableFromCode(code, queryParams, ref err);
                //result = _reportAppService.ExcuteReportSql(code, rows, page, queryParams, sidx, sord, ref err);
                if (err.IsError)
                {
                    throw new Exception(err.Message);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(Content(JSON.DecodeToStr(dt)));
        }
示例#2
0
        protected void SearchBtn_Click(object sender, EventArgs e)
        {
            string    code        = this.code.Value;
            string    queryParams = this.queryParams.Value;
            string    xmlStr      = EncryptHelper.AesDecrpt(this.xmlStr.Value);
            string    rpName      = this.rpName.Value;
            DataTable dt          = new DataTable();

            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            //从ioc容器中获取当前需要的接口实例
            var _reportApp = Abp.Dependency.IocManager.Instance.Resolve <IReportAppService>();

            #region 避免调用接口方法嵌套了多个复杂类型的方法
            //string sql = _reportApp.GetSqlByCode(code, queryParams);
            //var _dbServerApp = Abp.Dependency.IocManager.Instance.Resolve<IDbServerAppService>();
            //dt= _dbServerApp.ExecuteGetTable(1, sql);
            #endregion

            //GetDataTableFromCode方法中调用_dbServerApp.ExecuteGetTable(dbserver.Id, sql),不能传复杂类型dbserver
            dt = _reportApp.GetDataTableFromCode(code, queryParams, ref err);

            reportViewer1.LocalReport.DataSources.Clear();//清理原rdlc数据
            reportViewer1.LocalReport.DisplayName = rpName;
            reportViewer1.LocalReport.LoadReportDefinition(GenerateRdlc(xmlStr));
            ReportDataSource reportDataSource = new ReportDataSource("DataSet1", dt);
            reportViewer1.LocalReport.DataSources.Add(reportDataSource);//赋值新数据
            reportViewer1.LocalReport.Refresh();
        }
示例#3
0
        public DownData DownLoadRecord(int intFileId)
        {
            ExportData expData = _exportDataRepository.Get(intFileId);
            var        user    = GetCurrentUserAsync().Result;//当前登录者

            if (expData == null || expData.Id <= 0)
            {
                EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
                err.IsError = false;
                err.Message = "导出文件后,保存至下载记录表数据库出错";
                return(null);
            }
            //数据下载记录表
            DownData downData = new DownData();

            downData.DisplayName   = expData.DisplayName;
            downData.DownBeginTime = DateTime.Now;
            downData.DownEndTime   = DateTime.Now;
            downData.ExportDataId  = intFileId;
            downData.FileName      = expData.FileName;
            downData.FilePath      = expData.FilePath;
            downData.FileSize      = expData.FileSize;
            downData.Status        = "成功";
            downData.UserId        = user.Id;
            long lngResult = _downDataRepository.InsertOrUpdateAndGetId(downData);

            if (lngResult <= 0)
            {
                EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
                err.IsError = false;
                err.Message = "导出文件后,保存至下载记录表数据库出错";
                return(null);
            }
            return(downData);
        }
示例#4
0
        /// <summary>
        /// 调试(返回替换变量、组装后的sql)
        /// </summary>
        /// <returns></returns>
        public ActionResult GetDebugSql()
        {
            string sql = "";
            //获得参数
            string code        = Request["code"].Trim();
            string queryParams = Request["queryParams"];//查询条件

            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;

            //取消获取报表的语句。原因:既然能进这个页面肯定是已具有code代码
            //var report = _reportAppService.GetReport(code);
            //执行sql语句
            try
            {
                sql = _reportAppService.GetDebugSql(code, queryParams, ref err);
                if (err.IsError)
                {
                    throw new Exception(err.Message);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(Content(sql));
        }
示例#5
0
        /// <summary>
        /// 查询code得到结果集
        /// </summary>
        /// <returns></returns>
        public ActionResult TbQueryList()
        {
            string result = "";
            //获得参数
            string code        = Request["code"].Trim();
            int    rows        = Convert.ToInt32(Request["rows"].Trim());
            int    page        = Convert.ToInt32(Request["page"].Trim());
            string queryParams = Request["queryParams"]; //查询条件
            string sidx        = Request["sidx"];        //排序条件
            string sord        = Request["sord"];        //最后个字段排序方式

            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;

            //取消获取报表的语句。原因:既然能进这个页面肯定是已具有code代码
            //var report = _reportAppService.GetReport(code);
            //执行sql语句
            try
            {
                result = _reportAppService.ExcuteReportSql(code, rows, page, queryParams, sidx, sord, ref err);
                if (err.IsError)
                {
                    throw new Exception(err.Message);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(Content(result));
        }
示例#6
0
        public string OnlineExportData(ExportDataModel exp)
        {
            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;
            try
            {
                //非压缩导出
                string strFileName = exp.FileName;
                //lngDbServerId = (long)exp.DbServerId;
                strMapPathAll = "";
                strPathAll    = "";
                string strPath = exp.FilePath;
                Easyman.Common.Fun.GetPath(ref strFileName, exp.FileFormat, ref strMapPathAll, ref strPath);//重新整理保存路径

                #region 表结果dt
                DataTable dt = new DataTable();
                if (exp.DbServerId == null)
                {
                    dt = DbHelper.ExecuteGetTable(exp.Sql);
                }
                else
                {
                    dt = _dbServerAppService.ExecuteGetTable((int)exp.DbServerId, exp.Sql); //要导出的数据集
                }
                #endregion

                string ColumnHeader = "";
                switch (exp.FileFormat.ToLower())
                {
                case ".xlsx":
                    ColumnHeader = GetHeadStr(exp.TopFields);    //将表头对像转成字符串
                    OutExcelHelper.ExportExcel(dt, strFileName, strMapPathAll, ColumnHeader, true);
                    break;

                case ".csv":
                    OutExcelHelper.ExportCsv(dt, strFileName, strMapPathAll, ColumnHeader, true);
                    break;

                case ".txt":
                    OutExcelHelper.ExportTxt(dt, strFileName, strMapPathAll, ColumnHeader, true);
                    break;

                default:
                    ColumnHeader = GetHeadStr(exp.TopFields);    //将表头对像转成字符串
                    OutExcelHelper.ExportExcel(dt, strFileName, strMapPathAll, ColumnHeader, true);
                    break;
                }
                exp.FileName += exp.FileFormat;
                SavaDBSql(strPath, strMapPathAll, exp);
                return(strPath);
            }
            catch (Exception ex)
            {
                err.IsError = true;
                err.Message = ex.Message;
                throw;
            }
        }
示例#7
0
        /// <summary>
        /// 数据抽样统计数量
        /// </summary>
        /// <param name="lngDbid">数据库ID</param>
        /// <param name="strSql">数据SQL</param>
        /// <param name="intCountNum">总计数量</param>
        /// <param name="intPumping">抽样个数</param>
        /// <returns></returns>
        private long GetPumpingSize(long?lngDbid, string strSql, int intCountNum, double WaitTime, string exportWay, int intPumping = 10)
        {
            if (intCountNum < intPumping)
            {
                intPumping = intCountNum;
            }
            int intMax = (intCountNum - 1);

            if (intMax <= 0)
            {
                intMax = intCountNum;
            }
            int[]  intRandom = Common.Fun.GetRandomUnrepeatArray(1, intMax, intPumping);//样品数组(因为数组是从0开始的,所以最大值要减1)
            string strTemp   = "";

            foreach (int item in intRandom)
            {
                DateTime datEndDate = DateTime.Now.AddMilliseconds(WaitTime);//最大等待时长

                EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
                DataTable dtTempDb         = new DataTable();
                if (lngDbid == null)
                {
                    string sqlOne = _reportAppService.SqlForPage(DbHelper.GetCurConnection().DbType.ToString(), strSql, item, 1, ref err);
                    dtTempDb = DbHelper.ExecuteGetTable(sqlOne);
                }
                else
                {
                    dtTempDb = _dbServerAppService.ExecuteGetTable(lngDbid.Value, strSql, item, 1);
                }

                if (DateTime.Now > datEndDate && exportWay == "online")
                {
                    return(-1);
                }
                if (dtTempDb.Rows.Count > 0)
                {
                    foreach (DataColumn comItem in dtTempDb.Columns)
                    {
                        strTemp += dtTempDb.Rows[0][comItem.ColumnName];
                    }
                }
            }
            if (strTemp.Length <= 0)
            {
                return(0);
            }
            int  intStrLength = Common.Fun.GetStringLength(strTemp);
            long lngRowAVG    = intStrLength / intPumping * intCountNum;//每行的平均大小,乘以总行数;得到大概总大小

            return(lngRowAVG);
        }
示例#8
0
        /// <summary>
        /// 预估下载的文件大小
        /// </summary>
        /// <param name="strSql">SQL</param>
        /// <param name="ingDbServerId">服务器ID</param>
        /// <returns>返回是否offline下载</returns>
        private int IntDataSize(string strSql, long?ingDbServerId)
        {
            strSql = "select count(0) from (" + strSql + ")td";
            //获得参数
            //string code = Request["code"].Trim();
            //string queryParams = Request["queryParams"];//查询条件

            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;

            int esitSize = 0; //获得文件预估大小

            #region 得到执行sql语句
            try
            {
                object objSize = 0;
                if (ingDbServerId == null)
                {
                    string dbType = DbHelper.GetCurConnection().DbType.ToString();
                    objSize = DbHelper.ExecuteScalar(strSql);
                }
                else
                {
                    objSize = _dbServerAppService.ExecuteScalar(ingDbServerId.Value, strSql, ref err);//获取数据总长度
                }
                esitSize = (objSize == null || objSize.ToString().Trim() == "" ? 0 : Convert.ToInt32(objSize));
                if (err.IsError)
                {
                    throw new Exception(err.Message);
                }
            }
            catch (Exception ex)
            {
                //throw new Abp.UI.UserFriendlyException(ex.Message);
                throw new Exception(ex.Message);
            }
            #endregion

            return(esitSize);
        }
示例#9
0
        /// <summary>
        /// 根据code和条件组装并执行sql,返回datatable的json
        /// </summary>
        /// <returns></returns>
        public string ExcuteSql()
        {
            //获得参数
            string code        = Request["code"].Trim();
            string queryParams = Request["queryParams"];//查询条件

            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;

            //执行sql语句
            try
            {
                DataTable dt = _reportAppService.GetDataTableFromCode(code, queryParams, ref err);
                if (err.IsError)
                {
                    throw new Exception(err.Message);
                }
                return(JSON.DecodeToStr(dt));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
示例#10
0
        /// <summary>
        /// 将生成的数据保存数据库
        /// </summary>
        /// <param name="strPath">保存后的虚拟路径</param>
        /// <param name="strMapPath">保存后的物理路径</param>
        public void SavaDBSql(string strPath, string strMapPath, ExportDataModel exp)
        {
            long lngUserId = (long)(exp.ExportWay == "online" ? GetCurrentUserAsync().Result.Id : exp.UserId);

            #region 更新文件表
            //文件管理列表
            Easyman.Domain.Files files = new Easyman.Domain.Files();
            files.FileType   = exp.ExportWay;
            files.Name       = exp.DisplayName;
            files.TrueName   = exp.FileName;
            files.UploadTime = DateTime.Now;
            files.UserId     = lngUserId;

            if (exp.ExportWay == "online")
            {
                files.Id = 0;
            }
            else
            {
                files.Id = exp.FilesId == null ? 0 : (int)exp.FilesId;
            }
            if (strPath != null && strMapPath != null && strPath != "" && strMapPath != "")
            {
                strPath = strPath.Replace("\\", "/");
                System.IO.FileInfo FileObj = new FileInfo(strMapPath);
                files.Length = FileObj.Length;//文件大小
                files.Path   = strPath;
                files.Url    = strPath;

                exp.FileSize = (int)FileObj.Length;
                exp.EndTime  = DateTime.Now;
                exp.FilePath = strPath;
                exp.Status   = "生成成功";
            }
            exp.FilesId = _filesRepository.InsertOrUpdateAndGetId(files); //更新文件管理列表
            if (exp.FilesId <= 0)
            {
                lngUserId = 0;
                EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
                err.IsError = false;
                err.Message = "导出文件后,保存至文件管理数据库出错";
                return;
            }
            #endregion


            exp.FilesId = exp.FilesId;
            exp.UserId  = lngUserId;
            if (exp.ExportWay == "online")
            {
                exp.BeginTime = DateTime.Now;
                exp.Id        = 0;
            }

            if (strPath == null || strMapPath == null)
            {
                ///向导出数据生成记录里面插入数据
                exp.BeginTime = DateTime.Now;
                exp.FileSize  = 0;
                exp.Status    = "生成中";
            }

            var ent = AutoMapper.Mapper.Map <ExportData>(exp);
            exp.Id = _exportDataRepository.InsertOrUpdateAndGetId(ent); //更新导出数据生成记录

            if (exp.Id <= 0)
            {
                EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
                err.IsError = false;
                err.Message = "导出文件后,保存至生成记录数据库出错";
                return;
            }

            if (exp.ExportWay == "online")
            {
                DateTime dtmCreateTime = DateTime.Now;
                //数据下载记录表
                DownData downData = new DownData();
                downData.DisplayName   = exp.DisplayName;
                downData.DownBeginTime = dtmCreateTime;
                downData.DownEndTime   = dtmCreateTime;
                downData.ExportDataId  = exp.Id;
                downData.FileName      = exp.FileName;
                downData.FilePath      = strPath;
                downData.FileSize      = exp.FileSize;
                downData.Status        = "成功";
                downData.UserId        = lngUserId;
                if (_downDataRepository.InsertOrUpdateAndGetId(downData) <= 0)
                {
                    EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
                    err.IsError = false;
                    err.Message = "导出文件后,保存至下载记录表数据库出错";
                    return;
                }
            }
        }
示例#11
0
        /// <summary>
        /// 离线导出
        /// </summary>
        /// <param name="exp">数据集</param>
        /// <param name="intCountNum">数据总量</param>
        public string OfflineExportData(ExportDataModel exp, int intCountNum)
        {
            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;
            var config        = GetExportConfig("report");
            var intTheadCount = 1000;//线程最大值

            if (ThreadList.Count >= intTheadCount)
            {
                return("导出时,由于当前运行的线程数已达到了最大值,请稍后再尝试离线下载,或请联系管理给于帮助!");
            }

            int intRowNum = (int)config.MaxRowNum;                      //得到配置的每个文档最大行数

            dtmEndTime  = DateTime.Now.AddSeconds((int)config.MaxTime); //得到配置的最大导出时长(秒)
            intPagIndex = intCountNum / intRowNum;                      //计算总页数
            string strFileName = exp.FileName;

            //lngDbServerId = (long)exp.DbServerId;
            strMapPathAll = "";
            strPathAll    = "";
            exp.UserId    = GetCurrentUserAsync().Result.Id;

            if (intCountNum % intRowNum != 0)
            {
                intPagIndex++;
            }
            #region 转换表头
            if (exp.FileFormat.ToLower() == ".xlsx")
            {
                exp.ColumnHeader = GetHeadStr(exp.TopFields);//将表头对像转成字符串
            }
            else
            {
                exp.ColumnHeader = "";
            }
            string strFilePath = exp.FilePath;//保存原始数据
            #endregion

            object obj = new object();
            if (intPagIndex > 1)                           //如果大于1页,就启用分文件再压缩的方式离线导出文件
            {
                string strTempFileFormat = exp.FileFormat; //暂存文件格式
                exp.FileFormat = ".zip";                   //压缩文件格式
                SavaDBSql(null, null, exp);                //添加初始值
                exp.FileFormat = strTempFileFormat;        //还原文件格式
                TempThreadList = new List <Thread>();      //记录线程信息
                for (int i = 1; i <= intPagIndex; i++)
                {
                    string strTempFileName = strFileName + "_" + i + exp.FileFormat;
                    exp.FileName = strTempFileName;

                    DataTable dt = new DataTable();
                    if (exp.DbServerId == null)
                    {
                        string sqlOne = _reportAppService.SqlForPage(DbHelper.GetCurConnection().DbType.ToString(), exp.Sql, i, intRowNum, ref err);
                        dt = DbHelper.ExecuteGetTable(sqlOne);
                    }
                    else
                    {
                        dt = _dbServerAppService.ExecuteGetTable((int)exp.DbServerId, exp.Sql, i, intRowNum);     //要导出的数据集
                    }
                    dt.Columns.Remove("N");                                                                       //删除分页引起的多一列数据
                    exp.ObjParam = dt;
                    string strPath    = strFilePath;                                                              //虚拟地址
                    string strMapPath = "";                                                                       //物理地址
                    Easyman.Common.Fun.GetPath(ref strTempFileName, exp.FileFormat, ref strMapPath, ref strPath); //重新整理保存路径
                    exp.FilePath   = strMapPath;
                    strPathAll    += (strPathAll == "" ? "" : "|") + strPath;
                    strMapPathAll += (strMapPathAll == "" ? "" : "|") + strMapPath;

                    Thread thread = new Thread(new ParameterizedThreadStart(OutExportFile));//启用多线程处理数据
                    thread.IsBackground = true;
                    thread.Name         = strTempFileName.Replace(exp.FileFormat, "");
                    obj = new object();
                    obj = exp;
                    thread.Start(obj);
                    ThreadList.Add(thread);     //添加到总记录里面
                    TempThreadList.Add(thread); //添加到临时记录
                }
                ExportDataModel ExportDataM = new ExportDataModel();
                ExportDataM = exp;

                t           = new System.Timers.Timer(10000); //实例化Timer类,设置间隔时间为10000毫秒;
                t.Elapsed  += new System.Timers.ElapsedEventHandler((s, e) => OutTime(s, e, strFilePath, strFileName, (ExportDataModel)obj, TempThreadList));
                t.AutoReset = true;                           //设置是执行一次(false)还是一直执行(true);
                t.Enabled   = true;                           //是否执行System.Timers.Timer.Elapsed事件;
                t.Start();
            }
            else
            {
                SavaDBSql(null, null, exp);                                                                  //添加初始值
                //非压缩导出
                TempThreadList = new List <Thread>();                                                        //记录线程信息
                string strPath = exp.FilePath;
                Easyman.Common.Fun.GetPath(ref strFileName, exp.FileFormat, ref strMapPathAll, ref strPath); //重新整理保存路径
                exp.FileName = strFileName;
                exp.FilePath = strMapPathAll;

                DataTable dt = new DataTable();
                if (exp.DbServerId == null)
                {
                    dt = DbHelper.ExecuteGetTable(exp.Sql);
                }
                else
                {
                    dt = _dbServerAppService.ExecuteGetTable((int)exp.DbServerId, exp.Sql); //要导出的数据集
                }

                //exp.ObjParam = _dbServerAppService.ExecuteGetTable((int)exp.DbServerId, exp.Sql); //要导出的数据集
                exp.ObjParam = dt;
                Thread thread = new Thread(new ParameterizedThreadStart(OutExportFile));//启用多线程处理数据
                thread.IsBackground = true;
                thread.Name         = strFileName.Replace(exp.FileFormat, "");
                obj = new object();
                obj = exp;
                thread.Start(obj);
                ThreadList.Add(thread);     //添加到总记录里面
                TempThreadList.Add(thread); //添加到临时记录

                ExportDataModel ExportDataM = new ExportDataModel();
                ExportDataM = exp;

                t           = new System.Timers.Timer(10000); //实例化Timer类,设置间隔时间为10000毫秒;
                t.Elapsed  += new System.Timers.ElapsedEventHandler((s, e) => OutTime(s, e, strPath, strFileName, ExportDataM, TempThreadList));
                t.AutoReset = true;                           //设置是执行一次(false)还是一直执行(true);
                t.Enabled   = true;                           //是否执行System.Timers.Timer.Elapsed事件;
                t.Start();
            }
            return("导出命令已发出");
        }
示例#12
0
        public async Task <JsonResult> Login(LoginViewModel loginModel, string returnUrl = "", string returnUrlHash = "")
        {
            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;
            try
            {
                CheckModelState();
                // 对密码进行AES解密
                loginModel.Password = EncryptHelper.AesDecrpt(loginModel.Password);

                #region 取消验证码
                //var verifyCode = loginModel.VerifyCode;
                //var isMatch = ToolHelper.MatchVerifyCode(verifyCode);

                //if (!isMatch)
                //{
                //    //throw new UserFriendlyException("登录失败", "验证码错误");
                //    throw new Exception("登录失败:验证码错误!");
                //}
                #endregion

                var loginResult = await GetLoginResultAsync(
                    loginModel.UsernameOrEmailAddress,
                    loginModel.Password,
                    loginModel.TenancyName
                    );

                ValidateCycleAndComplex(loginModel, loginResult);//密码复杂度和周期校验

                await SignInAsync(loginResult.User, loginResult.Identity, loginModel.RememberMe);

                #region // 原-生成页面水印
                //var systemName = ConfigurationManager.AppSettings["SysName"];
                //var waterMark = ToolHelper.CreateWatermark(systemName, loginResult.User.UserName);

                //var filePath = AppDomain.CurrentDomain.BaseDirectory + "/UpFiles/Bg/";

                //if (!Directory.Exists(filePath))
                //{
                //    Directory.CreateDirectory(filePath);
                //}

                //var fileFullName = filePath + loginResult.User.Id + ".jpg";
                //System.IO.File.WriteAllBytes(fileFullName, waterMark);
                #endregion

                if (string.IsNullOrWhiteSpace(returnUrl) || returnUrl == @"/")
                {
                    //returnUrl = Request.ApplicationPath;
                    returnUrl = Url.Content("~/Home/Index");
                }

                if (!string.IsNullOrWhiteSpace(returnUrlHash))
                {
                    returnUrl = returnUrl + returnUrlHash;
                }
                err.IsError = false;
                err.Message = returnUrl;
                return(Json(err));
                //return Json(new AjaxResponse { TargetUrl = returnUrl });
            }
            catch (Exception e)
            {
                err.IsError = true;
                err.Message = e.Message;
                err.Excep   = e;
                return(Json(err));
            }
        }
示例#13
0
        /// <summary>
        /// 导出数据
        /// </summary>
        /// <returns></returns>
        public ActionResult ExportData()
        {
            string sql        = "";
            long   tbReportId = 0;  //初始化tbReportId
            string strResult  = ""; //返回参数
            //获得参数
            string code = Request["code"].Trim();

            if (!string.IsNullOrEmpty(Request["tbReportId"].Trim()))
            {
                tbReportId = Convert.ToInt64(Request["tbReportId"].Trim());
            }
            string queryParams = Request["queryParams"]; //查询条件
            string url         = Request["url"];         //页面url

            url = System.Web.HttpUtility.UrlDecode(url);
            string bootUrl    = Request["bootUrl"];                                                                                    //网站根目录(含虚拟层级)
            string strHost    = bootUrl.Substring(0, bootUrl.IndexOf(Request.Url.Authority.ToLower()) + Request.Url.Authority.Length); //http头
            string exportWay  = Request["exportWay"];                                                                                  //导出方式
            string fileFormat = Request["fileFormat"];                                                                                 //文件格式

            EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
            err.IsError = false;

            #region 逻辑部分
            try
            {
                var report = _reportAppService.GetReportBase(code);
                var expCfg = _exportAppService.GetExportConfig("report");//得到当前功能的配置信息
                #region 默认值
                int    intWaitTime  = 60000;
                int    intMaxRowNum = 1800000;
                int    intDataSize  = 51200;
                int    intValidDay  = 15;
                string strPath      = "upfiles";
                if (expCfg.WaitTime == null || expCfg.WaitTime <= 0)
                {
                    expCfg.WaitTime = intWaitTime;
                }
                if (expCfg.MaxRowNum == null || expCfg.MaxRowNum <= 0)
                {
                    expCfg.MaxRowNum = intMaxRowNum;
                }
                if (expCfg.DataSize == null || expCfg.DataSize <= 0)
                {
                    expCfg.DataSize = intDataSize;
                }
                if (expCfg.ValidDay == null || expCfg.ValidDay <= 0)
                {
                    expCfg.ValidDay = intValidDay;
                }
                if (expCfg.Path == null || expCfg.Path.Trim() == "")
                {
                    expCfg.Path = (bootUrl.Replace(strHost, "") + strPath).Replace("\\", "/").Replace("//", "/");
                }
                else
                {
                    expCfg.Path = (bootUrl.Replace(strHost, "") + expCfg.Path).Replace("\\", "/").Replace("//", "/");
                }
                #endregion
                sql = _reportAppService.GetSqlForField(code, queryParams, tbReportId, ref err);

                if (err.IsError)
                {
                    throw new Exception(err.Message);
                }
                int intCountSize = IntDataSize(sql, (report == null || report.DbServerId == null ? null : report.DbServerId));//返回当前集合条数
                if (intCountSize <= 0)
                {
                    return(Content("暂无无数据导出!"));
                }
                #region 抽样数据
                double   WaitTime   = (double)expCfg.WaitTime;
                DateTime datEndDate = DateTime.Now.AddMilliseconds(WaitTime);//最大等待时长
                if (DateTime.Now > datEndDate && exportWay == "online")
                {
                    return(Content("online导出时,由于数据量过大,在统计数据时超出online最大等待时长,请转为offline导出。是否转为offline导出?"));
                }
                long intPumping = GetPumpingSize(report.DbServerId, sql, intCountSize, WaitTime, exportWay);//通过样品数据预估数据集大小,如果小于等于0,表示超时
                if (intPumping <= 0)
                {
                    return(Content("online导出时,由于数据量过大,在数据抽样时超出online最大等待时长,请转为offline导出。是否转为offline导出?"));
                }
                #endregion

                //判断是否为offline
                if ((intCountSize > expCfg.MaxRowNum || intPumping > expCfg.DataSize) && exportWay == "online")
                {
                    return(Content("online导出最大支持" + expCfg.MaxRowNum + "条数据及" + expCfg.DataSize + "KB字节,是否转为offline导出?"));
                }

                object objTopFields = "";
                if (tbReportId != 0)
                {
                    var topFieldArr = _tbReportAppService.GetFildTopList(tbReportId); //获取多表头字段集合
                    var fieldArr    = _tbReportAppService.GetFildList(tbReportId);    //获取字段集合

                    if (topFieldArr != null && topFieldArr.Count > 0)
                    {
                        objTopFields = GetTopFieldForExcel(topFieldArr.ToArray(), fieldArr.ToArray()); //多表头信息
                    }
                }
                //根据url得到module
                var             module = _moduleAppService.GetModuleByUrl(url);
                string          strExt = GetExtend(fileFormat.ToLower());
                ExportDataModel exp    = new ExportDataModel
                {
                    ReportCode   = code,
                    DisplayName  = (module.Name == null || module.Name.Trim() == "" ? "" : module.Name + "_") + DateTime.Now.Ticks,
                    ExportWay    = exportWay,
                    FromUrl      = url,
                    FileFormat   = strExt,
                    FilePath     = expCfg.Path,
                    ValidDay     = expCfg.ValidDay,
                    TopFields    = objTopFields,//多表头信息
                    ColumnHeader = "",
                    Sql          = sql,
                    DbServerId   = report == null || report.DbServerId == null ? null : report.DbServerId,
                    FileName     = (module == null ? "无名称" : module.Name) + "_" + DateTime.Now.Ticks,
                    Status       = "生成中",
                    ObjParam     = "",
                    IsClose      = false
                };
                if (module.Id > 0)
                {
                    exp.ModuleId = module.Id;
                }

                //针对两种形式的导出处理,待完善
                switch (exportWay)
                {
                case "offline":
                    strResult = _exportAppService.OfflineExportData(exp, intCountSize);
                    break;

                case "online":
                    strResult = strHost + _exportAppService.OnlineExportData(exp);
                    break;

                default:
                    strResult = strHost + _exportAppService.OnlineExportData(exp);
                    break;
                }
            }
            catch (Exception ex)
            {
                err.IsError = false;
                string strHtml = "<script src=\"../Scripts/jquery-2.2.4.min.js\"></script>";
                strHtml += "<script src=\"../Common/rootUrl.js\"></script>";
                strHtml += "<script src=\"../Common/Scripts/errorPage/error.js\"></script>";
                strHtml += "<script>$(function () {SendErrorInfo('导出提示','导出时,程序异常。代码:" + ex.Message + ",请联系管理员')})</script>";
                return(Content(strHtml));
            }
            #endregion
            return(Content(strResult));
        }