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.Model; using Lskj.Util; using Lskj.Control; using Lskj.Data; using Lskj.Model; using Lskj.Business.Impl; using Lskj.Core; using DevExpress.XtraTab; using DevExpress.Utils; namespace Lskj.ProductionTest { public partial class FrmMain : DevExpress.XtraEditors.XtraForm { #region 公共变量 /// /// 入口模型 /// public DynamicProductionModel SysModel; /// ///查询条件控件 /// public MyControl SearchObj; /// /// 主控件集 /// public MyControl ControlObj; /// /// 父容器 /// public MyControl ParentControl; /// /// 基础模型 /// public ModuleModel MoudleObj; /// /// 表格明细集合 /// public List GridDetailModelObjs; /// /// 主键名 /// private string _primaryKey; /// /// 选项卡排序Sql /// private Dictionary _dicOrder = new Dictionary(); #endregion #region 私有变量 /// /// 控件源数据 /// private DataTable _dtFields; /// /// 主键值 /// private string _keyValue; #endregion public FrmMain() { InitializeComponent(); } #region 窗体加载时 /// /// 说明:窗体加载时 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The instance containing the event data. protected override void OnLoad(EventArgs e) { this.splitContainerMain.Visible = false; WaitForm.ShowForm(); try { if (DBConfig.Instance.CreateConnection()) { this.InitializeSetting(); this.InitializeControl(); //this.InitlizeSpiltLocation(); } } catch (Exception ex) { LogHelper.Instance.WriteError(ex, "生产排产模块"); //MessageUtil.Show(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } finally { Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this); WaitForm.HideForm(); this.splitContainerMain.Visible = true; } } #endregion #region 初始化属性 /// /// 说明:初始化属性设置 /// 创建人:王一帆 /// 创建日期:2019-12-11 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeSetting() { this._primaryKey = BaseImpl.GetBasePrimaryKey("PC001"); this.MoudleObj = new ModuleModel(MainImpl.GetSystemdllTab("PC001")); ERPInfo.Instance.UserName = "管理员"; this._dtFields = BaseModuleImpl.GetControlLocation(this.MoudleObj.FormKey, "PC001"); //this.GetDetailOrderCond(); //if (!string.IsNullOrEmpty(this.SysModel.ParmaryValue)) //{ // this._keyValue = this.SysModel.ParmaryValue; //} } #endregion #region 获取明细SQL排序条件 /// /// 说明:获取明细SQL排序条件 /// 创建人:龚宇超 /// 创建日期:2018-07-26 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void GetDetailOrderCond() { string orderStr = string.Empty; foreach (GridDetailModel mode in GridDetailModelObjs) { if (mode.Orderid == -100) continue; DataRow dr = ProduceImpl.GetTabPageOrderCond(mode.UnionModule); if (dr != null) orderStr = dr["MobileOrderStr"] + ""; _dicOrder.Add(mode.UnionModule, orderStr); } } #endregion #region 初始化控件 /// /// 说明:初始化控件 /// 创建人:王一帆 /// 创建日期:2019-12-11 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeControl() { //this.ControlObj = new MyControl(); //this.ControlObj.InitControl(_dtFields, this.pl_left_top_search); this.GridDetailModelObjs = GetDetailGrids(); this.tabLeftTopDetail.InitTabPages(this.GridDetailModelObjs.Where(o => o.Orderid <= -1 && o.Orderid >= -9).ToList()); this.tabLeftBottomDetail.InitTabPages(this.GridDetailModelObjs.Where(o => o.Orderid < -9).ToList()); this.tabRightTopDetail.InitTabPages(this.GridDetailModelObjs.Where(o => o.Orderid == 0).ToList()); this.tabRightBottomDetail.InitTabPages(this.GridDetailModelObjs.Where(o => o.Orderid == 1).ToList()); this.InitSearchFiled(); this.SetTabPageStyle(); } #endregion #region 设置动态TabPage的样式 /// /// 说明:设置动态的TabPage的样式隐藏页签标题 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SetTabPageStyle() { tabLeftTopDetail.TabControlObj.ShowTabHeader = tabLeftTopDetail.TabControlObj.TabPages.Count == 1 ? DefaultBoolean.False : DefaultBoolean.Default; tabLeftBottomDetail.TabControlObj.ShowTabHeader = tabLeftBottomDetail.TabControlObj.TabPages.Count == 1 ? DefaultBoolean.False : DefaultBoolean.Default; tabRightTopDetail.TabControlObj.ShowTabHeader = tabRightTopDetail.TabControlObj.TabPages.Count == 1 ? DefaultBoolean.False : DefaultBoolean.Default; tabRightBottomDetail.TabControlObj.HeaderLocation = tabLeftTopDetail.TabControlObj.HeaderLocation = tabLeftBottomDetail.TabControlObj.HeaderLocation = TabHeaderLocation.Bottom; } #endregion #region 初始化搜索 /// /// 说明:初始化搜索 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitSearchFiled() { this.SearchObj = new MyControl(this.MoudleObj.MenuSql, null); DataTable queryTable = BaseModuleImpl.GetCustomQueryFields(this.MoudleObj.CondKey); this.SearchObj.ModuleId = 0; this.SearchObj.RememberRow = true; if (queryTable != null && queryTable.Rows.Count > 0) { // 加载自定义查询条件 this.pl_left_top_search.Controls.Clear(); // this.SearchObj.OtherParams = SysModel.OtherParams(); this.SearchObj.InitSearchControl(queryTable, this.pl_left_top_search, null); this.SearchObj.OnSearchBeforeCallBack += new SearchEventHandler(SearchObj_OnSearchBefore); if (this.SearchObj.ControlModels != null && this.SearchObj.ControlModels.Count > 0) { BaseUserControl mControl = this.SearchObj.FindControl(this.SearchObj.ControlModels[0].FieldName); if (mControl != null) { //mControl.EditText = this.SysModel.ParmaryValue; SearchObj_OnSearchBefore(null, null); } foreach (ControlModel item in this.SearchObj.ControlModels) { BaseUserControl uControl = this.SearchObj.FindControl(item.FieldName); if (uControl != null) { //this.SysModel.SearchControlEnable uControl.Enabled = true; SearchObj_OnSearchBefore(null, null); } } //this.SysModel.SearchControlEnable this.SearchObj.ButtonObj.Enabled = true; } } else { // 加载固定查询条件 DataTable dtCond = BaseModuleImpl.GetFixedQueryFields(this.SysModel.ModuleCode); this.cbField.DisplayMember = "username1"; this.cbField.ValueMember = "fieldname"; this.cbField.DataSource = dtCond; this.SearchObj.InitDefaultSearchControl(dtCond, this.pl_left_top_search); } } #endregion #region 获取明细 /// /// 说明:获取报表明细 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private List GetDetailGrids() { List details = new List(); DataTable moduleDetailBottomTable = BaseModuleImpl.GetBaseDetailPages("PC001"); if (moduleDetailBottomTable.Rows.Count == 0) { moduleDetailBottomTable = BaseModuleImpl.GetBaseAddTabDetail("PC001"); } foreach (DataRow item in moduleDetailBottomTable.Rows) { DataTable dtGridColumns = ReportImpl.GetReportDetailColumns("PC001", item["id"] + ""); details.Add(new GridDetailModel(item, dtGridColumns, GridCustomColumnStruct.BaseDetailGridView)); } return details; } #endregion #region 自定义搜索事件 /// /// 说明:初始化自定义搜索 /// 创建人:王一帆 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SearchObj_OnSearchBefore(object sender, SearchArgs e) { try { DataRow dataRow = MainImpl.GetDataRowResult(this.SearchObj.SetSearchSqlValue(this.MoudleObj.MenuSql)); if (dataRow != null) { this._keyValue = dataRow[this._primaryKey] + ""; //三部分明细数据源更新 setTabPageGridData(tabLeftTopDetail, dataRow); setTabPageGridData(tabLeftBottomDetail, dataRow); //setTabPageGridData(tabRightTopDetail, dataRow); //setTabPageGridData(tabRightBottonDetail, dataRow); //setTabPageGridData(tabRightDetail, dataRow); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } #endregion #region 设置选项卡数据源 /// /// 说明:设置选项卡数据源 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void setTabPageGridData(TabControlEx tabDetail, DataRow rowItem) { foreach (XtraTabPage tabPage in tabDetail.TabControlObj.TabPages) { //附件预览跳过 if (tabPage.Text == "附件预览") continue; GridDetailModel model = tabDetail.GetGridDetailModel(tabPage); GridControlEx gridControl = tabPage.Tag as GridControlEx; gridControl.LastSearchSql = this.GetSearchSql(model, rowItem); tabDetail.SetGridDataSource(tabPage, MainImpl.GetDataTableResult(gridControl.LastSearchSql)); } } #endregion #region 获取查询条件 /// /// 说明:获取查询条件 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The model. /// The row item. /// System.String. protected string GetSearchSql(GridDetailModel model, DataRow rowItem) { string fieldName = !string.IsNullOrEmpty(model.UnionParentField) ? model.UnionParentField : this.MoudleObj.ParmaryKey; string sqlValue = model.IsReadOnly ? model.DetailSql : model.SystemModel.MenuSql; // string orderCond = _dicOrder.FirstOrDefault(o => o.Key == model.UnionModule).Value; if (ReplaceHelper.IsSelect(sqlValue) && !string.IsNullOrEmpty(model.UnionValue)) { sqlValue = ReplaceHelper.ReplaceWhereCond(sqlValue) + string.Format(" and {0}='{1}'", model.UnionValue, rowItem[fieldName] + ""); } else { sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue); } return sqlValue; } #endregion } }