From 735785fecb99745ad51ff62f88dfdf45e9d604df Mon Sep 17 00:00:00 2001 From: maqiao <625215135@qq.com> Date: Mon, 3 Mar 2025 16:07:21 +0800 Subject: [PATCH] =?UTF-8?q?=20=E8=BF=9E=E6=8E=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=BC=82=E5=B8=B8=E6=B7=BB=E5=8A=A0=E7=B4=A7=E6=80=A5?= =?UTF-8?q?=E5=BC=80=E9=94=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DM_Weight/App.xaml.cs | 9 ++ .../ViewModels/EmergencyWindowViewModel.cs | 82 +++++++++++++++++ DM_Weight/ViewModels/MainWindowViewModel.cs | 8 +- DM_Weight/Views/EmergencyWindow.xaml | 91 +++++++++++++++++++ DM_Weight/Views/EmergencyWindow.xaml.cs | 28 ++++++ 5 files changed, 216 insertions(+), 2 deletions(-) create mode 100644 DM_Weight/ViewModels/EmergencyWindowViewModel.cs create mode 100644 DM_Weight/Views/EmergencyWindow.xaml create mode 100644 DM_Weight/Views/EmergencyWindow.xaml.cs diff --git a/DM_Weight/App.xaml.cs b/DM_Weight/App.xaml.cs index 6444de0..0a23294 100644 --- a/DM_Weight/App.xaml.cs +++ b/DM_Weight/App.xaml.cs @@ -32,6 +32,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() { @@ -58,6 +59,11 @@ 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) @@ -258,6 +264,9 @@ namespace DM_Weight containerRegistry.RegisterForNavigation(); + //紧急开锁页面 + containerRegistry.RegisterForNavigation(); + } } diff --git a/DM_Weight/ViewModels/EmergencyWindowViewModel.cs b/DM_Weight/ViewModels/EmergencyWindowViewModel.cs new file mode 100644 index 0000000..12bee58 --- /dev/null +++ b/DM_Weight/ViewModels/EmergencyWindowViewModel.cs @@ -0,0 +1,82 @@ +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; +using System.Windows.Threading; + +namespace DM_Weight.ViewModels +{ + public class EmergencyWindowViewModel : BindableBase + { + private readonly ILog logger = LogManager.GetLogger(typeof(HomeWindowViewModel)); + IEventAggregator _eventAggregator; + private PortUtil _portUtil; + IRegionManager _regionManager; + private bool _dbConnectionFail = !App.DbConnectionFail; + public bool DBConnectionStatus { get => _dbConnectionFail; set => SetProperty(ref _dbConnectionFail, value); } + private int _status; + + public int Status { get => _status; set => SetProperty(ref _status, value); } + public EmergencyWindowViewModel(IRegionManager regionManager, PortUtil portUtil, IEventAggregator eventAggregator) + { + _portUtil = portUtil; + _eventAggregator = eventAggregator; + _regionManager = regionManager; + CheckDBConnect(); + } + public DelegateCommand OpenDrawer + { + get => new DelegateCommand((DrawerNo) => + { + //应急开锁 + logger.Info($"应急开锁正在打开{DrawerNo}号抽屉"); + Status = 1; + _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉"); + _portUtil.WindowName = "EmergencyWindow"; + _portUtil.BoardType = 1; + _portUtil.ColNos = new int[] { 1 }; + _portUtil.DrawerNo = Convert.ToInt32(DrawerNo); + Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Normal, () => _portUtil.OpenDrawer()); + + } + ); + } + 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 8aea2f0..7e5066c 100644 --- a/DM_Weight/ViewModels/MainWindowViewModel.cs +++ b/DM_Weight/ViewModels/MainWindowViewModel.cs @@ -78,8 +78,12 @@ namespace DM_Weight.ViewModels //_container.RegisterType("LoginWindow"); //_regionManager.RegisterViewWithRegion("MainRegion", "LoginWindow"); - - _regionManager.RequestNavigate("MainRegion", "LoginWindow"); + if (App.DbConnectionFail) + { + _regionManager.RequestNavigate("MainRegion", "EmergencyWindow"); + } + else + _regionManager.RequestNavigate("MainRegion", "LoginWindow"); })); } diff --git a/DM_Weight/Views/EmergencyWindow.xaml b/DM_Weight/Views/EmergencyWindow.xaml new file mode 100644 index 0000000..64e451f --- /dev/null +++ b/DM_Weight/Views/EmergencyWindow.xaml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +