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.
382 lines
13 KiB
382 lines
13 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Threading;
|
|
using System.IO;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace XS_BLL
|
|
{
|
|
public partial class DisplaySet : UserControl
|
|
{
|
|
#region 全局参数
|
|
/// <summary>
|
|
/// 展示数据
|
|
/// </summary>
|
|
public static string jsonData = string.Empty;
|
|
/// <summary>
|
|
/// 是否展示数据
|
|
/// </summary>
|
|
public static bool blRb = false;
|
|
|
|
public static List<string> information = new List<string>();
|
|
public static List<string> errorDate = new List<string>();
|
|
public static List<string> FileExhibitionDate = new List<string>();
|
|
/// <summary>
|
|
/// 刷新数据
|
|
/// </summary>
|
|
public static bool bRefresh = false;
|
|
#endregion
|
|
public DisplaySet()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
#region
|
|
/// <summary>
|
|
/// 日志展示
|
|
/// </summary>
|
|
/// <param name="name">接口名</param>
|
|
/// <param name="value">值1</param>
|
|
/// <param name="value2">值2</param>
|
|
public void AddListBoxItem(string name, string value, string value2 = "")
|
|
{
|
|
information.Insert(0, name + "-->>" + value + value2);
|
|
}
|
|
|
|
public void ErrorAddListBoxItem(string name, string value, string value2 = "")
|
|
{
|
|
errorDate.Insert(0, name + "-->>" + value + value2);
|
|
}
|
|
|
|
void show()
|
|
{
|
|
//异步外的方法。这样窗体不会假死
|
|
while (blRb)
|
|
{
|
|
blRb = false;
|
|
Thread.Sleep(10);
|
|
Action ac = new Action(showText);
|
|
this.Invoke(ac); //在同步方法里面实现更新窗体上的数据
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 更新数据
|
|
/// </summary>
|
|
void showText()
|
|
{
|
|
string[] resAry = jsonData.Split(new string[] { "\r\n" }, StringSplitOptions.None);
|
|
string tex = string.Empty;
|
|
if (resAry.Length > 1)
|
|
{
|
|
tex = DateTime.Now + "\r\n" + resAry[0] + "\r\n" + UtilityBLL.JsonToString(resAry[resAry.Length - 1]);
|
|
for (int i = 0; i < resAry.Length; i++)
|
|
{
|
|
tex += DateTime.Now + "\r\n" + resAry[i] + "\r\n" + UtilityBLL.JsonToString(resAry[i]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
tex = DateTime.Now + "\r\n" + UtilityBLL.JsonToString(jsonData);
|
|
}
|
|
richTextBox1.Text = tex;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
private void DisplaySet_Load(object sender, EventArgs e)
|
|
{
|
|
new Thread(() => RefreshDeviceStatesAndTasks()) { IsBackground = true }.Start();
|
|
}
|
|
|
|
private void RefreshDeviceStatesAndTasks()
|
|
{
|
|
while (true)
|
|
{
|
|
try
|
|
{
|
|
if (bRefresh || string.IsNullOrEmpty(jsonData) || jsonData.Replace("\r\n", "").Length < 20)
|
|
{
|
|
this.richTextBox1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
}
|
|
else
|
|
{
|
|
if (this.richTextBox1.Text.Replace("\r\n", "").Length < 20)
|
|
{
|
|
this.richTextBox1.Text = !string.IsNullOrEmpty(jsonData) ? jsonData : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
}
|
|
}
|
|
|
|
if (bRefresh || lb_Message.Items.Count > 1000)
|
|
{
|
|
lb_Message.Items.Clear();
|
|
}
|
|
|
|
if (information.Count > 0)
|
|
{
|
|
lb_Message.Items.Insert(0, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-->>" + information[information.Count - 1]);
|
|
information.RemoveAt(information.Count - 1);
|
|
}
|
|
|
|
if (bRefresh || lb_error.Items.Count > 200)
|
|
{
|
|
lb_error.Items.Clear();
|
|
}
|
|
if (errorDate.Count > 0)
|
|
{
|
|
lb_error.Items.Insert(0, DateTime.Now.ToString() + "-->>" + errorDate[errorDate.Count - 1]);
|
|
errorDate.RemoveAt(errorDate.Count - 1);
|
|
|
|
}
|
|
if (FileExhibitionDate.Count <= 0)
|
|
{
|
|
lb_FileExhibition.Items.Clear();
|
|
|
|
}
|
|
else
|
|
{
|
|
if (lb_FileExhibition.Items.Count >= 0)
|
|
{
|
|
lb_FileExhibition.DataSource = FileExhibitionDate;
|
|
}
|
|
}
|
|
if (bRefresh)
|
|
{
|
|
bRefresh = false;
|
|
}
|
|
Thread.Sleep(10);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Lb_Message_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (lb_Message.SelectedIndex >= 0)
|
|
{
|
|
string txt = lb_Message.Items[lb_Message.SelectedIndex].ToString();
|
|
if (!string.IsNullOrEmpty(txt))
|
|
{
|
|
Clipboard.SetText(txt);
|
|
}
|
|
}
|
|
DisplayError();
|
|
}
|
|
public void DisplayError(bool bl = true)
|
|
{
|
|
//splitContainer1.Panel2Collapsed = bl;
|
|
}
|
|
private void Lb_Message_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (lb_Message.SelectedIndex >= 0)
|
|
{
|
|
string txt = lb_Message.Items[lb_Message.SelectedIndex].ToString();
|
|
string[] resAry = txt.Split(new string[] { "-->>" }, StringSplitOptions.None);
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < resAry.Length; i++)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
sb.AppendLine(resAry[0]);
|
|
}
|
|
else
|
|
{
|
|
sb.AppendLine(UtilityBLL.JsonToString(resAry[i]));
|
|
}
|
|
}
|
|
richTextBox1.Clear();
|
|
jsonData = sb.ToString();
|
|
}
|
|
DisplayError(false);
|
|
}
|
|
|
|
public void eliminate()
|
|
{
|
|
bRefresh = true;
|
|
information.Clear();
|
|
jsonData = string.Empty;
|
|
}
|
|
|
|
private void Lb_error_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (lb_error.SelectedIndex >= 0)
|
|
{
|
|
string txt = lb_error.Items[lb_error.SelectedIndex].ToString();
|
|
if (!string.IsNullOrEmpty(txt))
|
|
{
|
|
Clipboard.SetText(txt);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Lb_error_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (lb_error.SelectedIndex >= 0)
|
|
{
|
|
string txt = lb_error.Items[lb_error.SelectedIndex].ToString();
|
|
string[] resAry = txt.Split(new string[] { "-->>" }, StringSplitOptions.None);
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < resAry.Length; i++)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
sb.AppendLine(resAry[0]);
|
|
}
|
|
else
|
|
{
|
|
sb.AppendLine(UtilityBLL.JsonToString(resAry[i]));
|
|
}
|
|
}
|
|
richTextBox1.Clear();
|
|
jsonData = sb.ToString();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 文件读取显示
|
|
/// </summary>
|
|
public void FileExhibition()
|
|
{
|
|
try
|
|
{
|
|
OpenFileDialog dialog = new OpenFileDialog();
|
|
dialog.Filter = "所有文件(*.*)|*.*";
|
|
string file = string.Empty;
|
|
|
|
//设置默认打开路径(绝对路径)
|
|
dialog.InitialDirectory = file;
|
|
//ofd.Filter = "Excel文件(*.xls,*.xlsx)|*.xls;*.xlsx";
|
|
dialog.RestoreDirectory = true;
|
|
string myStr = string.Empty;
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
file = dialog.FileName;
|
|
//if (!Directory.Exists(file))
|
|
//{
|
|
// return;
|
|
//}
|
|
FileStream fsm = new FileStream(file, FileMode.Open, FileAccess.Read);
|
|
try
|
|
{
|
|
byte[] bt = new byte[fsm.Length];
|
|
fsm.Read(bt, 0, bt.Length);
|
|
myStr = System.Text.Encoding.UTF8.GetString(bt);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
myStr = "";
|
|
}
|
|
finally
|
|
{
|
|
if (fsm != null)
|
|
{
|
|
fsm.Close();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("文件无有效数据或文件被占用!!!", "提示:");
|
|
return;
|
|
}
|
|
FileExhibitionDate = myStr.Split('\n').ToList();
|
|
List<string> list = myStr.Split('\n').ToList();
|
|
lb_FileExhibition.DataSource = FileExhibitionDate;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
|
|
}
|
|
|
|
private void Lb_FileExhibition_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (lb_FileExhibition.SelectedIndex >= 0)
|
|
{
|
|
string txt = lb_FileExhibition.Items[lb_FileExhibition.SelectedIndex].ToString();
|
|
if (!string.IsNullOrEmpty(txt))
|
|
{
|
|
Clipboard.SetText(txt);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Lb_FileExhibition_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (lb_FileExhibition.SelectedIndex >= 0)
|
|
{
|
|
richTextBox1.Clear();
|
|
string txt = string.Empty;
|
|
List<string> txtlist = new List<string>();
|
|
string temp = lb_FileExhibition.Items[lb_FileExhibition.SelectedIndex].ToString();
|
|
if (temp.IndexOf('{') > 0 && temp.IndexOf('}') > 0)
|
|
{
|
|
txtlist.Add(lb_FileExhibition.Items[lb_FileExhibition.SelectedIndex].ToString());
|
|
txtlist.Add(txtlist[0].Substring(0, txtlist[0].IndexOf('{')));
|
|
txtlist.Add(txtlist[0].Substring(txtlist[0].IndexOf('{'), txtlist[0].LastIndexOf('}') + 1 - txtlist[0].IndexOf('{')));
|
|
txtlist.Add(txtlist[0].Substring(txtlist[0].LastIndexOf('}') + 1, txtlist[0].Length - txtlist[0].LastIndexOf('}') - 1));
|
|
|
|
//格式化json字符串
|
|
JsonSerializer serializer = new JsonSerializer();
|
|
TextReader tr = new StringReader(txtlist[2]);
|
|
JsonTextReader jtr = new JsonTextReader(tr);
|
|
object obj = serializer.Deserialize(jtr);
|
|
if (obj != null)
|
|
{
|
|
StringWriter textWriter = new StringWriter();
|
|
JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
|
|
{
|
|
Formatting = Formatting.Indented,
|
|
Indentation = 4,
|
|
IndentChar = ' '
|
|
};
|
|
serializer.Serialize(jsonWriter, obj);
|
|
txt = textWriter.ToString();
|
|
}
|
|
else
|
|
{
|
|
txt = txtlist[0];
|
|
}
|
|
jsonData = txtlist[1] + "\r\n" + txt + "\r\n" + txtlist[3];
|
|
}
|
|
else
|
|
{
|
|
jsonData = temp;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Lb_FileExhibition_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
Thread t = new Thread((ThreadStart)(() =>
|
|
{
|
|
string txt = string.Empty;
|
|
foreach (var temp in lb_FileExhibition.SelectedItems)
|
|
{
|
|
txt += temp.ToString();
|
|
|
|
//string Value = drv[lb_FileExhibition.ValueMember].ToString();
|
|
|
|
}
|
|
if (!string.IsNullOrEmpty(txt))
|
|
{
|
|
Clipboard.SetText(txt);
|
|
}
|
|
}));
|
|
t.SetApartmentState(ApartmentState.STA);
|
|
t.Start();
|
|
t.Join();
|
|
}
|
|
}
|
|
}
|