using DevExpress.XtraEditors; using DevExpress.XtraTab; using Lskj.Business; using Lskj.Business.Impl; using Lskj.Control; using Lskj.Control.Model; using Lskj.Data; using Lskj.Model; using Lskj.SweepCode.Control; using Lskj.Util; 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; namespace Lskj.SweepCode { public partial class FrmCompletion : BaseForm { #region 公共变量 /// /// 入口模型 /// public DynamicProductionModel SysModel; /// /// 是否点击回车新增控件了 /// public bool isEnterClick = false; /// ///执行刷新sql /// public string LastRefreshSql; /// ///之前模块值 /// public string AfterModule; /// ///当前模块值 /// public string NewModule; /// ///下面明细表模块值 /// public string BottomModule; /// ///当前模块值的关联值 /// public string NewUnionValue; /// ///查询条件控件 /// public MyControl SearchObj; /// /// 主控件集 /// public MyControl ControlObj; /// /// 当前控件集合 /// public MyControl NewControlObj; /// /// 明细控件集合 /// public MyControl DetailControlObj; /// /// 基础模型 /// public ModuleModel MoudleObj; /// /// 下表格基础模型 /// public ModuleModel BottomMoudleObj; /// /// 当前基础模型 /// public ModuleModel NewMoudleObj; /// /// 明细衍生到下侧数据 /// public List GridDetailAddObj; #endregion #region 私有变量 /// /// 子系统默认背景色 /// private string[] _defaultColors = { "#0198A3", "#1C76C8", "#F88906", "#EA5C46" }; /// /// 数据索引 /// private int _dataIndex; /// /// 初始化完成标记 /// private bool _isInitFinish; /// /// 附件部分显隐 /// private bool _isFilePanelVisble; /// /// 附件源sql /// private string _fileSql; /// /// 主键值 /// private string _keyValue; /// /// 主键名 /// private string _primaryKey; /// /// 附件地址 /// private string _filePath; /// /// 选项卡刷新页签 /// private string[] _pageIndex; /// /// 主界面传入数据内容 /// private DataRow _rowItem; /// /// 当前数据内容 /// private DataRow _NewrowItem; /// /// 配置100明细的表 /// private DataTable _DetailedTab; /// /// 控件源数据 /// private DataTable _dtFields; /// /// 当前控件源数据 /// private DataTable _newdtFields; /// /// 控件源数据 /// private DataTable _dtBottomFields; /// /// 扫码控件源数据 /// private DataTable _codeFields; /// /// 动态加载右侧按钮 /// private DataTable _RightFields; /// /// 主表数据 /// private DataTable _dtMainTable; /// /// pdf附件资源 /// private DataTable _dtFiles; /// /// 搜索字段 /// private string _searchFile; /// /// 搜索字段条件 /// private string _searchCode; /// /// 附件下拉菜单 /// private LabelComboxEdit _fileComboBox; /// /// 查看附件 /// private ModuleWebView _moduleWebView; /// /// 选项卡排序Sql /// private Dictionary _dicOrder = new Dictionary(); /// ///默认窗口长度 /// private int _windowWidth; /// /// 分割条横坐标 /// private int _splitLocation; #endregion public FrmCompletion() { InitializeComponent(); } #region 事件 #region 保存完工界面的数据 /// /// 说明:完工界面保存点击事件 /// 创建人:王一帆 /// 创建日期:2021-06-23 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void OnsaveaddClick(object sender, EventArgs e) { try { BaseUserControl baseControl = null; if (_dtBottomFields != null && _dtBottomFields.Columns.Contains("IsAddControl")) { DataRow item = _dtBottomFields.Rows.Cast().FirstOrDefault(x => x["IsAddControl"].ToString().Equals("1")); baseControl = this.DetailControlObj.FindControl(item["fieldName"] + ""); } bool isAddEmpty = baseControl != null ? !string.IsNullOrEmpty(baseControl.EditText) : false; if (!isEnterClick && isAddEmpty) { MessageUtil.Show("回车明细数据已填写未回车保存!"); return; } bool success = false; success = this.UpdateControlRecord(false); if (success) { DataRow LastrowItem = BaseImpl.GetDataRowResult(LastRefreshSql); if (LastrowItem != null) { setTabPageGridData(RecordForm, LastrowItem); this.ControlObj.SetAllControlValue(LastrowItem); this.DetailControlObj.SetAllControlValue(LastrowItem); } if (this.NewMoudleObj.ModifyClose) { this.DialogResult = DialogResult.OK; this.Close(); } } else { } } //if (success && this.OnCloseCallback != null) // this.OnCloseCallback(sender, e);} catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } #endregion #region 回车委托增加下表格数据 /// /// 说明:修改数据 /// 创建人:王一帆 /// 创建日期:2018-04-03 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void OnAddCallAfter(object sender, EventArgs e) { try { if (this.DetailControlObj.VerifyNull()) { bool success = false; string PrimaryKey = BaseImpl.GetBasePrimaryKey(this.BottomModule); GridDetailModel model = this.RecordForm.GetGridDetailModel(this.RecordForm.TabControlObj.SelectedTabPage); string primaryKey = string.Empty; success = this.DetailControlObj.SaveBaseModuleData(this.BottomModule, this.BottomMoudleObj.MenuTable, PrimaryKey, ref primaryKey, true, "", false, this.BottomMoudleObj.NewVer); if (success) { DataRow LastrowItem = BaseImpl.GetDataRowResult(LastRefreshSql); if (LastrowItem != null) { setTabPageGridData(RecordForm, LastrowItem); this.ControlObj.SetAllControlValue(LastrowItem); this.DetailControlObj.ResetControlValue(); setTabPageGridData(RecordForm, LastrowItem); this.NewControlObj.SetAllControlValue(LastrowItem); isEnterClick = true; } if (this.BottomMoudleObj.ModifyClose) { //this.DialogResult = DialogResult.OK; //this.Close(); } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } #endregion #region 退出 /// /// 说明:完工界面退出点击事件 /// 创建人:王一帆 /// 创建日期:2021-07-02 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void OnputOutClick(object sender, EventArgs e) { try { this.DialogResult = DialogResult.OK; this.Close(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } #endregion #region 点击退出事件 /// /// 说明:点击退出事件 /// 创建人:王一帆 /// 创建日期:2021-07-02 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void OnOutClick(object sender, EventArgs e) { } #endregion #endregion #region 方法 #region 修改数据 /// /// 说明:修改数据 /// 创建人:王一帆 /// 创建日期:2018-04-03 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public bool UpdateControlRecord(bool isClose = true) { bool isSuccess = false; if (this.NewControlObj.VerifyNull()) { string PrimaryKey = BaseImpl.GetBasePrimaryKey(this.NewModule); string primaryKey = (_NewrowItem != null) ? _NewrowItem[PrimaryKey] + "" : string.Empty; isSuccess = this.NewControlObj.SaveBaseModuleData(this.NewModule, this.NewMoudleObj.MenuTable, PrimaryKey, ref primaryKey, _NewrowItem == null, "", false, this.NewMoudleObj.NewVer); return isSuccess; } return isSuccess; } #endregion #region 获取TabPage绑定的实体对象 /// /// 说明:获取TabPage绑定的实体对象 /// 创建人:王一帆 /// 创建日期:2021-07-03 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tab page. /// GridDetailModel. public GridDetailModel GetGridDetailModel(XtraTabPage tabPage) { if (tabPage == null) return null; if (tabPage.Tag is GridControlEx) return (tabPage.Tag as GridControlEx).Tag as GridDetailModel; if (tabPage.Tag is ChartControlEx) return (tabPage.Tag as ChartControlEx).Tag as GridDetailModel; if (tabPage.Tag is ModuleWebView) return (tabPage.Tag as ModuleWebView).Tag as GridDetailModel; if (tabPage.Tag is ModuleWebView) return (tabPage.Tag as ModuleWebView).Tag as GridDetailModel; return null; } #endregion #region 加载第二界面 /// /// 说明:加载第二界面 /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void finishWork(string AfterModule, DataRow _rowItem, DynamicProductionModel SysModel, List paramList, string LastRefreshSql) { this.AfterModule = AfterModule; this.NewModule = paramList[0];//参数1用于存储当前关联模块 this.NewUnionValue = paramList[2];//参数1用于存储当前关联模块 this.LastRefreshSql = LastRefreshSql; this._rowItem = _rowItem; this.SysModel = SysModel; this.InitializeSetting(); this.InitializeControl(); this.InitializeDetailGrid(); } #endregion #region 初始化属性 /// /// 说明:初始化控件 /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void InitializeSetting() { this.MoudleObj = new ModuleModel(MainImpl.GetSystemdllTab(AfterModule)); this.MoudleObj.ParmaryKey = BaseImpl.GetBasePrimaryKey(AfterModule); this.NewMoudleObj = new ModuleModel(MainImpl.GetSystemdllTab(NewModule)); this.NewMoudleObj.ParmaryKey = BaseImpl.GetBasePrimaryKey(NewModule); this._dtFields = BaseModuleImpl.GetControlLocation(this.MoudleObj.FormKey, AfterModule); this._newdtFields = BaseModuleImpl.GetControlLocation(this.NewMoudleObj.FormKey, NewModule); } #endregion #region 初始化控件 /// /// 说明:初始化控件 /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void InitializeControl() { this.ControlObj = new MyControl(); this.ControlObj.InitControl(_dtFields, this.pl_Main_Center, false); this.NewControlObj = new MyControl(); this.NewControlObj.InitControl(_newdtFields, this.detailpl_Top, false); this.GridDetailAddObj = GetDetailGrids(AfterModule).Where(o => o.Orderid == 100).ToList(); if (this.GridDetailAddObj != null) { this.BottomModule = this.GridDetailAddObj[0].UnionModule; this.BottomMoudleObj = new ModuleModel(MainImpl.GetSystemdllTab(BottomModule)); this.MoudleObj = new ModuleModel(MainImpl.GetSystemdllTab(AfterModule)); this._dtBottomFields = BaseModuleImpl.GetControlLocation(BottomMoudleObj.FormKey, BottomModule); this.DetailControlObj = new MyControl(); this.DetailControlObj.InitControl(_dtBottomFields, this.detailpl_Bottom, false); this.DetailControlObj.OnAddCallBack += new EventHandler(OnAddCallAfter); } this.detailpl_Top.Height = 67; } #endregion #region 加载新数据源 /// /// 说明:加载新的数据 /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 数据索引 private void LoadNewForm(DataRow dataRowItem) { //三部分明细数据源更新 setTabPageGridData(RecordForm, dataRowItem); this.ControlObj.SetAllControlValue(dataRowItem); this.DetailControlObj.SetAllControlValue(dataRowItem); DataTable queryTable = BaseModuleImpl.GetCustomQueryFields(this.NewMoudleObj.CondKey); if (queryTable != null && queryTable.Rows.Count > 0) { _searchFile = queryTable.Rows[0]["fieldName"] + ""; _searchCode = queryTable.Rows[0]["checkCond"] + ""; } if (!string.IsNullOrEmpty(_searchCode)) { string SearchCode = ReplaceHelper.ReplaceParamToValue(_searchCode, NewUnionValue); // 未替换的参数所有替换搜索值 DataTable dt = BaseImpl.GetDataTableResult(ReplaceHelper.ReplaceWhereCond(this.NewMoudleObj.MenuSql + " ") + SearchCode); _NewrowItem = dt.Rows.Count > 0 ? dt.Rows[0] : null; } else { _NewrowItem = BaseImpl.GetDataTableResult(ReplaceHelper.ReplaceWhereCond(this.NewMoudleObj.MenuSql) + "and" + _primaryKey + "=" + NewUnionValue).Rows[0]; } if (_NewrowItem != null) this.NewControlObj.OnDataSourceBindCallBack += new EventHandler(OnNewCtrSearchDataSourceBindCallBack);// 数据源绑定完成触发 } #endregion #region 设置选项卡数据源 /// /// 说明:设置选项卡数据源 /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void setTabPageGridData(TabControlEx tabDetail, DataRow rowItem) { foreach (XtraTabPage tabPage in RecordForm.TabControlObj.TabPages) { GridDetailModel model = tabDetail.GetGridDetailModel(tabPage); GridControlEx gridControl = tabPage.Tag as GridControlEx; gridControl.LastSearchSql = this.GetSearchSql(model, rowItem); string PrimaryKey = BaseImpl.GetBasePrimaryKey(this.BottomModule); string fieldName = !string.IsNullOrEmpty(model.UnionParentField) && _rowItem.Table.Columns.Contains(model.UnionParentField) ? model.UnionParentField : PrimaryKey; tabDetail.SetGridDataSource(tabPage, MainImpl.GetDataTableResult(gridControl.LastSearchSql)); if (!string.IsNullOrWhiteSpace(model.UnionValue) && !string.IsNullOrWhiteSpace(model.UnionParentField)) { this.DetailControlObj.SetControlValue(model.UnionValue, _rowItem[fieldName]); } } } #endregion #region 获取查询条件 /// /// 说明:获取查询条件 /// 创建人:龚宇超 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本: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 + orderCond; } #endregion #region 初始化扫码功能模块的明细数据 /// /// 说明:初始化第二界面功能模块的明细数据 /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeDetailGrid() { this.RecordForm.Model = this.SysModel; this.RecordForm.InitTabPages(GridDetailAddObj); if (_rowItem != null) { LoadNewForm(_rowItem); } } #endregion #region 获取明细 /// /// 说明:获取报表明细 /// 创建人:王一帆 /// 创建日期:2021-06-16 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private List GetDetailGrids(string ModuleCode) { List details = new List(); DataTable moduleDetailBottomTable = BaseModuleImpl.GetBaseDetailPages(ModuleCode); if (moduleDetailBottomTable.Rows.Count == 0) { moduleDetailBottomTable = BaseModuleImpl.GetBaseAddTabDetail(ModuleCode); } foreach (DataRow item in moduleDetailBottomTable.Rows) { DataTable dtGridColumns = ReportImpl.GetReportDetailColumns(ModuleCode, item["id"] + ""); details.Add(new GridDetailModel(item, dtGridColumns, GridCustomColumnStruct.BaseDetailGridView)); } return details; } #endregion #region 底部数据源数据加载完成后触发事件 /// /// 说明:查询条件绑定完成查询数据 /// 创建人:龚宇超 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnNewCtrSearchDataSourceBindCallBack(object sender, EventArgs e) { try { this.NewControlObj.SetAllControlValue(_NewrowItem); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #endregion } }