宜昌华友原料库管理软件
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.

261 lines
8.0 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.IO;
using System.Xml;
using System.Data;
using System.Reflection;
namespace SiaSun.LMS.WPFClient.SYS
{
/// <summary>
/// LOG_QUERY.xaml 的交互逻辑
/// </summary>
public partial class LOG_QUERY : AvalonDock.DocumentContent
{
/// <summary>
/// 构造函数
/// </summary>
public LOG_QUERY()
{
InitializeComponent();
this.tvwNode.U_ItemSelectedChanged += new UC.ucTreeView.U_ItemSelectedChangedHandler(tvwNode_U_ItemSelectedChanged);
}
/// <summary>
/// 加载窗体
/// </summary>
private void DocumentContent_Loaded(object sender, RoutedEventArgs e)
{
//加载日志文件列表
this.LoadLogFileList();
}
#region ------打开指定文件
/// <summary>
/// 打开文件
/// </summary>
private void btnOpenFile_Click(object sender, RoutedEventArgs e)
{
System.Windows.Forms.OpenFileDialog ofDg = new System.Windows.Forms.OpenFileDialog();
ofDg.Filter = "log|*.log|All|*.*";
if (ofDg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string strFileName =ofDg.FileName;
this.txtFilePath.Text = strFileName;
try
{
//读取文件
string strLogContent = this.ReadFile(strFileName);
//数据源
this.gridLog.ItemsSource = null;// MainApp._I_BaseService.GetLogFromContent(strLogContent);
//显示标题
this.grpLog.Header = string.Format(this.grpLog.Tag.ToString(),ofDg.FileName);
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
}
/// <summary>
/// 读取文件
/// </summary>
private string ReadFile(string FileName)
{
string strContent = null;
try
{
using (FileStream flStream = File.OpenRead(FileName))
{
Encoding encode = Encoding.GetEncoding("gb2312");
using (StreamReader reader = new StreamReader(flStream, encode))
{
strContent = reader.ReadToEnd();
//释放
reader.Close();
reader.Dispose();
flStream.Close();
flStream.Dispose();
}
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
return strContent;
}
#endregion
#region ------加载所有服务端的日志信息
/// <summary>
/// 加载日志文件列表
/// </summary>
private void LoadLogFileList()
{
try
{
this.tvwNode.U_Header = "请选择日志文件";
foreach (string strFileName in MainApp._I_BaseService.ReadLogFileList())
{
this.tvwNode.U_AddTreeViewItem(null, strFileName, strFileName);
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex.Message);
}
}
//更改选项
void tvwNode_U_ItemSelectedChanged(TreeViewItem itemSelected)
{
this.LoadLogFile(itemSelected);
}
/// <summary>
/// 加载日志文件
/// </summary>
private void LoadLogFile(TreeViewItem SelectedItem)
{
if (SelectedItem == null)
return;
try
{
//获得文件名
string strFileName = SelectedItem.Header.ToString();
//数据源
this.gridLog.ItemsSource = MainApp._I_BaseService.GetLogFromFile(strFileName);
//显示标题
this.grpLog.Header = string.Format(this.grpLog.Tag.ToString(), strFileName);
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex.Message);
}
}
#endregion
#region ------按钮事件
/// <summary>
/// 查询
/// </summary>
private void WrapPanel_Click(object sender, RoutedEventArgs e)
{
Button btn = e.OriginalSource as Button;
if (btn != null)
{
switch (btn.Name)
{
case "btnQuery":
this.Query();
break;
case "btnRefresh":
this.Refresh();
break;
case "btnExport":
this.Export();
break;
}
}
}
/// <summary>
/// 查询
/// </summary>
private void Query()
{
if (gridLog.ItemsSource == null)
return;
if (!string.IsNullOrEmpty(this.txtTime.Text))
{
try
{
IList<Model.Log> listLog = this.gridLog.ItemsSource as IList<Model.Log>;
if (listLog != null)
{
//查询
var query = from log in listLog where log.TimeStamp.Contains(this.txtTime.Text) select log;
this.gridLog.ItemsSource = query;
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex.Message);
}
}
}
/// <summary>
/// 导出日志文件
/// </summary>
private void Export()
{
IList<Model.Log> listLog = this.gridLog.ItemsSource as IList<Model.Log>;
if (listLog != null)
{
//获得数据源结构
using (DataTable tableLog = new DataTable())
{
try
{
Type type = typeof(Model.Log);
foreach (PropertyInfo pInfo in type.GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
tableLog.Columns.Add(pInfo.Name);
}
//复制相关值
foreach (Model.Log mLog in listLog)
{
DataRow rowLog = tableLog.NewRow();
rowLog = new SiaSun.LMS.Common.CloneObjectValues().CloneDataRowValue(mLog, rowLog, null);
tableLog.Rows.Add(rowLog);
}
//导出EXCEL
new SiaSun.LMS.Common.Excel().ExportAllToExcel(tableLog, string.Format("Log-{0}", DateTime.Now.ToString()));
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
}
}
/// <summary>
/// 刷新
/// </summary>
private void Refresh()
{
//清空
this.txtFilePath.Clear();
this.txtTime.Clear();
//重新加载
this.LoadLogFile(this.tvwNode.U_SelectedItem);
}
#endregion
}
}