using DevExpress.XtraEditors;
using Lskj.Business.Impl;
using Lskj.Control;
using Lskj.Control.Model;
using Lskj.Core;
using Lskj.Model;
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.ProductBarCode
{
public partial class FrmMainModule : UserControl
{
///
/// 表格对象
///
/// The grid view object.
public GridControlEx GridControlObj { get { return this.moduleGridEx.GridControlObj; } }
///
/// 基础模型
///
public ModuleModel MoudleObj;
///
/// 底部基础模型
///
public ModuleModel MoudleBottomObj;
///
/// 表格明细集合
///
public List GridDetailModelObjs;
///
/// 单据信息
///
private DataRow _drBillInfo;
///
/// 单据模型
///
public BillModel BillModelObj;
public DynamicBarCodeModel SysModel;
public DynamicModuleModel dmoudelModel;
///
/// 单表模型
///
public DynamicModuleModel moudelModel;
///
/// 控件对象
///
public MyControl ControlObj { get; private set; }
///
/// 控件高度
///
/// The height of the control.
public int ControlHeight { get; private set; }
///
/// 控件数据源
///
private DataTable _controlTable;
///
/// 设置红蓝单据
///
public string BillStatus;
///
/// 设置是否有操作权限
///
public bool Ispower = true;
///
/// 左侧表格查询条件
///
private MyControl _leftGridSearchObj;
///
/// 左侧表格
///
private GridControlEx gridLeft;
public FrmMainModule()
{
InitializeComponent();
}
///
/// 说明:判断是否终审,加载界面是否可以编辑
/// 创建人:龚宇超
/// 创建日期:2017-10-25
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
protected void SetInterfaceState()
{
try
{
DataRow rowItem = SqlHelper.ExecuteDataTable(string.Format("SELECT * FROM {2} WHERE {0}='{1}'", this.BillModelObj.PrimaryKey, this.SysModel.BillDocumentId, this.BillModelObj.MasterTable)).Rows[0];
if (("1".Equals(rowItem[this.BillModelObj.MasterPreFix + "stepover"] + "") || "true".Equals((rowItem[this.BillModelObj.MasterPreFix + "stepover"] + "").ToLower())))
{
this.but_CreatBarCode.Enabled = false;
this.Ispower = false;
}
}
catch (Exception)
{
throw;
}
}
///
/// 说明:初始化属性设置
/// 创建人:龚宇超
/// 创建日期:2018-02-27
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
private void InitializeSetting()
{
this.GridControlObj.Tag = "IsOldPost";
this.moudelModel = new DynamicModuleModel(new string[] { "0", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, "1", this.SysModel.MoudelId + "", "0" });
this.MoudleObj = new ModuleModel(MainImpl.GetSystemdllTab(this.moudelModel.ModuleCode));
//初始表头
this.ControlObj = new MyControl();
this.ControlObj = new MyControl(this.MoudleObj.MenuSql, null);
this.ControlObj.OnDataSourceBindCallBack += OnDataSourceBindCallBack;
this.GridDetailModelObjs = GetDetailGrids();
string UnionModule = this.GridDetailModelObjs.Count > 0 ? this.GridDetailModelObjs[0].UnionModule : string.Empty;
if (!string.IsNullOrEmpty(UnionModule))
{
DynamicModuleModel dmoudelModel = new DynamicModuleModel(new string[] { "0", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, "1", UnionModule + "", "0" });
this.MoudleBottomObj = new ModuleModel(MainImpl.GetSystemdllTab(dmoudelModel.ModuleCode));
DataTable _gridColumns = BaseModuleImpl.GetBaseGridColumns(UnionModule);
this.gcBottom.Model = dmoudelModel;
this.gcBottom.SetReadOnlyColumns(_gridColumns, GridCustomColumnStruct.BaseMainGridView + this.MoudleObj.FormKey);
if (Ispower)
{
this.gcBottom.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(dmoudelModel.ModuleCode), dmoudelModel, OnGridViewRightCallBack, this.ControlObj, null);
}
}
//this._dtFields = BaseModuleImpl.GetControlLocation(this.MoudleObj.FormKey, this.moudelModel.ModuleCode);
}
///
/// 创建条码控件
///
private void InitControls()
{
this._drBillInfo = BaseAuditImpl.GetCurrentFlowRowData(this.BillModelObj.MasterTable, this.BillModelObj.PrimaryKey, this.SysModel.BillDocumentId);
BillStatus = _drBillInfo[this.BillModelObj.RtagidKey] + "";
this._controlTable = BaseModuleImpl.GetControlLocation(this.MoudleObj.FormKey, this.moudelModel.ModuleCode);
this.ControlObj.InitControl(this._controlTable, this.pl_top_main, BaseModuleImpl.GetAddGroupData(this.MoudleObj.FormKey));
this.ControlObj.SetReadOnlyAllControl(false);
this.moduleGridEx.VisibleSearchPanel = false;
//每次切换时都要设置
//this.gcLeft.Model = this.SysModel;
// this.gcLeft.ParentControl = this.ControlObj;
this.moduleGridEx.InitializeControl(this.MoudleObj, moudelModel);
//_detailColumns = BillImpl.GetDetailColumns(this.SysModel.ModuleCode);
this.moduleGridEx.LeftGridEx = this.gridLeft;
this.moduleGridEx.ParentGridEx = this.gridLeft; // 方便右侧添加数据自动带出相同字段值
this.moduleGridEx.AfterDeleteGridCallBack += ModuleGridExAfterDeleteGridCallBack;//点击删除后刷新上下表数据源
DataTable _gridColumns = BaseModuleImpl.GetBaseGridColumns(this.moudelModel.ModuleCode);
this.GridControlObj.SetEditColumns(_gridColumns, GridCustomColumnStruct.BaseMainGridView + this.MoudleObj.FormKey);
this.GridControlObj.Model = this.moudelModel;
if (Ispower)
{
this.GridControlObj.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(this.moudelModel.ModuleCode), this.moudelModel, OnGridViewRightCallBack, this.ControlObj, null);
}
if (!(this.SysModel.isRedFlag.Equals("1")))
{
if ("0".Equals(BillStatus))
{
this.splitRightControl.PanelVisibility = SplitPanelVisibility.Panel1;
}
else
{
this.pl_top_main.Visible = false;
this.but_CreatBarCode.Visible = false;
}
}
else
{
if ("1".Equals(BillStatus))
{
this.splitRightControl.PanelVisibility = SplitPanelVisibility.Panel1;
}
//else
//{
// this.pl_top_main.Visible = false;
// this.but_CreatBarCode.Visible = false;
//}
}
if (this.SysModel.isVisibelFlag.Equals("1"))
{
this.pl_top.Visible = false;
this.but_CreatBarCode.Visible = false;
}
this.moduleGridEx.GridControlObj.OnParseGridDataCallBack += new GridControlEx.ParseGridDataEventHandler(OnGridViewParseGridDataCallBack);
}
///
/// 说明:粘贴表格后更新树结构关联字段
/// 创建人:龚宇超
/// 创建日期:
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
/// The row item.
protected void OnGridViewParseGridDataCallBack(DataRow rowItem)
{
if (rowItem != null && rowItem.Table.Columns.Contains(this.moduleGridEx.ParentKeyField))
{
if (this.gridLeft != null)
{
rowItem[this.moduleGridEx.ParentKeyField] = this.gridLeft.GetViewFocusedDataRow()[this.moduleGridEx.ParentKeyField] + "";
}
}
else
{
if (this.gridLeft != null)
{
DataTable table = moduleGridEx.GridControlObj.GridView.GridControl.DataSourceTable();
moduleGridEx.GridControlObj.GridView.SetRowCellValue(this.moduleGridEx.GridControlObj.GridView.GetFocusedDataSourceRowIndex(), this.moduleGridEx.ParentUnionField, this.gridLeft.GetViewFocusedDataRow()[this.moduleGridEx.ParentKeyField] + "");
}
}
}
///
/// moduleGridEx点击删除后刷新上下表
///
///
///
private void ModuleGridExAfterDeleteGridCallBack(object sender, EventArgs e)
{
if (this.splitRightControl.PanelVisibility == SplitPanelVisibility.Both)
{
this.GridControlObj.SetGridViewDataSource(MainImpl.GetAdapterResult(this.GridControlObj.LastSearchSql));
this.gcBottom.SetGridViewDataSource(MainImpl.GetAdapterResult(this.gcBottom.LastSearchSql));
}
else
{
this.GridControlObj.SetGridViewDataSource(MainImpl.GetAdapterResult(this.GridControlObj.LastSearchSql));
}
}
///
/// 数据绑定完成后触发事件
///
///
///
private void OnDataSourceBindCallBack(object sender, EventArgs e)
{
DataRow rowArray = this.gridLeft.GetViewFocusedDataRow();
SetCodeHeader(rowArray);
}
#region 获取明细
///
/// 说明:获取报表明细
/// 创建人:龚宇超
/// 创建日期:2018-02-27
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
private List GetDetailGrids()
{
List details = new List();
DataTable moduleDetailBottomTable = BaseModuleImpl.GetBaseDetailPages(this.moudelModel.ModuleCode);
if (moduleDetailBottomTable.Rows.Count == 0)
{
moduleDetailBottomTable = BaseModuleImpl.GetBaseAddTabDetail(this.moudelModel.ModuleCode);
}
foreach (DataRow item in moduleDetailBottomTable.Rows)
{
DataTable dtGridColumns = ReportImpl.GetReportDetailColumns(this.moudelModel.ModuleCode, item["id"] + "");
details.Add(new GridDetailModel(item, dtGridColumns, GridCustomColumnStruct.BaseDetailGridView));
}
return details;
}
#endregion
#region 修改表头
///
/// 说明:获取配置条件头属性设置
/// 创建人:王一帆
/// 创建日期:2021-09-07
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
/// System.String.
private void SetCodeHeader(DataRow newRow)
{
StringBuilder updateBuilder = new StringBuilder();
foreach (ControlModel model in this.ControlObj.ControlModels)
{
if (!string.IsNullOrEmpty(model.DefaultValue))
{
bool isStart = model.DefaultValue.StartsWith("{");
string fieldName = model.DefaultValue.Replace("{", "").Replace("}", "");
if (newRow != null && newRow.Table.Columns.Contains(fieldName))
{
this.ControlObj.SetControlValue(model.FieldName, newRow[fieldName] + "");
}
else
{
this.ControlObj.SetControlValue(model.FieldName, isStart ? string.Empty : model.DefaultValue);
}
}
}
}
#endregion
///
/// 说明:右键菜单执行后刷新数据,刷新规则按照上一次查询条件刷新
/// 创建人:王一帆
/// 创建日期:2020-01-30
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
/// The sender.
/// The instance containing the event data.
protected void OnGridViewRightCallBack(object sender, EventArgs e)
{
try
{
if (this.GridControlObj.LastSearchSql != null)
{
this.GridControlObj.SetGridViewDataSource(MainImpl.GetAdapterResult(this.GridControlObj.LastSearchSql));
this.gcBottom.SetGridViewDataSource(MainImpl.GetAdapterResult(this.gcBottom.LastSearchSql));
if (!this.SysModel.CancelPrompt) MessageUtil.Show("成功!");
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
}
}