巨石化纤
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

273 lines
11 KiB

using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Data;
using SSWMS.Common;
using System.Windows.Input;
using System.Collections.Generic;
namespace SSWMS.Client.UC
{
public partial class ucQuickQuery : UserControl
{
public delegate void U_QueryEventHandler(string sQueryWhere);
public event U_QueryEventHandler U_Query;
public string U_XmlTableName = string.Empty;
public string U_WindowName = string.Empty;
public Dictionary<string, string> U_DefaultValue = new Dictionary<string, string>();
private DataTable FormStyles = null;
public ucQuickQuery()
{
InitializeComponent();
}
public void U_InitControl()
{
try
{
this.wpQuery.Children.Clear();
if (this.FormStyles == null)
{
this.FormStyles = XmlStyle.GetDataTable(this.U_WindowName, this.U_XmlTableName);
}
foreach (DataRow rowField in this.FormStyles.Select("(Header<>'' and Query<>'0')"))
{
StackPanel sp = new StackPanel
{
Tag = rowField,
Style = Application.Current.Resources["CommonStackPanel"] as Style
};
sp.Children.Add(new TextBlock
{
VerticalAlignment = VerticalAlignment.Center,
FontSize = 14,
Margin = new Thickness(2, 0, 2, 0),
Text = XmlStyle.GetHeader(rowField)
});
string sControlType = rowField["Control"].ToString();
string sColumn = rowField["Column"].ToString();
string sQuery = rowField["Query"].ToString();
switch (sControlType)
{
case "TextBox":
TextBox tb = new TextBox
{
Tag = rowField,
Width = 120,
Margin = new Thickness(5, 0, 5, 0),
Text = rowField["Default"].ToString(),
FontSize = 14,
DataContext = sQuery
};
if (U_DefaultValue.ContainsKey(sColumn))
{
string sValue;
U_DefaultValue.TryGetValue(sColumn, out sValue);
tb.Text = sValue;
}
sp.Children.Add(tb);
break;
case "CheckBox":
sp.Children.Add(new CheckBox
{
Tag = rowField,
VerticalAlignment = VerticalAlignment.Center,
IsThreeState = false,
Margin = new Thickness(10, 0, 5, 0)
});
break;
default:
ComboBox cb = new ComboBox
{
Tag = rowField,
Width = 120,
Height = 25,
FontSize = 14,
Margin = new Thickness(5, 0, 5, 0),
DisplayMemberPath = "NAME",
SelectedValuePath = "VALUE",
ItemsSource = SystemCodeData.DicDataView[sControlType],
SelectedIndex = -1,
DataContext = sQuery
};
if (U_DefaultValue.ContainsKey(sColumn))
{
string sValue;
U_DefaultValue.TryGetValue(sColumn, out sValue);
cb.SelectedValue = sValue;
}
sp.Children.Add(cb);
break;
}
this.wpQuery.Children.Add(sp);
}
StackPanel spQuery = new StackPanel()
{
Style = Application.Current.Resources["CommonStackPanel"] as Style
};
Button bQuery = new Button()
{
Content = "查 询",
Style = Application.Current.Resources["CommonButton"] as Style
};
bQuery.Click += (sender, e) =>
{
MainWindow.mainWin.Cursor = Cursors.Wait;
this.U_Query(this.GetQuerySQL(0));
MainWindow.mainWin.Cursor = Cursors.Arrow;
};
spQuery.Children.Add(bQuery);
Button bRefresh = new Button()
{
Content = "重 置",
Style = Application.Current.Resources["CommonButton"] as Style
};
bRefresh.Click += (sender, e) =>
{
foreach (UIElement uie in this.wpQuery.Children)
{
StackPanel sp = uie as StackPanel;
if (sp == null)
{
continue;
}
DataRow dr = sp.Tag as DataRow;
if (dr == null)
{
continue;
}
if (sp.Children[1] is TextBox)
{
(sp.Children[1] as TextBox).Clear();
}
else if (sp.Children[1] is ComboBox)
{
(sp.Children[1] as ComboBox).SelectedIndex = -1;
}
else if (sp.Children[1] is CheckBox)
{
(sp.Children[1] as CheckBox).IsChecked = false;
}
}
};
spQuery.Children.Add(bRefresh);
this.wpQuery.Children.Add(spQuery);
if (U_XmlTableName == "V_STORAGE_LIST" ||
U_XmlTableName == "V_STORAGE_LIST_OUT")
{
StackPanel spExpire = new StackPanel()
{
Style = Application.Current.Resources["CommonStackPanel"] as Style
};
spExpire.Children.Add(new TextBlock()
{
Text = "超期天数",
Style = Application.Current.Resources["CommonTextBlock"] as Style
});
TextBox tbExpire = new TextBox()
{
Text = "30",
Width = 30,
Style = Application.Current.Resources["CommonTextBox"] as Style
};
spExpire.Children.Add(tbExpire);
Button bExpire = new Button()
{
Content = "超期查询",
Style = Application.Current.Resources["CommonButton"] as Style
};
bExpire.Click += (sender, e) =>
{
int iExpire = 0;
try
{
iExpire = Convert.ToInt32(tbExpire.Text);
if (iExpire <= 0)
{
MessageDialog.ShowException($"超期天数 {tbExpire.Text} 少于1天");
}
}
catch
{
MessageDialog.ShowException($"超期天数 {tbExpire.Text} 格式错误");
}
MainWindow.mainWin.Cursor = Cursors.Wait;
this.U_Query(this.GetQuerySQL(iExpire));
MainWindow.mainWin.Cursor = Cursors.Arrow;
};
spExpire.Children.Add(bExpire);
this.wpQuery.Children.Add(spExpire);
}
}
catch (Exception ex)
{
MessageDialog.ShowException(ex);
}
}
private string GetQuerySQL(int iExpire)
{
StringBuilder sb = new StringBuilder();
sb.Append("1=1");
foreach (UIElement uie in this.wpQuery.Children)
{
StackPanel sp = uie as StackPanel;
if (sp == null)
{
continue;
}
DataRow dr = sp.Tag as DataRow;
if (dr == null)
{
continue;
}
string sColumn = dr["Column"].ToString();
if (sp.Children[1] is CheckBox)
{
CheckBox cb = sp.Children[1] as CheckBox;
if (cb.IsChecked != null)
{
sb.Append($" and {sColumn}='{Convert.ToInt32((sp.Children[1] as CheckBox).IsChecked)}'");
}
}
else if (sp.Children[1] is ComboBox)
{
ComboBox cb = sp.Children[1] as ComboBox;
if (cb.SelectedIndex > -1)
{
if (cb.DataContext == null || cb.DataContext.ToString() == "1")
{
sb.Append($" and {sColumn} like '%{cb.SelectedValue}%'");
}
else
{
sb.Append($" and {sColumn}='{cb.SelectedValue}'");
}
}
}
else if (sp.Children[1] is TextBox)
{
TextBox tb = sp.Children[1] as TextBox;
if (!string.IsNullOrWhiteSpace(tb.Text))
{
if (tb.DataContext == null || tb.DataContext.ToString() == "1")
{
sb.Append($" and {sColumn} like '%{tb.Text}%'");
}
else
{
sb.Append($" and {sColumn}='{tb.Text}'");
}
}
}
}
if (iExpire > 0)
{
sb.Append($" and ENTRY_TIME<='{StringUtils.GetExpireDay(iExpire)}'");
}
return sb.ToString();
}
}
}