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

338 lines
15 KiB
C#

using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Grid;
using Lskj.Business.Impl;
using Lskj.Control.Model;
using Lskj.Core;
using Lskj.Data;
using Lskj.Model;
using Lskj.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Lskj.Control
{
public partial class FrmSetExport : Form
{
#region 公共变量
/// <summary>
/// 外部表格
/// </summary>
public GridControlEx SourceGridEx;
/// <summary>
/// CustomColumKey
/// </summary>
public string CustomColumKey = string.Empty;
#endregion
#region 私有变量
/// <summary>
/// 左侧数据源
/// </summary>
private DataTable leftDataSource = new DataTable();
/// <summary>
/// 右侧数据源
/// </summary>
private DataTable rightDataSource = new DataTable();
#endregion
public FrmSetExport(GridControlEx sourceGrid)
{
InitializeComponent();
this.SourceGridEx = sourceGrid;
this.Load += new EventHandler(OnFrmSetExport_Load);
}
#region 事件
/// <summary>
/// 窗体初始化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnFrmSetExport_Load(object sender, EventArgs e)
{
InitRightGridColumns();
InitRightGridData();
InitLeftGridColumns();
InitLeftGridData();
GridDragGrid dragLeftGrid = new GridDragGrid(this.leftGrid.GridView, this.rightGrid.GridView);
dragLeftGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragMainGridCompleted);
GridDragGrid dragRightGrid = new GridDragGrid(this.rightGrid.GridView, this.leftGrid.GridView);
dragRightGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragMainGridCompleted);
this.leftGrid.GridView.DoubleClick += new EventHandler(OnGridView_DoubleClick);
this.rightGrid.GridView.DoubleClick += new EventHandler(OnGridView_DoubleClick);
this.saveBtn.Click += new EventHandler(OnSaveBtn_Click);
this.SizeChanged += new EventHandler(OnFrmSetExport_SizeChanged);
}
/// <summary>
/// 拖拽完成时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnDragMainGridCompleted(object sender, GridDragGridArgs e)
{
if (e.SourceGridViewObj == this.leftGrid.GridView)
{
foreach (DataRow selectRow in e.GridViewSelectRows)
{
DataRow newRow = this.rightDataSource.NewRow();
newRow.ItemArray = selectRow.ItemArray;
this.rightDataSource.Rows.Add(newRow);
this.leftDataSource.Rows.Remove(selectRow);
}
}
else if (e.SourceGridViewObj == this.rightGrid.GridView)
{
foreach (DataRow selectRow in e.GridViewSelectRows)
{
DataRow newRow = this.leftDataSource.NewRow();
newRow.ItemArray = selectRow.ItemArray;
this.leftDataSource.Rows.Add(newRow);
this.rightDataSource.Rows.Remove(selectRow);
}
}
}
/// <summary>
/// 双击行移动数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnGridView_DoubleClick(object sender, EventArgs e)
{
GridView gridView = (GridView)sender;
int[] selectRowsIndex = gridView.GetSelectedRows();
if (gridView == this.leftGrid.GridView)
{
foreach (int index in selectRowsIndex)
{
DataRow selectRow = gridView.GetDataRow(index);
DataRow newRow = this.rightDataSource.NewRow();
newRow.ItemArray = selectRow.ItemArray;
this.rightDataSource.Rows.Add(newRow);
this.leftDataSource.Rows.Remove(selectRow);
}
}
else if (gridView == this.rightGrid.GridView)
{
foreach (int index in selectRowsIndex)
{
DataRow selectRow = gridView.GetDataRow(index);
DataRow newRow = this.leftDataSource.NewRow();
newRow.ItemArray = selectRow.ItemArray;
this.leftDataSource.Rows.Add(newRow);
this.rightDataSource.Rows.Remove(selectRow);
}
}
}
/// <summary>
/// 窗体大小改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnFrmSetExport_SizeChanged(object sender, EventArgs e)
{
this.leftGroup.Width = this.Width / 2;
}
/// <summary>
/// 保存按钮点击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnSaveBtn_Click(object sender, EventArgs e)
{
DataRow rowItem = null;
bool success = BaseImpl.HasExistsDataRow(ResourceKeys.SettingExportTableName, "formKey", CustomColumKey.ToString(), string.Format(" and OperatorId='{0}' ", ERPInfo.Instance.UserId), out rowItem);
if (!success)
{
MessageUtil.Show("未开启导出列设置功能,请联系朗速!");
return;
}
if (MessageUtil.Show(ResourceKeys.IsSaveColumn, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
try
{
if (rowItem == null)
{
success = this.SaveExportColumnToDatabase(this.CustomColumKey);
}
else
{
success = this.UpdateExportColumnToDatabase(this.CustomColumKey);
}
MessageUtil.Show(success ? ResourceKeys.SaveSuccess : ResourceKeys.SaveFault);
}
catch (Exception ex)
{
LogHelper.Instance.WriteError(ex);
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
}
#endregion
#region 方法
/// <summary>
/// 初始化左侧表格列
/// </summary>
private void InitLeftGridColumns()
{
GridColumn systemFieldNameCol = new GridColumn();
systemFieldNameCol.Caption = "系统名称";
systemFieldNameCol.FieldName = "fieldName";
systemFieldNameCol.Visible = true;
systemFieldNameCol.VisibleIndex = 1;
GridColumn userFieldNameCol = new GridColumn();
userFieldNameCol.Caption = "用户名称";
userFieldNameCol.FieldName = "userName";
userFieldNameCol.Visible = true;
userFieldNameCol.VisibleIndex = 2;
this.leftGrid.Controls.Remove(this.leftGrid.plbuttomObj);
this.leftGrid.GridView.OptionsBehavior.Editable = false;
this.leftGrid.GridView.Columns.AddRange(new GridColumn[] { systemFieldNameCol, userFieldNameCol });
}
/// <summary>
/// 初始化左侧表格列
/// </summary>
private void InitRightGridColumns()
{
GridColumn systemFieldNameCol = new GridColumn();
systemFieldNameCol.Caption = "系统名称";
systemFieldNameCol.FieldName = "fieldName";
systemFieldNameCol.Visible = true;
systemFieldNameCol.VisibleIndex = 1;
GridColumn userFieldNameCol = new GridColumn();
userFieldNameCol.Caption = "用户名称";
userFieldNameCol.FieldName = "userName";
userFieldNameCol.Visible = true;
userFieldNameCol.VisibleIndex = 2;
this.rightGrid.Controls.Remove(this.rightGrid.plbuttomObj);
this.rightGrid.GridView.OptionsBehavior.Editable = false;
this.rightGrid.GridView.Columns.AddRange(new GridColumn[] { systemFieldNameCol, userFieldNameCol });
}
/// <summary>
/// 初始化左侧数据源
/// </summary>
private void InitLeftGridData()
{
this.leftDataSource.Columns.Add("fieldName");
this.leftDataSource.Columns.Add("userName");
foreach (GridColumn column in this.SourceGridEx.GridView.Columns)
{
DataRow dataRow = this.leftDataSource.NewRow();
dataRow["fieldName"] = column.FieldName;
dataRow["userName"] = column.Caption;
this.leftDataSource.Rows.Add(dataRow);
}
//this.leftDataSource = this.leftDataSource.Select().Where(n => this.rightDataSource.Select(string.Format("fieldName='{0}'", n["fieldName"] + "")).Length == 0).CopyToDataTable();
foreach (DataRow row in this.rightDataSource.Rows)
{
DataRow[] selectRows = this.leftDataSource.Select().Where(n => (n["fieldName"] + "").Equals(row["fieldName"] + "")).ToArray();
if (selectRows.Length > 0)
{
DataRow selectRow = selectRows[0];
this.leftDataSource.Rows.Remove(selectRow);
}
}
this.leftGrid.gridControl.DataSource = this.leftDataSource;
}
/// <summary>
/// 初始化右侧数据源
/// </summary>
private void InitRightGridData()
{
string sqlstr = "select fieldName,userName from {0} where {1}='{2}' and isExport='1' and operatorid='{3}'";
sqlstr = string.Format(sqlstr, ResourceKeys.SettingExportTableName, "formkey", this.CustomColumKey,ERPInfo.Instance.UserId);
this.rightDataSource = SqlHelper.ExecuteDataTable(sqlstr);
this.rightGrid.gridControl.DataSource = this.rightDataSource;
}
/// <summary>
/// <para>说明:保存导出配置列</para>
/// <para>创建人:唐德馨</para>
/// <para>创建日期:2022-10-25 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="gridView">The grid view.</param>
/// <param name="key">The key.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
public bool SaveExportColumnToDatabase(string key)
{
StringBuilder sBuilder = new StringBuilder();
foreach (DataRow row in this.rightDataSource.Rows)
{
string tempSql = string.Format(@"insert into {6}(formkey,fieldname,username,operatorid,operatorName,operatedate,isExport) values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}');",
key, row["fieldName"] + "", row["userName"] + "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, 1, ResourceKeys.SettingExportTableName);
sBuilder.Append(tempSql);
}
foreach (DataRow row in this.leftDataSource.Rows)
{
string tempSql = string.Format(@"insert into {6}(formkey,fieldname,username,operatorid,operatorName,operatedate,isExport) values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}');",
key, row["fieldName"] + "", row["userName"] + "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, 0, ResourceKeys.SettingExportTableName);
sBuilder.Append(tempSql);
}
return BaseImpl.ExecSqlValue(sBuilder.ToString()) > 0;
}
/// <summary>
/// <para>说明:保存导出配置列</para>
/// <para>创建人:唐德馨</para>
/// <para>创建日期:2022-10-25 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="gridView">The grid view.</param>
/// <param name="key">The key.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
public bool UpdateExportColumnToDatabase(string key)
{
StringBuilder sBuilder = new StringBuilder();
string sqlValue = string.Format("select * from {0} where formKey='{1}' and OperatorId='{2}'", ResourceKeys.SettingExportTableName, key, ERPInfo.Instance.UserId);
DataTable exportTable = SqlHelper.ExecuteDataTable(sqlValue);
foreach (DataRow row in this.rightDataSource.Rows)
{
string tempSql = string.Empty;
DataRow[] dataRows = exportTable.Select().Where(n => (n["fieldName"] + "").Equals(row["fieldName"] + "")).ToArray();
if (dataRows.Length == 0)
{
tempSql = string.Format(@"insert into {6}(formkey,fieldname,username,operatorid,operatorName,operatedate,isExport) values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}');",
key, row["fieldName"] + "", row["userName"] + "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, 1, ResourceKeys.SettingExportTableName);
sBuilder.Append(tempSql);
}
else
{
tempSql = string.Format(@"update {4} set isExport= '{0}',operatedate = getdate() where formkey='{1}' and fieldname='{2}' and operatorid='{3}';",
1, key, row["fieldName"] + "", ERPInfo.Instance.UserId, ResourceKeys.SettingExportTableName);
sBuilder.Append(tempSql);
}
}
foreach (DataRow row in this.leftDataSource.Rows)
{
string tempSql = string.Empty;
DataRow[] dataRows = exportTable.Select().Where(n => (n["fieldName"] + "").Equals(row["fieldName"] + "")).ToArray();
if (dataRows.Length == 0)
{
tempSql = string.Format(@"insert into {6}(formkey,fieldname,username,operatorid,operatorName,operatedate,isExport) values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}');",
key, row["fieldName"] + "", row["userName"] + "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, 0, ResourceKeys.SettingExportTableName);
sBuilder.Append(tempSql);
}
else
{
tempSql = string.Format(@"update {4} set isExport= '{0}',operatedate = getdate() where formkey='{1}' and fieldname='{2}' and operatorid='{3}';",
0, key, row["fieldName"] + "", ERPInfo.Instance.UserId, ResourceKeys.SettingExportTableName);
sBuilder.Append(tempSql);
}
}
return BaseImpl.ExecSqlValue(sBuilder.ToString()) > 0;
}
#endregion
}
}