Files
lserp_cs_6.0/插件库/Lskj.MesGumDip/FrmCompletion.cs
T
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

651 lines
24 KiB
C#

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.MesGumDip.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.MesGumDip
{
public partial class FrmCompletion : BaseForm
{
#region 公共变量
/// <summary>
/// 入口模型
/// </summary>
public DynamicProductionModel SysModel;
/// <summary>
/// 是否点击回车新增控件了
/// </summary>
public bool isEnterClick = false;
/// <summary>
///执行刷新sql
/// </summary>
public string LastRefreshSql;
/// <summary>
///之前模块值
/// </summary>
public string AfterModule;
/// <summary>
///当前模块值
/// </summary>
public string NewModule;
/// <summary>
///下面明细表模块值
/// </summary>
public string BottomModule;
/// <summary>
///当前模块值的关联值
/// </summary>
public string NewUnionValue;
/// <summary>
///查询条件控件
/// </summary>
public MyControl SearchObj;
/// <summary>
/// 主控件集
/// </summary>
public MyControl ControlObj;
/// <summary>
/// 当前控件集合
/// </summary>
public MyControl NewControlObj;
/// <summary>
/// 明细控件集合
/// </summary>
public MyControl DetailControlObj;
/// <summary>
/// 基础模型
/// </summary>
public ModuleModel MoudleObj;
/// <summary>
/// 下表格基础模型
/// </summary>
public ModuleModel BottomMoudleObj;
/// <summary>
/// 当前基础模型
/// </summary>
public ModuleModel NewMoudleObj;
/// <summary>
/// 明细衍生到下侧数据
/// </summary>
public List<GridDetailModel> GridDetailAddObj;
#endregion
#region 私有变量
/// <summary>
/// 子系统默认背景色
/// </summary>
private string[] _defaultColors = { "#0198A3", "#1C76C8", "#F88906", "#EA5C46" };
/// <summary>
/// 数据索引
/// </summary>
private int _dataIndex;
/// <summary>
/// 初始化完成标记
/// </summary>
private bool _isInitFinish;
/// <summary>
/// 附件部分显隐
/// </summary>
private bool _isFilePanelVisble;
/// <summary>
/// 附件源sql
/// </summary>
private string _fileSql;
/// <summary>
/// 主键值
/// </summary>
private string _keyValue;
/// <summary>
/// 主键名
/// </summary>
private string _primaryKey;
/// <summary>
/// 附件地址
/// </summary>
private string _filePath;
/// <summary>
/// 选项卡刷新页签
/// </summary>
private string[] _pageIndex;
/// <summary>
/// 主界面传入数据内容
/// </summary>
private DataRow _rowItem;
/// <summary>
/// 当前数据内容
/// </summary>
private DataRow _NewrowItem;
/// <summary>
/// 配置100明细的表
/// </summary>
private DataTable _DetailedTab;
/// <summary>
/// 控件源数据
/// </summary>
private DataTable _dtFields;
/// <summary>
/// 当前控件源数据
/// </summary>
private DataTable _newdtFields;
/// <summary>
/// 控件源数据
/// </summary>
private DataTable _dtBottomFields;
/// <summary>
/// 扫码控件源数据
/// </summary>
private DataTable _codeFields;
/// <summary>
/// 动态加载右侧按钮
/// </summary>
private DataTable _RightFields;
/// <summary>
/// 主表数据
/// </summary>
private DataTable _dtMainTable;
/// <summary>
/// pdf附件资源
/// </summary>
private DataTable _dtFiles;
/// <summary>
/// 搜索字段
/// </summary>
private string _searchFile;
/// <summary>
/// 搜索字段条件
/// </summary>
private string _searchCode;
/// <summary>
/// 附件下拉菜单
/// </summary>
private LabelComboxEdit _fileComboBox;
/// <summary>
/// 查看附件
/// </summary>
private ModuleWebView _moduleWebView;
/// <summary>
/// 选项卡排序Sql
/// </summary>
private Dictionary<string, string> _dicOrder = new Dictionary<string, string>();
/// <summary>
///默认窗口长度
/// </summary>
private int _windowWidth;
/// <summary>
/// 分割条横坐标
/// </summary>
private int _splitLocation;
#endregion
public FrmCompletion()
{
InitializeComponent();
}
#region 事件
#region 保存完工界面的数据
/// <summary>
/// <para>说明:完工界面保存点击事件</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-06-23 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void OnsaveaddClick(object sender, EventArgs e)
{
try
{
BaseUserControl baseControl = null;
if (_dtBottomFields != null && _dtBottomFields.Columns.Contains("IsAddControl"))
{
DataRow item = _dtBottomFields.Rows.Cast<DataRow>().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 回车委托增加下表格数据
/// <summary>
/// <para>说明:修改数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2018-04-03 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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 退出
/// <summary>
/// <para>说明:完工界面退出点击事件</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-07-02 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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 点击退出事件
/// <summary>
/// <para>说明:点击退出事件</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-07-02 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void OnOutClick(object sender, EventArgs e)
{
}
#endregion
#endregion
#region 方法
#region 修改数据
/// <summary>
/// <para>说明:修改数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2018-04-03 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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绑定的实体对象
/// <summary>
/// <para>说明:获取TabPage绑定的实体对象</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-07-03 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="tabPage">The tab page.</param>
/// <returns>GridDetailModel.</returns>
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 加载第二界面
/// <summary>
/// <para>说明:加载第二界面</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-06-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
public void finishWork(string AfterModule, DataRow _rowItem, DynamicProductionModel SysModel, List<string> 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 初始化属性
/// <summary>
/// <para>说明:初始化控件</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-06-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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 初始化控件
/// <summary>
/// <para>说明:初始化控件</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-06-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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 加载新数据源
/// <summary>
/// <para>说明:加载新的数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-06-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="Index">数据索引</param>
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 设置选项卡数据源
/// <summary>
/// <para>说明:设置选项卡数据源</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-06-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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 获取查询条件
/// <summary>
/// <para>说明:获取查询条件</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2021-06-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="model">The model.</param>
/// <param name="rowItem">The row item.</param>
/// <returns>System.String.</returns>
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 初始化扫码功能模块的明细数据
/// <summary>
/// <para>说明:初始化第二界面功能模块的明细数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-06-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitializeDetailGrid()
{
this.RecordForm.Model = this.SysModel;
this.RecordForm.InitTabPages(GridDetailAddObj);
if (_rowItem != null)
{
LoadNewForm(_rowItem);
}
}
#endregion
#region 获取明细
/// <summary>
/// <para>说明:获取报表明细</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-06-16 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private List<GridDetailModel> GetDetailGrids(string ModuleCode)
{
List<GridDetailModel> details = new List<GridDetailModel>();
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 底部数据源数据加载完成后触发事件
/// <summary>
/// <para>说明:查询条件绑定完成查询数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期: </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
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
}
}