/****************************** * 说明:表格报表模版 * 创建人:龚宇超 * 创建日期:2017-11-20 * 修改人: * 修改日期: * 修改备注: * 版本:1.0.0.0 ******************************/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Lskj.Control; using Lskj.Model; using Lskj.Control.Model; using Lskj.Util; using Lskj.Data; using Lskj.Business.Impl; using Lskj.Business; using System.Threading.Tasks; using System.Collections; namespace Lskj.Report { public partial class FrmMain : BaseForm { /// /// 报表动态链接库参数 /// public DynamicReportModel Model; public FrmMain() { InitializeComponent(); } /// /// 说明:窗口加载 /// 创建人:龚宇超 /// 创建日期:2017-11-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The instance containing the event data. protected override void OnLoad(EventArgs e) { WaitForm.ShowForm(); try { Dictionary dataCaches = Model != null ? Model.DataCaches : null; this.Model.Privilege = this.Model.Privilege.Equals("3") ? "1" : Model.ModuleId > 0 ? BaseImpl.GetUserPurviewsByMenuId(Model.ModuleId + "") + "" : BaseImpl.GetUserPurviewsByMenuCode(Model.ModuleCode) + ""; this.mControl.ModuleGridDetailObj.ModuleGridObj.VisibleOperPanel = false; if (!dataCaches.GetValue(this, "Details", out List details)) { details = GetReportDetails(); } this.mControl.Details = details; this.mControl.InitControls(Model); this.FormClosing += new FormClosingEventHandler(OnClose); } catch (Exception ex) { LogHelper.Instance.WriteError(ex, ResourceKeys.BaseReport); //MessageUtil.Show(ex.Message + "\r\n" + ex.StackTrace); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } finally { Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this); this.mControl.Visible = true; } WaitForm.HideForm(); } private void OnClose(object sender, FormClosingEventArgs e) { this.mControl.CloseModule(); } /// /// 说明:获取报表明细 /// 创建人:龚宇超 /// 创建日期:2017-11-22 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// List<GridDetailModel>. private List GetReportDetails() { List details = new List(); DataTable table = ReportImpl.GetReportDetailPages(Model.ModuleCode); foreach (DataRow item in table.Rows) { DataTable gridColumns = ReportImpl.GetReportDetailColumns(Model.ModuleCode, item["id"] + ""); details.Add(new GridDetailModel(item, gridColumns, GridCustomColumnStruct.BaseDetailGridView)); } return details; } /// /// 获取数据源缓存 /// /// public void GetDataCaches(Dictionary cachesDic) { //全局数据 Task dynamicModelTask = cachesDic.AddTask(this, "DynamicModel", new Task(() => { return Model;//动态链接库对象 })); Task systemDllRowTask = cachesDic.AddTask(this, "SystemDllRow", new Task(() => { return MainImpl.GetSystemdllTab(Model.ModuleCode);//获取单个模块信息 })); Task sysModelTask = cachesDic.AddTask(this, "SysModel", new Task(() => { ModuleModel sysModel = new ModuleModel(systemDllRowTask.Result); return sysModel;//系统模块实体对象 })); Task> detailTask = cachesDic.AddTask(this, "Details", new Task>(() => { DataTable detailPages = ReportImpl.GetReportDetailPages(Model.ModuleCode);// List details = new List();//表格明细对象的集合 foreach (DataRow item in detailPages.Rows) { GridDetailModel gridDetailModel = new GridDetailModel(item, null, GridCustomColumnStruct.BaseDetailGridView); details.Add(gridDetailModel); Task addGridColumnsTask = cachesDic.AddTask(gridDetailModel, "GridColumns", new Task(() => { DataTable gridColumns = ReportImpl.GetReportDetailColumns(Model.ModuleCode, item["id"] + "");//获取报表明细列 gridDetailModel.GridColumns = gridColumns; return gridColumns; })); } return details; })); Task formTypeTask = cachesDic.AddTask(this, "FormType", new Task(() => { return BaseImpl.GetBaseType(Model.ModuleCode); })); Task privilegeTask = cachesDic.AddTask(this, "Privilege", new Task(() => { return Model.Privilege.Equals("3") ? "1" : Model.ModuleId > 0 ? BaseImpl.GetUserPurviewsByMenuId(Model.ModuleId + "") + "" : BaseImpl.GetUserPurviewsByMenuCode(Model.ModuleCode) + "";// 权限(1.有操作权限.0.无权限.2.只读权限.3.右键配置权限全部开放) })); //添加数据到mControl cachesDic.AddTask(mControl, "DynamicModel", dynamicModelTask); cachesDic.AddTask(mControl, "SystemDllRow", systemDllRowTask); cachesDic.AddTask(mControl, "SysModel", sysModelTask); cachesDic.AddTask(mControl, "Details", detailTask); //获取mControl控件的数据 mControl.GetDataCaches(cachesDic); } } }