using AutoUpdaterDotNET;
using MaterialTraceability.Business;
using MaterialTraceability.Entity.DTO;
using MaterialTraceability.SqlSugar;
using MaterialTraceabilityUI.Common;
using SqlSugar;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Reflection;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Media.Imaging;
namespace MaterialTraceabilityUI
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window, INotifyPropertyChanged
{
#region 界面引用
//凹版页面
private intaglioPage intaglioPage = new intaglioPage();
//涂布界面
private CoatingProcess coatingProcess = new CoatingProcess();
//冷压页面
private firstPage firstPage = new firstPage();
//模切页面
private DieCuttingProcess dieCuttingProcess = new DieCuttingProcess();
//记录报表
private secondPage secondPage = new secondPage();
private ConfigInfo configInfo = new ConfigInfo();
private SqlSugarClient _db = SqlGenerator.GetMySqlInstance();
private TBAlarmRecord alarmRecordControl = new TBAlarmRecord();
#endregion
private readonly NotifyIcon notifyIcon = new NotifyIcon();
private AppConfigDto appConfig = AppConfigDto.Instance;
public MainWindow()
{
try
{
InitializeComponent();
AutoUpdater.Start("file://172.21.19.24/temp每天凌晨2点清理/临时文件/BHL/RFID物料追溯系统-现场更新/溧阳五程序/update.xml");
LogHelperBusiness.LogInfo("版本获取地址:file://172.21.19.24/temp每天凌晨2点清理/临时文件/BHL/RFID物料追溯系统-现场更新/溧阳五程序/update.xml");
string info = Assembly.GetExecutingAssembly().GetName().Version.ToString();
string resource = appConfig.resource;
this.titleText.Text = resource;
UpLoadBusiness loadBusiness = UpLoadBusiness.Instance;
if (loadBusiness.JudgeResourceIsUplpadData())
{
this.titleTextEngilsh.Text = "RFID material tracking system - Data Upload LY5 v" + info;
}
else
{
this.titleTextEngilsh.Text = "RFID material tracking system LY5 v" + info;
}
DataContext = this;
MainBusiness.ViewModelRefreshEvent += PlcStatus;
//WriteIniByConfig();
new MainBusiness();
} catch (Exception ex)
{
LogHelperBusiness.LogError("MainWindow构造函数初始化异常", ex);
}
}
private void WriteIniByConfig()
{
//initFlag
IniFileHelper inifile = new IniFileHelper(System.Environment.CurrentDirectory + "/App.InI");
if (inifile.IniReadValue("SystemConfig", "initFlag") == "YES")
{
inifile.IniWriteValue("SystemConfig", "plcAddress", ConfigHelper.GetConfig("plcAddress"));
inifile.IniWriteValue("SystemConfig", "plcPort", ConfigHelper.GetConfig("plcPort"));
inifile.IniWriteValue("SystemConfig", "machineId", ConfigHelper.GetConfig("machineId"));
inifile.IniWriteValue("SystemConfig", "processId", ConfigHelper.GetConfig("processId"));
inifile.IniWriteValue("SystemConfig", "resource", ConfigHelper.GetConfig("resource"));
inifile.IniWriteValue("SystemConfig", "operation", ConfigHelper.GetConfig("operation"));
inifile.IniWriteValue("SystemConfig", "operationByA", ConfigHelper.GetConfig("operationByA"));
inifile.IniWriteValue("SystemConfig", "operationByB", ConfigHelper.GetConfig("operationByB"));
inifile.IniWriteValue("SystemConfig", "isMesFlag", ConfigHelper.GetConfig("isMesFlag"));
inifile.IniWriteValue("SystemConfig", "plcSingalReadTime", ConfigHelper.GetConfig("plcSingalReadTime"));
inifile.IniWriteValue("SystemConfig", "initFlag","NO");
}
}
private void show_Click(object Sender,EventArgs e)
{
if (WindowState == WindowState.Minimized)
{
WindowState = WindowState.Normal;
}
Show();
Activate();
}
private void exit_Clikc(object Sender, EventArgs e)
{
if("2".Equals(ConfigHelper.GetConfig("roleId")))
{
ConfigHelper.UpdateAppConfig("userName", null);
ConfigHelper.UpdateAppConfig("roleId", null);
LogHelperBusiness.LogInfo("程序正常退出");
Environment.Exit(0);
}
else
{
System.Windows.MessageBox.Show("无权限退出,请登录系统管理账号进行操作!");
}
}
protected override void OnStateChanged(EventArgs e)
{
base.OnStateChanged(e);
}
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
Hide();
base.OnClosing(e);
}
///
/// 窗体初始化
///
///
///
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
notifyIcon.Visible = true;
notifyIcon.Text = "RFID物料追溯系统";
notifyIcon.Icon = new Icon("amn06-tnywh-001.ico");
notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(show_Click);
notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu();
System.Windows.Forms.MenuItem show = new System.Windows.Forms.MenuItem("显示");
show.Click += new EventHandler(show_Click);
notifyIcon.ContextMenu.MenuItems.Add(show);
System.Windows.Forms.MenuItem exit = new System.Windows.Forms.MenuItem("退出");
exit.Click += new EventHandler(exit_Clikc);
notifyIcon.ContextMenu.MenuItems.Add(exit);
string processId = appConfig.processId;
if (processId == "TB")
{
UserContent = coatingProcess;
this.alarmButton.Visibility = Visibility.Visible;
}
else if (processId.Contains("LY"))
{
UserContent = firstPage;
}
else if (processId.Contains("AB"))
{
UserContent = intaglioPage;
}
else
{
UserContent = dieCuttingProcess;
}
}catch(Exception ex)
{
LogHelperBusiness.LogError("界面Load异常", ex);
}
}
///
/// PLC连接状态
///
///
public void PlcStatus(ViewModelDto viewModelDto)
{
Action action;
//viewModelDto.plcStatus = true;
if (viewModelDto.plcStatus)
{
action = () =>
{
this.TestTB.Text = "PLC连接成功";
this.TestTB.Foreground = System.Windows.Media.Brushes.SpringGreen;
};
TestTB.Dispatcher.BeginInvoke(action);
action = () =>
{
string imageUrl = "pack://application:,,,/MaterialTraceabilityUI;component/Assets/Images/正常.png";
BitmapImage bitmapImage = new BitmapImage(new Uri(imageUrl));
this.PlcStatusImage.ImageSource = bitmapImage;
};
PlcStatusImage.Dispatcher.BeginInvoke(action);
}
else
{
action = () =>
{
string imageUrl = "pack://application:,,,/MaterialTraceabilityUI;component/Assets/Images/失败-01.png";
BitmapImage bitmapImage = new BitmapImage(new Uri(imageUrl));
this.PlcStatusImage.ImageSource = bitmapImage;
};
PlcStatusImage.Dispatcher.BeginInvoke(action);
action = () =>
{
this.TestTB.Text = "PLC连接失败";
this.TestTB.Foreground = System.Windows.Media.Brushes.Red;
};
TestTB.Dispatcher.BeginInvoke(action);
}
}
///
/// 首页
///
///
///
private void IndexPage_Click(object sender, RoutedEventArgs e)
{
//string processId = sysClients.Where(x => x.paramKey.Equals("processId")).FirstOrDefault().paramValue;
string processId = appConfig.processId;
if (processId == "TB")
{
UserContent = coatingProcess;
}
else if (processId.Contains("AB"))
{
UserContent = intaglioPage;
}
else if (processId.Contains("LY"))
{
UserContent = firstPage;
}
else
{
UserContent = dieCuttingProcess;
}
}
///
/// 记录报表
///
///
///
private void RecordPage_Click(object sender, RoutedEventArgs e)
{
UserContent = secondPage;
}
///
/// 参数配置
///
///
///
private void ConfigPage_Click(object sender, RoutedEventArgs e)
{
if (!"2".Equals(ConfigHelper.GetConfig("roleId")))
{
System.Windows.MessageBox.Show("请登录系统管理账号进行操作");
}
else
{
UserContent = configInfo;
}
}
public System.Windows.Controls.UserControl _content;
public System.Windows.Controls.UserControl UserContent
{
get { return _content; }
set
{
_content = value;
OnPropertyChanged("UserContent");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private System.Timers.Timer timer = new System.Timers.Timer(1000 * 60 * 5);
///
/// 登录
///
///
///
private void RadioButton_Click(object sender, RoutedEventArgs e)
{
UserLogin login = new UserLogin();
login.ShowDialog();
if ((bool)login.DialogResult)
{
this.loginUser.Text = ConfigHelper.GetConfig("userName");
timer = new System.Timers.Timer(1000 * 60 * 3);
if (!timer.Enabled)
{
timer.Elapsed += new System.Timers.ElapsedEventHandler(ReadRfidByTimer);
timer.AutoReset = true;
timer.Enabled = false;
timer.Start();
}
}
}
private async void ReadRfidByTimer(object source, System.Timers.ElapsedEventArgs e)
{
if (timer.Enabled)
{
timer.Stop();
timer.Close();
timer.Dispose();
}
App.Current.Dispatcher.Invoke(() =>
{
try
{
ConfigHelper.UpdateAppConfig("userName", null);
ConfigHelper.UpdateAppConfig("roleId", null);
this.loginUser.Text = "请登录";
}
catch (Exception ex)
{
LogHelperBusiness.LogError("定时退出用户信息异常", ex);
}
});
}
///
/// 注销
///
///
///
private void RadioButton_Click_1(object sender, RoutedEventArgs e)
{
try
{
ConfigHelper.UpdateAppConfig("userName", null);
ConfigHelper.UpdateAppConfig("roleId", null);
System.Windows.MessageBox.Show("注销成功");
this.loginUser.Text = "请登录";
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("注销异常");
}
}
private void alarmButton_Click(object sender, RoutedEventArgs e)
{
UserContent = alarmRecordControl;
}
//获取新版本更新
private void Get_NewVersion(object sender, RoutedEventArgs e)
{
AutoUpdater.Start("file://172.21.19.24/temp每天凌晨2点清理/临时文件/BHL/RFID物料追溯系统-现场更新/溧阳五程序/update.xml");
}
}
}