SVN-Revision: r817
This commit is contained in:
cyf
2025-07-01 09:32:39 +00:00
parent fd1c1b8a3f
commit b3a87d0b11
5 changed files with 817 additions and 186 deletions
+560 -184
View File
@@ -1095,13 +1095,13 @@ namespace Lskj.PubBill
else if (this.BillModel.DetailTreeTable)
{
(this.gcMain as TreeGridControlEx).SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridViewRightCallBack, this.ControlObj, (this.gcMain as TreeGridControlEx).MenuStrip);
(this.gcMain as TreeGridControlEx).TreeListObj.DoubleClick += new EventHandler(OnGridViewDoubleClick);
//(this.gcMain as TreeGridControlEx).TreeListObj.DoubleClick += new EventHandler(OnGridViewDoubleClick);//和下方行单击事件功能一致(TreeListObj_MouseClick),同样的sql会重复执行。先注释 2025-06-30
(this.gcMain as TreeGridControlEx).TreeListObj.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor);
}
else
{
this.gcMain.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridViewRightCallBack, this.ControlObj);
this.gcMain.GridView.DoubleClick += new EventHandler(OnGridViewDoubleClick);
//this.gcMain.GridView.DoubleClick += new EventHandler(OnGridViewDoubleClick);//和下方行单击事件功能一致(OngcMainRowCellClick),同样的sql会重复执行。先注释 2025-06-30
this.gcMain.GridView.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor);
}
@@ -1655,6 +1655,11 @@ namespace Lskj.PubBill
{
this.tb_buttom.OnDetailSaveGridCallBack += Tab_OnDetailSaveGridCallBack;
}
if (this.BillModel.RefreshSelectedDetail)
{
//配置了只刷新当前页签后,切换页签时刷新
this.tb_buttom.TabControlObj.SelectedPageChanged += TabControlObj_SelectedPageChanged;
}
this.tb_buttom.InitTabPages(attachModels);
this.tb_buttom.OnRightCallback += new EventHandler(OnButtomRightCallBack);
}
@@ -1682,6 +1687,8 @@ namespace Lskj.PubBill
XtraTabPage tabPage = new XtraTabPage();
tabPage.Text = model.UserName;
#region
if (!string.IsNullOrWhiteSpace(model.CodeInputSql) && !string.IsNullOrWhiteSpace(model.CodeInputCaption))
{
@@ -1742,12 +1749,37 @@ namespace Lskj.PubBill
{
dtBaseGridRightMenus = BaseModuleImpl.GetBaseGridRightMenus("BILLSOURCE_" + model.FormKey);
}
//节点编号
if (!string.IsNullOrWhiteSpace(model.SourceKeyFieldName)) (gridControl as TreeGridControlEx).TreeListObj.KeyFieldName = model.SourceKeyFieldName;
//父节点编号
if (!string.IsNullOrWhiteSpace(model.SourceParentFieldName)) (gridControl as TreeGridControlEx).TreeListObj.ParentFieldName = model.SourceParentFieldName;
gridControl.SetReadOnlyColumns(dtSourceColumns, GridCustomColumnStruct.BillSourceGridView + model.FormKey);
gridControl.SetGridRowColors(dtBaseGridRowColors);
gridControl.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridControlRightCallback);
//gridControl.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridControlRightCallback);
(gridControl as TreeGridControlEx).SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridControlRightCallback);
unionModel.TreeGridControlObj = gridControl as TreeGridControlEx;
unionModel.TreeGridControlObj.TreeListObj.FocusedNodeChanged += new DevExpress.XtraTreeList.FocusedNodeChangedEventHandler(OnTreeListObjFocusedNodeChanged);
if (model.SourceType == 4)
{
//来源拖拽到主表
if (this.BillModel.DetailTreeTable)
{
TreeGridDragTree treeGridDragTree = new TreeGridDragTree((gridControl as TreeGridControlEx).TreeListObj, (this.gcMain as TreeGridControlEx).TreeListObj);
treeGridDragTree.CanDragParentNode = true;
treeGridDragTree.NeglectingNodes = true;
treeGridDragTree.OnDragComplete += TreeGridDragTree_OnDragComplete;
}
else
{
TreeGridDragGrid treeGridDragGrid = new TreeGridDragGrid((gridControl as TreeGridControlEx).TreeListObj, this.gcMain.GridView);
treeGridDragGrid.OnDragComplete += TreeGridDragGrid_OnDragComplete;
}
}
tabPage.Controls.Add(gridControl);
}
else
@@ -1817,6 +1849,13 @@ namespace Lskj.PubBill
#region
XtraTabPage tabDetail = new XtraTabPage();
if (SystemInfo.Instance.GridRowFontSize > 0)
{
//页签大小
FontFamily fontFamily = tabDetail.Appearance.Header.Font.FontFamily;
tabDetail.Appearance.Header.Font = new System.Drawing.Font(fontFamily, SystemInfo.Instance.GridRowFontSize);
}
DataRow[] detailColumns = detailTable.Select("sourceId=" + model.Id);
@@ -2075,6 +2114,193 @@ namespace Lskj.PubBill
/// <summary>
/// 单据来源拖拽到主表明细中(树表格拖拽到树表格)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TreeGridDragTree_OnDragComplete(object sender, TreeGridDragTreeGridArgs e)
{
if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0) return;
try
{
if (this.CanAddDetailRow())
{
if (this.BillModel.DisableDragPrompt || MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
XtraTabPage tabPage = this.xtc_left_container.SelectedTabPage;
BillSourceUnionModel unionModel = tabPage.Tag as BillSourceUnionModel;
TreeListNode focusedNode = e.SourceTreeList.FocusedNode;
var selectedNodes = e.SourceTreeList.Selection;
int i = 0;
foreach (TreeListNode treeNode in e.SourceTreeList.Selection)
{
// 拖动多行,所以明细数据改为动态查询
DataRowView dataRowView = e.SourceTreeList.GetDataRecordByNode(treeNode) as DataRowView;
DataRow rowItem = dataRowView != null ? dataRowView.Row : null;
this.RefreshSourceDetail(tabPage.Tag as BillSourceUnionModel);
DataTable details = BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, unionModel.ModelObj.DetailSql));
if (unionModel.ModelObj.sourceDetailType != "1" && unionModel.GridDetailControlObj.GridView != null && focusedNode == treeNode)
{
//details = unionModel.GridDetailControlObj.GridView.GetGridViewFilteredAndSortedDataToDataTable();
details = unionModel.GridDetailControlObj.GridControl.DataSource as DataTable;
}
else if (unionModel.ModelObj.sourceDetailType == "1" && unionModel.TreeGridDetailControlObj.TreeListObj != null && focusedNode == treeNode)
{
details = unionModel.TreeGridDetailControlObj.TreeListObj.DataSource as DataTable;
}
//details = GetGridViewFilteredAndSortedDataToDataTable(unionModel.GridDetailControlObj.GridView);
//DataTable details = unionModel.GridDetailControlObj.GridView.DataController.GetAllFilteredAndSortedRows().OfType<DataRow>().CopyToDataTable();
this.ControlObj.SetAllControlValue(rowItem, true);
if (unionModel.ModelObj.CadDragDetail)
{
this.AddMultiRowToGridView(details, unionModel);
if (BillModel.drgFinishHide == "1" && unionModel.GridDetailControlObj != null)
{
var detailRows = details.AsEnumerable().ToList();
foreach (var detailRow in detailRows)
{
if (unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
{
unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
}
if (unionModel.GridDetailDetailControlObj != null && unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
{
unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
}
}
}
}
//单据为新增状态,根据最后一行的内容设置红蓝单据
if (!this.BillModel.SaveState && e.SourceTreeList.Selection.Count - 1 == i && rowItem.Table.Columns.Contains(this.BillModel.RtagidKey) && this.BillModel.BillFlag != 0 && this.BillModel.BillFlag != 1)
{
if ("0".Equals(rowItem[this.BillModel.RtagidKey] + ""))
{
this.rdBlue.Checked = true;
this.OnBlueStateClick(null, null);
}
if ("1".Equals(rowItem[this.BillModel.RtagidKey] + ""))
{
this.rdRed.Checked = true;
this.OnRedStateClick(null, null);
}
}
i++;
}
if (unionModel.ModelObj.DragAndSave && e.SourceTreeList.Selection.Count == i && i != 0)
{
this.OnBillSaveClick(null, null);
}
}
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteError(ex);
LogUtil.WriteError("单据来源表格拖拽完出错!", ex);
MessageUtil.Show(ResourceKeys.OperFault);
}
}
/// <summary>
/// 单据来源拖拽到主表明细中(树表格拖拽到表格)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TreeGridDragGrid_OnDragComplete(object sender, TreeGridDragGridArgs e)
{
if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0) return;
try
{
if (this.CanAddDetailRow())
{
if (this.BillModel.DisableDragPrompt || MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
XtraTabPage tabPage = this.xtc_left_container.SelectedTabPage;
BillSourceUnionModel unionModel = tabPage.Tag as BillSourceUnionModel;
int i = 0;
TreeListNode focusedNode = e.TreeListObj.FocusedNode;
var selectedNodes = e.TreeListObj.Selection;
foreach (TreeListNode treeNode in e.TreeListObj.Selection)
{
// 拖动多行,所以明细数据改为动态查询
DataRowView dataRowView = e.TreeListObj.GetDataRecordByNode(treeNode) as DataRowView;
DataRow rowItem = dataRowView != null ? dataRowView.Row : null;
this.RefreshSourceDetail(tabPage.Tag as BillSourceUnionModel);
DataTable details = BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, unionModel.ModelObj.DetailSql));
if (unionModel.ModelObj.sourceDetailType != "1" && unionModel.GridDetailControlObj.GridView != null && focusedNode == treeNode)
{
details = unionModel.GridDetailControlObj.GridControl.DataSource as DataTable;
}
else if (unionModel.ModelObj.sourceDetailType == "1" && unionModel.TreeGridDetailControlObj.TreeListObj != null && focusedNode == treeNode)
{
details = unionModel.TreeGridDetailControlObj.TreeListObj.DataSource as DataTable;
}
this.ControlObj.SetAllControlValue(rowItem, true);
if (unionModel.ModelObj.CadDragDetail)
{
this.AddMultiRowToGridView(details, unionModel);
if (BillModel.drgFinishHide == "1" && unionModel.GridDetailControlObj != null)
{
var detailRows = details.AsEnumerable().ToList();
foreach (var detailRow in detailRows)
{
if (unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
{
unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
}
if (unionModel.GridDetailDetailControlObj != null && unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
{
unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
}
}
}
}
//单据为新增状态,根据最后一行的内容设置红蓝单据
if (!this.BillModel.SaveState && e.TreeListObj.Selection.Count - 1 == i && rowItem.Table.Columns.Contains(this.BillModel.RtagidKey) && this.BillModel.BillFlag != 0 && this.BillModel.BillFlag != 1)
{
if ("0".Equals(rowItem[this.BillModel.RtagidKey] + ""))
{
this.rdBlue.Checked = true;
this.OnBlueStateClick(null, null);
}
if ("1".Equals(rowItem[this.BillModel.RtagidKey] + ""))
{
this.rdRed.Checked = true;
this.OnRedStateClick(null, null);
}
}
i++;
}
if (unionModel.ModelObj.DragAndSave && e.TreeListObj.Selection.Count == i && i != 0)
{
this.OnBillSaveClick(null,null);
}
}
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteError(ex);
LogUtil.WriteError("单据来源表格拖拽完出错!", ex);
MessageUtil.Show(ResourceKeys.OperFault);
}
}
/// <summary>
@@ -3330,104 +3556,102 @@ namespace Lskj.PubBill
{
WaitForm.ShowForm();
if (unionModel.ModelObj.SourceType == 3)
{
TreeListNode focusedNode = unionModel.TreeGridControlObj.TreeListObj.FocusedNode;
unionModel.GridDetailControlObj.GridControl.DataSource = focusedNode == null
? new DataTable() : BillImpl.GetDataTableResult(ReplaceHelper.ReplaceNodeParam(focusedNode, unionModel.ModelObj.DetailSql));
if (this._isLoadRightControlValue)
{
string masterSql = focusedNode == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceNodeParam(focusedNode, BillModel.MasterSql);
// 加载单据信息
this.SetBillStatus(BillImpl.GetDataRowResult(masterSql));
}
DataRow rowItem = unionModel.GridControlObj.GridView.GetFocusedDataRow();
//unionModel.GridDetailControlObj.GridControl.DataSource = rowItem == null
// ? new DataTable() : BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, unionModel.ModelObj.DetailSql));
if (unionModel.ModelObj.SourceType == 3 || unionModel.ModelObj.SourceType == 4)
{
rowItem = unionModel.TreeGridControlObj.GetViewFocusedDataRow();
}
string DetailSql = unionModel.ModelObj.DetailSql;
DetailSql = ReplaceHelper.ReplaceUserInfo(DetailSql);
DetailSql = ReplaceHelper.ReplaceWhereCond(DetailSql);
DetailSql = ReplaceHelper.ReplaceRowParam(rowItem, DetailSql);
if (unionModel.SearchObj != null)
DetailSql = unionModel.SearchObj.ReplaceParentControlValue(DetailSql);
if (unionModel.ModelObj.sourceDetailType == "1")
{
unionModel.TreeGridDetailControlObj.SetGridViewDataSource(rowItem == null
? new DataTable() : BillImpl.GetDataTableResult(DetailSql));
}
else
{
DataRow rowItem = unionModel.GridControlObj.GridView.GetFocusedDataRow();
//unionModel.GridDetailControlObj.GridControl.DataSource = rowItem == null
// ? new DataTable() : BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, unionModel.ModelObj.DetailSql));
string DetailSql = unionModel.ModelObj.DetailSql;
DetailSql = ReplaceHelper.ReplaceUserInfo(DetailSql);
DetailSql = ReplaceHelper.ReplaceWhereCond(DetailSql);
DetailSql = ReplaceHelper.ReplaceRowParam(rowItem, DetailSql);
if (unionModel.SearchObj != null)
DetailSql = unionModel.SearchObj.ReplaceParentControlValue(DetailSql);
if (unionModel.ModelObj.sourceDetailType == "1")
//有复选框的页签在刷新前清空选中行,否则合计在刷新数据源后不会自带改变
if (unionModel.GridDetailControlObj.GridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect && unionModel.GridDetailControlObj.GridView.OptionsSelection.MultiSelect == true)
{
unionModel.TreeGridDetailControlObj.SetGridViewDataSource(rowItem == null
? new DataTable() : BillImpl.GetDataTableResult(DetailSql));
}
else
{
//有复选框的页签在刷新前清空选中行,否则合计在刷新数据源后不会自带改变
if (unionModel.GridDetailControlObj.GridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect && unionModel.GridDetailControlObj.GridView.OptionsSelection.MultiSelect == true)
{
//int[] selectIndexs = unionModel.GridDetailControlObj.GridView.GetSelectedRows();
unionModel.GridDetailControlObj.GridView.ClearSelection();
}
unionModel.GridDetailControlObj.GridControl.DataSource = rowItem == null
? new DataTable() : BillImpl.GetDataTableResult(DetailSql);
//int[] selectIndexs = unionModel.GridDetailControlObj.GridView.GetSelectedRows();
unionModel.GridDetailControlObj.GridView.ClearSelection();
}
DataTable table = null;
if (unionModel.ModelObj.sourceDetailType == "1")
{
table = unionModel.TreeGridDetailControlObj.TreeListObj.DataSource as DataTable;
}
else
{
table = unionModel.GridDetailControlObj.GridControl.DataSource as DataTable;
}
if (table != null && !table.Columns.Contains("_check"))
{
table.Columns.Add("_check", typeof(bool));
foreach (DataRow row in table.Rows)
{
row["_check"] = 0;
}
}
if (table != null)
{
UpdateSummaryData(table);
}
if (unionModel.ModelObj.SourceType == 2 && this._isLoadRightControlValue)
{
string masterSql = rowItem == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceRowParam(rowItem, BillModel.MasterSql);
// 加载单据信息
this.SetBillStatus(BillImpl.GetDataRowResult(masterSql));
}
if (tb_buttom.TabControlObj.TabPages.Count > 0)
{
for (int i = 0; i < this.tb_buttom.TabControlObj.TabPages.Count; i++)
{
XtraTabPage page = this.tb_buttom.TabControlObj.TabPages[i];
if (i == 0) continue;
if (rowItem != null && page != null)
{
this.SetTabPageDataSource(page, rowItem);
}
}
//foreach (XtraTabPage AttachPage in this.tb_buttom.TabControlObj.TabPages)
//{
// GridDetailModel model = tb_buttom.GetGridDetailModel(AttachPage);
// if (model == null) continue;
// string sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, model.DetailSql);
// this.tb_buttom.SetGridDataSource(AttachPage, sqlValue);
//}
}
DataTable gridTable = (this.gcMain.GridControl.DataSource as DataTable).TrimDeleteRows();
gridTable.OrderBy(this.BillModel.DetailOrderField);
unionModel.GridDetailControlObj.GridControl.DataSource = rowItem == null
? new DataTable() : BillImpl.GetDataTableResult(DetailSql);
}
DataTable table = null;
if (unionModel.ModelObj.sourceDetailType == "1")
{
table = unionModel.TreeGridDetailControlObj.TreeListObj.DataSource as DataTable;
}
else
{
table = unionModel.GridDetailControlObj.GridControl.DataSource as DataTable;
}
if (table != null && !table.Columns.Contains("_check"))
{
table.Columns.Add("_check", typeof(bool));
foreach (DataRow row in table.Rows)
{
row["_check"] = 0;
}
}
if (table != null)
{
UpdateSummaryData(table);
}
if (unionModel.ModelObj.SourceType == 2 && this._isLoadRightControlValue)
{
string masterSql = rowItem == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceRowParam(rowItem, BillModel.MasterSql);
// 加载单据信息
this.SetBillStatus(BillImpl.GetDataRowResult(masterSql));
}
else if (unionModel.ModelObj.SourceType == 3 && this._isLoadRightControlValue)
{
//string masterSql = focusedNode == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceNodeParam(focusedNode, BillModel.MasterSql);
string masterSql = rowItem == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceRowParam(rowItem, BillModel.MasterSql);
// 加载单据信息
this.SetBillStatus(BillImpl.GetDataRowResult(masterSql));
}
if (tb_buttom.TabControlObj.TabPages.Count > 0)
{
for (int i = 0; i < this.tb_buttom.TabControlObj.TabPages.Count; i++)
{
XtraTabPage page = this.tb_buttom.TabControlObj.TabPages[i];
if (i == 0) continue;
if (rowItem != null && page != null)
{
this.SetTabPageDataSource(page, rowItem);
}
}
//foreach (XtraTabPage AttachPage in this.tb_buttom.TabControlObj.TabPages)
//{
// GridDetailModel model = tb_buttom.GetGridDetailModel(AttachPage);
// if (model == null) continue;
// string sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, model.DetailSql);
// this.tb_buttom.SetGridDataSource(AttachPage, sqlValue);
//}
}
DataTable gridTable = (this.gcMain.GridControl.DataSource as DataTable).TrimDeleteRows();
gridTable.OrderBy(this.BillModel.DetailOrderField);
}
catch (Exception ex)
{
@@ -4480,6 +4704,21 @@ namespace Lskj.PubBill
this.ControlObj.ResetControlValue();
}
}
if (model.ModelObj.SourceType == 3 && this._isLoadRightControlValue)
{
DataRow rowItem = null;
if (model.GridControlObj.DataRowCount() > 0)
{
DataRow selectRow = model.TreeGridControlObj.GetViewFocusedDataRow(); ;
rowItem = BillImpl.GetDataRowResult(ReplaceHelper.ReplaceRowParam(selectRow, BillModel.MasterSql));
}
// 加载单据信息
this.SetBillStatus(rowItem);
if (rowItem == null)
{
this.ControlObj.ResetControlValue();
}
}
}
/// <summary>
/// <para>说明:获取单据管理的单据来源标签</para>
@@ -5847,6 +6086,18 @@ namespace Lskj.PubBill
}
}
/// <summary>
/// 切换下方附加模块页签时,刷新当前页签
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TabControlObj_SelectedPageChanged(object sender, TabPageChangedEventArgs e)
{
if (this.tb_buttom.TabControlObj.TabPages.Count > 1)
{
SetDetailGridDataSource();
}
}
/// <summary>
/// <para>说明:获取底部多标签数据</para>
@@ -5873,12 +6124,20 @@ namespace Lskj.PubBill
i++;
continue;
}
if (this.BillModel.RefreshSelectedDetail && page != tb_buttom.TabControlObj.SelectedTabPage)
{
continue;
}
if (rowItem != null && page != null)
{
this.SetTabPageDataSource(page, rowItem);
}
}
}
/// <summary>
/// <para>说明:设置表格数据</para>
/// <para>创建人:龚宇超</para>
@@ -6491,12 +6750,10 @@ namespace Lskj.PubBill
if (unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
{
unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
//RemoveRowitem.Add(rowItem);
}
if (unionModel.GridDetailDetailControlObj != null && unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
{
unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
//RemoveRowitem.Add(rowItem);
}
}
}
@@ -6520,6 +6777,10 @@ namespace Lskj.PubBill
}
i++;
}
if (unionModel.ModelObj.DragAndSave && rows.Length == i && i != 0)
{
this.OnBillSaveClick(null, null);
}
}
}
}
@@ -8472,7 +8733,7 @@ namespace Lskj.PubBill
if (unionModel.ModelObj.CadDragDetail)
{
//清空当前主单明细表数据
((this.gcMain as TreeGridControlEx).TreeListObj.DataSource as DataTable).Clear();
//((this.gcMain as TreeGridControlEx).TreeListObj.DataSource as DataTable).Clear();
(this.gcMain as TreeGridControlEx).TreeListObj.OptionsBehavior.Editable = true;
this.AddMultiRowToGridView(details, unionModel);
}
@@ -8493,6 +8754,10 @@ namespace Lskj.PubBill
}
i++;
}
if (unionModel.ModelObj.DragAndSave && rows.Length == i && i != 0)
{
this.OnBillSaveClick(null, null);
}
}
}
}
@@ -8622,21 +8887,6 @@ namespace Lskj.PubBill
MessageUtil.Show("扫码长度过长,请重新扫码");
return;
}
int Quantity = 0;
FrmAdd frmAdd = new FrmAdd();
if (frmAdd.ShowDialog() == DialogResult.OK)
{
Quantity = frmAdd.Quantity;
}
else
{
textEdit.EditValue = "";
textEdit.Focus();
return;
}
//获取选中行
DataRow MainRowItem = gcMain.GridView.GetFocusedDataRow();
@@ -8644,88 +8894,214 @@ namespace Lskj.PubBill
{
MainRowItem = gcMain.GridControl.DataSourceTable().NewRow();
}
//获取红蓝单据
string DocumentColor = this.rdBlue.Checked ? "0" : this.rdRed.Checked ? "1" : "";
//数量,默认为1
int Quantity = 1;
/*
A:
B;1
C:sql结果1
List<string> Parameter = this.BillModel.CodeExecuteParameter.Split(',').ToList();
for (int i = 0; i < Parameter.Count; i++)
this.BillModel.ScanCodeFixedPrefix为条码前缀B
*/
string Type = string.Empty;
if (!string.IsNullOrWhiteSpace(this.BillModel.ScanCodeFixedPrefix) && inputText.StartsWith(this.BillModel.ScanCodeFixedPrefix))
{
string item = Parameter[i];
if (item.Contains("{DocumentColor}"))
{
string DocumentColor = this.rdBlue.Checked ? "0" : this.rdRed.Checked ? "1" : "";
item = ReplaceHelper.ReplaceParamToValue(item, "{DocumentColor}", DocumentColor);
}
if (item.Contains("{amount}"))
{
item = Quantity + "";
}
//替换单据号
item = ReplaceHelper.ReplaceParamToValue(item, "{" + this.BillModel.PrimaryKey + "}", this.lblOrderNo.Text);
//替换选中行(没有就传空)
item = ReplaceHelper.ReplaceRowParam(MainRowItem, item);
//替换扫码内容
item = ReplaceHelper.ReplaceParamToValue(item, "{value}", inputText);
Parameter[i] = item;
Type = "B";
}
List<string> procParams = ReplaceHelper.GetParamFields(this.BillModel.CodeExecuteSql);
List<SqlParameter> sqlParamList = new List<SqlParameter>();
string[] paramStr = procParams[0].Replace("{", "").Replace("}", "").Split(',');
SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000);
//SqlParameter pMaount = new SqlParameter("@maount", SqlDbType.Int);
for (int i = 0; i < paramStr.Length; i++)
else
{
string item = paramStr[i];
if (paramStr[i].Equals("@msg", StringComparison.OrdinalIgnoreCase))
string Sql = string.Format("select line_str from wms_ScanCodeLinetab a where modid='{0}' and hl_tig='{1}'", this.SysModel.ModuleCode, DocumentColor);
Type = SqlHelper.ExecuteScalar(Sql) + "";
if (string.IsNullOrWhiteSpace(Type))
{
pMsg.Direction = ParameterDirection.InputOutput;
pMsg.Value = Parameter.Count > i ? string.IsNullOrEmpty(Parameter[i]) ? "" : Parameter[i] : "";
sqlParamList.Add(pMsg);
}
else
{
string paramStr1 = paramStr[i];
SqlParameter param = new SqlParameter(string.Format("{0}", paramStr1), SqlDbType.VarChar);
param.Value = Parameter[i];
sqlParamList.Add(param);
MessageUtil.Show("扫码配置错误,请联系朗速服务人员");
return;
}
}
SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4);
returnValue.Direction = ParameterDirection.ReturnValue;
int result;
sqlParamList.Add(returnValue);
switch (Type.ToUpper())
{
case "A":
try
{
result = MainImpl.ExecProcedure(this.BillModel.CodeExecuteSql.Replace(procParams[0], "").Trim(), sqlParamList.ToArray());
}
catch (SqlException sex)
{
string Message = ErrorMessage.PromptErrorMessage(sex);
MessageUtil.Show(Message, sex.Message);
return;
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
return;
}
int rValue = Convert.ToInt32(returnValue.Value);
string varchar = pMsg.Value + "";
switch (rValue)
{
case 1:
if (string.IsNullOrWhiteSpace(varchar))
FrmAdd frmAdd = new FrmAdd();
if (frmAdd.ShowDialog() == DialogResult.OK)
{
//刷新当前单据
this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}'", BillModel.MasterTable, BillModel.PrimaryKey, this.lblOrderNo.Text)));
Quantity = frmAdd.Quantity;
}
else
{
//刷新返回的单据号
this.lblOrderNo.Text = varchar;
this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}
textEdit.EditValue = "";
textEdit.Focus();
return;
}
this.ExecuteWcanningSQL(MainRowItem, Quantity + "", DocumentColor, inputText);
break;
case "B":
this.ExecuteWcanningSQL(MainRowItem, Quantity + "", DocumentColor, inputText);
break;
case "C":
if (!string.IsNullOrWhiteSpace(this.BillModel.ScanCodeModuleCode))
{
//根据传入的模块号获取模块信息
DataRow modelRow = MainImpl.GetSystemdllTab(this.BillModel.ScanCodeModuleCode);//获取模块信息
if (modelRow == null)
{
MessageUtil.Show("模块编号[" + this.BillModel.ScanCodeModuleCode + "],配置错误!\r\n该模块信息未找到!");
return;
}
if (modelRow.Table.Columns.Contains("countSql") && !string.IsNullOrWhiteSpace(modelRow["countSql"] + ""))
{
string sql = modelRow["countSql"] + "";
sql = ReplaceHelper.ReplaceUserInfo(sql);
sql = ReplaceHelper.ReplaceParamToValue(sql, "{value}", inputText);
string num = SqlHelper.ExecuteScalar(sql) + "";
num = this.IsNumberic(num) ? num : "0";
if (int.Parse(num) == 0)
{
MessageUtil.Show("未检测到扫码信息存在,请检查相应前序业务!");
}
else if (int.Parse(num) == 1)
{
this.ExecuteWcanningSQL(MainRowItem, Quantity + "", DocumentColor, inputText);
}
else if (int.Parse(num) > 1)
{
FrmScanCodeAssociation frmScanCodeAssociation = new FrmScanCodeAssociation(modelRow, inputText);
if (frmScanCodeAssociation.ShowDialog() == DialogResult.OK)
{
string Codes = frmScanCodeAssociation.StringCodes;
this.ExecuteWcanningSQL(MainRowItem, Quantity + "", DocumentColor, Codes);
}
else
{
textEdit.EditValue = "";
textEdit.Focus();
return;
}
}
}
}
else
{
MessageUtil.Show("扫码配置错误");
return;
}
break;
}
}
//刷新单据管理(sourceType=2
foreach (XtraTabPage tabPage in this.xtc_left_container.TabPages)
{
BillSourceUnionModel model = tabPage.Tag as BillSourceUnionModel;
if (model != null && model.GridControlObj != null && model.ModelObj.SourceType == 2)
{
this.RefreshSource(model);
}
}
//刷新下方配置的附件模块
this.OngcMainRowCellClick(null, null);
textEdit.EditValue = "";
textEdit.Focus();
}
}
/// <summary>
/// 执行扫码的存储过程
/// </summary>
/// <param name="MainRowItem">明细选中行</param>
///<param name="Quantity">数量</param>
///<param name="DocumentColor">红蓝单据字段</param>
///<param name="Codes">串码,多个用;隔开</param>
public void ExecuteWcanningSQL(DataRow MainRowItem, string Quantity, string DocumentColor, string Codes)
{
int j = 0;
foreach (string code in Codes.TrimEnd(';').Split(';'))
{
if (string.IsNullOrWhiteSpace(code)) continue;
List<string> Parameter = this.BillModel.CodeExecuteParameter.Split(',').ToList();
for (int i = 0; i < Parameter.Count; i++)
{
string item = Parameter[i];
if (item.Contains("{DocumentColor}"))
{
item = ReplaceHelper.ReplaceParamToValue(item, "{DocumentColor}", DocumentColor);
}
if (item.Contains("{amount}"))
{
item = Quantity + "";
}
//替换单据号
item = ReplaceHelper.ReplaceParamToValue(item, "{" + this.BillModel.PrimaryKey + "}", this.lblOrderNo.Text);
//替换选中行(没有就传空)
item = ReplaceHelper.ReplaceRowParam(MainRowItem, item);
//替换扫码内容
item = ReplaceHelper.ReplaceParamToValue(item, "{value}", code);
Parameter[i] = item;
}
List<string> procParams = ReplaceHelper.GetParamFields(this.BillModel.CodeExecuteSql);
List<SqlParameter> sqlParamList = new List<SqlParameter>();
string[] paramStr = procParams[0].Replace("{", "").Replace("}", "").Split(',');
SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000);
for (int i = 0; i < paramStr.Length; i++)
{
string item = paramStr[i];
if (paramStr[i].Equals("@msg", StringComparison.OrdinalIgnoreCase))
{
pMsg.Direction = ParameterDirection.InputOutput;
pMsg.Value = Parameter.Count > i ? string.IsNullOrEmpty(Parameter[i]) ? "" : Parameter[i] : "";
sqlParamList.Add(pMsg);
}
else
{
string paramStr1 = paramStr[i];
SqlParameter param = new SqlParameter(string.Format("{0}", paramStr1), SqlDbType.VarChar);
param.Value = Parameter[i];
sqlParamList.Add(param);
}
}
SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4);
returnValue.Direction = ParameterDirection.ReturnValue;
int result;
sqlParamList.Add(returnValue);
try
{
result = MainImpl.ExecProcedure(this.BillModel.CodeExecuteSql.Replace(procParams[0], "").Trim(), sqlParamList.ToArray());
}
catch (SqlException sex)
{
string Message = ErrorMessage.PromptErrorMessage(sex);
MessageUtil.Show(Message, sex.Message);
return;
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
return;
}
int rValue = Convert.ToInt32(returnValue.Value);
string varchar = pMsg.Value + "";
switch (rValue)
{
case 1:
if (string.IsNullOrWhiteSpace(varchar))
{
//刷新当前单据
if (j == Codes.TrimEnd(';').Split(';').Length - 1)
{
this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}'", BillModel.MasterTable, BillModel.PrimaryKey, this.lblOrderNo.Text)));
}
}
else