diff --git a/DM_Weight/App.config b/DM_Weight/App.config
index 2a95052..7388f7c 100644
--- a/DM_Weight/App.config
+++ b/DM_Weight/App.config
@@ -37,7 +37,7 @@
-
+
diff --git a/DM_Weight/App.xaml.cs b/DM_Weight/App.xaml.cs
index 7f5d5ea..958b6b6 100644
--- a/DM_Weight/App.xaml.cs
+++ b/DM_Weight/App.xaml.cs
@@ -34,6 +34,7 @@ namespace DM_Weight
///
public partial class App : PrismApplication
{
+ public static bool DbConnectionFail { get; set; } = false;
private readonly ILog logger = LogManager.GetLogger(typeof(App));
public App()
{
@@ -62,8 +63,12 @@ namespace DM_Weight
{
logger.Error($"发生错误:{e.Exception.Message}");
e.Handled = true;
+ if (e.Exception.Message.Contains("连接数据库过程中发生错误"))
+ {
+ DbConnectionFail = true;
+ Container.Resolve();
+ }
}
-
void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
@@ -294,6 +299,8 @@ namespace DM_Weight
//containerRegistry.RegisterForNavigation();
containerRegistry.RegisterForNavigation();
+ //紧急开锁页面
+ containerRegistry.RegisterForNavigation();
logger.Info("结束APP-RegisterTypes");
diff --git a/DM_Weight/ViewModels/EmergencyWindowViewModel.cs b/DM_Weight/ViewModels/EmergencyWindowViewModel.cs
new file mode 100644
index 0000000..fda0380
--- /dev/null
+++ b/DM_Weight/ViewModels/EmergencyWindowViewModel.cs
@@ -0,0 +1,89 @@
+using DM_Weight.Models;
+using DM_Weight.msg;
+using DM_Weight.Port;
+using DM_Weight.util;
+using log4net;
+using Prism.Commands;
+using Prism.Events;
+using Prism.Mvvm;
+using Prism.Regions;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DM_Weight.ViewModels
+{
+ public class EmergencyWindowViewModel : BindableBase
+ {
+ private readonly ILog logger = LogManager.GetLogger(typeof(HomeWindowViewModel));
+ IEventAggregator _eventAggregator;
+ private PortUtil _portUtil;
+ IRegionManager _regionManager;
+ SocketHelper _socketHelper;
+ private bool _dbConnectionFail = !App.DbConnectionFail;
+ public bool DBConnectionStatus { get=>_dbConnectionFail; set => SetProperty(ref _dbConnectionFail, value); }
+ public EmergencyWindowViewModel(IRegionManager regionManager, PortUtil portUtil, IEventAggregator eventAggregator, SocketHelper socketHelper)
+ {
+ _portUtil = portUtil;
+ _eventAggregator = eventAggregator;
+ _regionManager = regionManager;
+ _socketHelper = socketHelper;
+ CheckDBConnect();
+ }
+ public DelegateCommand UpdateDrawerNo
+ {
+ get => new DelegateCommand((DrawerNo) =>
+ {
+ //应急开锁
+ logger.Info($"应急开锁正在打开{DrawerNo}号药箱");
+ try
+ {
+ logger.Info($"发送开{DrawerNo}号药箱指令");
+ _socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(Convert.ToInt32(DrawerNo) - 1) });
+ _socketHelper.dateTime = DateTime.Now;
+ logger.Info($"发开{DrawerNo}号药箱指令完成");
+ }
+ catch (Exception ex)
+ {
+ AlertMsg alertMsg = new AlertMsg
+ {
+ Message = $"网口连接异常,开药箱正在重试{ex.Message}",
+ Type = MsgType.ERROR,
+ };
+ _eventAggregator.GetEvent().Publish(alertMsg);
+ return;
+ }
+ }
+ );
+ }
+ public DelegateCommand ReturnLoginDelegate
+ {
+ get => new DelegateCommand(() =>
+ {
+ _regionManager.RequestNavigate("MainRegion", "LoginWindow");
+ });
+ }
+ //间隔1分钟查询数据库连接状态
+ private void CheckDBConnect()
+ {
+ new PromiseUtil().taskAsyncLoop(60000, 0, async (options, next, stop) =>
+ {
+ try
+ {
+ var userList = SqlSugarHelper.Db.Queryable()
+ .First(u => u.UserName == "admin");
+ App.DbConnectionFail = false;
+ DBConnectionStatus = true;
+ stop();
+ }
+ catch (Exception ex)
+ {
+ next();
+ }
+ });
+ }
+ }
+}
diff --git a/DM_Weight/ViewModels/MainWindowViewModel.cs b/DM_Weight/ViewModels/MainWindowViewModel.cs
index fa40760..a7733a4 100644
--- a/DM_Weight/ViewModels/MainWindowViewModel.cs
+++ b/DM_Weight/ViewModels/MainWindowViewModel.cs
@@ -83,9 +83,16 @@ namespace DM_Weight.ViewModels
//System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
//{
-
- _container.RegisterType