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))); }
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(); }
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); }
/// <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)); }
/// <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)); }
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; } }
/// <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); }
/// <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); }
/// <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); } }
/// <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; } } }
/// <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("导出命令已发出"); }
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)); } }
/// <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)); }