diff --git a/DM_Weight/App.config b/DM_Weight/App.config index cbce923..1194994 100644 --- a/DM_Weight/App.config +++ b/DM_Weight/App.config @@ -117,8 +117,8 @@ - - + + diff --git a/DM_Weight/Models/ChannelList.cs b/DM_Weight/Models/ChannelList.cs index 89e870c..2268c8d 100644 --- a/DM_Weight/Models/ChannelList.cs +++ b/DM_Weight/Models/ChannelList.cs @@ -113,6 +113,12 @@ namespace DM_Weight.Models { get;set; } + //归属用户的用户名 + [SugarColumn(ColumnName = "commnet")] + public string BelongUserName + { + get;set; + } //private int _addQuantity = 0; //[SugarColumn(IsIgnore = true)] //public int AddQuantity @@ -209,8 +215,8 @@ namespace DM_Weight.Models [SugarColumn(ColumnName = "drug_manu_no")] public string DrugSpec { get=> _drugSpec;set=>SetProperty(ref _drugSpec, value); } - private string _belongUserName; - [SugarColumn(IsIgnore =true)] - public string BelongUserName { get => _belongUserName;set=>SetProperty(ref _belongUserName, value); } + //private string _belongUserName; + //[SugarColumn(IsIgnore =true)] + //public string BelongUserName { get => _belongUserName;set=>SetProperty(ref _belongUserName, value); } } } diff --git a/DM_Weight/Port/MyBaseMessage.cs b/DM_Weight/Port/MyBaseMessage.cs index 4a849cd..a593e2f 100644 --- a/DM_Weight/Port/MyBaseMessage.cs +++ b/DM_Weight/Port/MyBaseMessage.cs @@ -10,12 +10,12 @@ namespace DM_Weight.Port { public int addr { get; set; } = 1; public short lockNo { get; set; } - public short delay { get; set; } = 20; + public short delay { get; set; } = 2; public int functionCode { get; set; } = 6; public MyBaseMessage() { } - public MyBaseMessage(short lockNo, int addr = 1, short delay = 20, int functionCode = 6) + public MyBaseMessage(short lockNo, int addr = 1, short delay = 2, int functionCode = 6) { this.addr = addr; this.lockNo = lockNo; diff --git a/DM_Weight/Port/SocketHelper.cs b/DM_Weight/Port/SocketHelper.cs index 42eb96a..9305e74 100644 --- a/DM_Weight/Port/SocketHelper.cs +++ b/DM_Weight/Port/SocketHelper.cs @@ -68,8 +68,6 @@ namespace DM_Weight.Port //} }; - - acceptor.SessionClosed += (o, e) => { logger.Info("SessionClosed"); diff --git a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs index 6c8e8ca..5e914a6 100644 --- a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs @@ -395,8 +395,9 @@ namespace DM_Weight.ViewModels //} //TotalCount = totalCount; - PageCount = (int)Math.Ceiling((double)TotalCount / PageSize); - if (currentList != null && currentList.EffDate != null && Convert.ToDateTime(currentList.EffDate).ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")) + //PageCount = (int)Math.Ceiling((double)TotalCount / PageSize); + //if (currentList != null && currentList.EffDate != null && Convert.ToDateTime(currentList.EffDate).ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")) + if (currentList != null && currentList.EffDate != null) { switch (DrawerNo) { @@ -905,17 +906,17 @@ namespace DM_Weight.ViewModels } else { - _socketHelper.OpenStatus = false; - _socketHelper.IsMultiThread = false; _socketHelper.dateTime = DateTime.Now; + //_socketHelper.OpenStatus = false; + _socketHelper.IsMultiThread = false; stop(); } } else { - _socketHelper.OpenStatus = false; - _socketHelper.IsMultiThread = false; _socketHelper.dateTime = DateTime.Now; + //_socketHelper.OpenStatus = false; + _socketHelper.IsMultiThread = false; stop(); } iException = 0; @@ -975,6 +976,7 @@ namespace DM_Weight.ViewModels public void OnNavigatedTo(NavigationContext navigationContext) { RequestData(); + List listCls = SqlSugarHelper.Db.Queryable() .LeftJoin((cl, ul) => ul.UserBarcode == cl.BelongUser) .Where(cl => cl.MachineId == "DM5") diff --git a/DM_Weight/ViewModels/HomeWindowViewModel.cs b/DM_Weight/ViewModels/HomeWindowViewModel.cs index 6756ad2..3785cd6 100644 --- a/DM_Weight/ViewModels/HomeWindowViewModel.cs +++ b/DM_Weight/ViewModels/HomeWindowViewModel.cs @@ -25,6 +25,8 @@ using DM_Weight.msg; using DM_Weight.HIKVISION; using System.Threading; using System.Diagnostics; +using MaterialDesignThemes.Wpf; +using System.Windows.Media; namespace DM_Weight.ViewModels { @@ -148,7 +150,15 @@ namespace DM_Weight.ViewModels // } // } // } - SetProperty(ref _selectedChildMenu, value); + if (!_socketHelper.OpenStatus) + { + SetProperty(ref _selectedChildMenu, value); + } + else + { + ModbusHelper.SpeakAsync("请先关药箱"); + return; + } //} } } @@ -216,20 +226,23 @@ namespace DM_Weight.ViewModels _regionManager.RequestNavigate("ContentRegion", "ReturnDrugWindow"); } } - else if (SelectedChildMenu.PremissionPath.Equals("SettingMainWindow") || SelectedChildMenu.PremissionPath.Equals("SettingWindow")) + //else if (SelectedChildMenu.PremissionPath.Equals("SettingMainWindow") || SelectedChildMenu.PremissionPath.Equals("SettingWindow")) + //{ + // if (Convert.ToInt32(ConfigurationManager.AppSettings["hasFridge"]) > 0) + // { + // _regionManager.RequestNavigate("ContentRegion", "SettingMainWindow"); + // } + // else + // { + // _regionManager.RequestNavigate("ContentRegion", "SettingWindow"); + // } + //} + //else { - if (Convert.ToInt32(ConfigurationManager.AppSettings["hasFridge"]) > 0) + System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => { - _regionManager.RequestNavigate("ContentRegion", "SettingMainWindow"); - } - else - { - _regionManager.RequestNavigate("ContentRegion", "SettingWindow"); - } - } - else - { - _regionManager.RequestNavigate("ContentRegion", SelectedChildMenu.PremissionPath); + _regionManager.RequestNavigate("ContentRegion", SelectedChildMenu.PremissionPath); + })); } } } @@ -255,9 +268,16 @@ namespace DM_Weight.ViewModels // SelectedChildMenu = value.Children[0]; // } //} - SetProperty(ref _selectedMenu, value); + if (!_socketHelper.OpenStatus) + SetProperty(ref _selectedMenu, value); + else + { + ModbusHelper.SpeakAsync("请先关药箱"); + return; + } } } + //PremissionDm? PreSelectedMenu; private DelegateCommand _selectionCommon; public DelegateCommand SelectionCommon @@ -266,6 +286,17 @@ namespace DM_Weight.ViewModels } private void SelectionMethod() { + //if (SelectedMenu != null && SelectedMenu.PremissionName != "退出") + //{ + // PreSelectedMenu = SelectedMenu; + //} + //if (_socketHelper.OpenStatus) + //{ + // if (PreSelectedMenu != null) + // { + // SelectedMenu = PreSelectedMenu; + // } + //} //SelectedMenu = viewName.SelectedItem as PremissionDm; //if (SelectedMenu.PremissionName == "退出") //{ @@ -290,31 +321,19 @@ namespace DM_Weight.ViewModels //bool[] boolArrs = ModbusHelper.GetInstance().GetAllBoxState(); //bool allTrue = Array.TrueForAll(boolArrs, b => b); //false是关着,true是开着 - if (!_socketHelper.OpenStatus) - //if (ModbusHelper.BoxOperate) - { - logger.Info($"用户【{Operator?.Nickname}】退出登录"); - Operator = null; - Reviewer = null; - _regionManager.RequestNavigate("MainRegion", "LoginWindow"); - } - else - { - return; - //还有药箱开着不能退出 - ModbusHelper.SpeakAsync("请关闭药箱后再退出"); - SelectedMenu = _premissionDmList[0]; - } + logger.Info($"用户【{Operator?.Nickname}】退出登录"); + Operator = null; + Reviewer = null; + _regionManager.RequestNavigate("MainRegion", "LoginWindow"); } - else { //SelectedMenu.Children = SelectedMenu.Children; //SelectedChildMenu = SelectedMenu.Children[0]; - //if (!_portUtil.Operate) - //{ - _regionManager.RequestNavigate("ContentRegion", SelectedMenu.Children[0].PremissionPath); - //} + if (!_socketHelper.OpenStatus) + { + _regionManager.RequestNavigate("ContentRegion", SelectedMenu.Children[0].PremissionPath); + } } } #region 子菜单点击 @@ -347,6 +366,8 @@ namespace DM_Weight.ViewModels IEventAggregator _eventAggregator; //private ModbusHelper _modbusHelper; SocketHelper _socketHelper; + //System.Timers.Timer timer; + //DispatcherTimer timerNew; public HomeWindowViewModel(IRegionManager iRegionManager, PortUtil portUtil, IUnityContainer container, IDialogService dialogService, IEventAggregator eventAggregator, SocketHelper socketHelper) { _portUtil = portUtil; @@ -355,8 +376,84 @@ namespace DM_Weight.ViewModels _container = container; this._eventAggregator = eventAggregator; _socketHelper = socketHelper; - //_chkFunction = cHKFunction; - //_modbusHelper = modbusHelper; + //timerNew = new DispatcherTimer(); + //int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0"); + //if (autoExit > 0) + //{ + // timerNew.Interval =new TimeSpan(0, 0, 0, 1, 0); //autoExit * 1000; + // timerNew.Tick += (sender, e) => + // { + // if (!_socketHelper.OpenStatus) + // { + // // 无人操作鼠标键盘 + // if ((DateTime.Now - _socketHelper.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit) + // { + // logger.Info($"设备内无人操作,用户【{Operator?.Nickname}】自动退出登录"); + // Operator = null; + // Reviewer = null; + // //Application.Current.Dispatcher.Invoke(() => + // //{ + // //System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => + // //{ + // _regionManager.RequestNavigate("MainRegion", "LoginWindow"); + // //})); + // //}); + // timerNew.Stop(); + // //timer.Dispose(); + // } + // } + // else + // { + // _socketHelper.dateTime = DateTime.Now; + // } + + + // }; + // timerNew.Start(); + //} + int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0"); + if (autoExit > 0) + { + int interval= autoExit * 1000; + new PromiseUtil().taskAsyncLoop(interval, 0, async (options, next, stop) => + { + try + { + if (!_socketHelper.OpenStatus) + { + // 无人操作鼠标键盘 + if ((DateTime.Now - _socketHelper.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit) + { + logger.Info($"设备内无人操作,用户【{Operator?.Nickname}】自动退出登录"); + Operator = null; + Reviewer = null; + //Application.Current.Dispatcher.Invoke(() => + //{ + System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => + { + _regionManager.RequestNavigate("MainRegion", "LoginWindow"); + })); + //}); + stop(); + //timer.Dispose(); + } + else + { + next(); + } + } + else + { + _socketHelper.dateTime = DateTime.Now; + next(); + } + } + catch (Exception ex) + { + logger.Info($"自动退出异常:{ex.Message}"); + } + }); + } } public DelegateCommand OpenFingerDialog @@ -530,7 +627,6 @@ namespace DM_Weight.ViewModels //接收导航传过来的参数 public void OnNavigatedTo(NavigationContext navigationContext) { - _eventAggregator.GetEvent().Subscribe(SetLoginOut); //_portUtil.dateTime = DateTime.Now; //取出user @@ -570,32 +666,6 @@ namespace DM_Weight.ViewModels _regionManager.RequestNavigate("ContentRegion", premissions[0].Children[0].PremissionPath); FindDrawerCount(); - int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0"); - if (autoExit > 0) - { - System.Timers.Timer timer = new System.Timers.Timer(); - timer.Interval = autoExit* 1000; - timer.Elapsed += (sender, e) => - { - // 串口无人操作 - if (!_socketHelper.OpenStatus) - { - // 无人操作鼠标键盘 - if ((DateTime.Now - _socketHelper.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit) - { - logger.Info($"设备内无人操作,用户【{Operator?.Nickname}】自动退出登录"); - Operator = null; - Reviewer = null; - Application.Current.Dispatcher.Invoke(() => - { - _regionManager.RequestNavigate("MainRegion", "LoginWindow"); - timer.Stop(); - }); - } - } - }; - timer.Start(); - } #region 温度查询定时 //int interval = Convert.ToInt32(ConfigurationManager.AppSettings["Interval"]); //if (interval > 0) @@ -608,29 +678,7 @@ namespace DM_Weight.ViewModels // //WDTimer.AutoReset = true; // //WDTimer.Enabled = true; //} - Task.Factory.StartNew(() => - { - while (true) - { - TemperatureHumidityInfo temp = _portUtil.GetWSD(); - if (temp != null) - { - SqlSugarHelper.Db.Insertable(new TemperatureHumidityInfo() - { - GroupNo = temp.GroupNo, - Temp = temp.Temp, - Humi = temp.Humi, - AddTime = DateTime.Now - }).ExecuteCommand(); - logger.Info($"保存温湿度信息:{temp.Temp},{temp.Humi}"); - Task.Delay(1200000);//20分钟查一次 - } - else - { - logger.Info("温湿度信息返回空"); - } - } - }); + #endregion //if (stopRecord > 0) //{ @@ -691,7 +739,7 @@ namespace DM_Weight.ViewModels } catch (Exception ex) { - logger.Info($"自动退出异常:{ex.Message}"); + logger.Info($"自动退出异常:{ex.Message}"); } } diff --git a/DM_Weight/ViewModels/LoginWindowViewModel.cs b/DM_Weight/ViewModels/LoginWindowViewModel.cs index f21b754..ef2148f 100644 --- a/DM_Weight/ViewModels/LoginWindowViewModel.cs +++ b/DM_Weight/ViewModels/LoginWindowViewModel.cs @@ -120,11 +120,8 @@ namespace DM_Weight.ViewModels _portUtil = portUtil; _regionManager = regionManager; _eventAggregator = eventAggregator; - FingerMsg = !_fingerprintUtil.bIsConnected; //FingerMsg = !FingerprintUtil.bIsConnected; _eventAggregator.GetEvent().Subscribe(LoginEvent); - logger.Info($"LoginWindowViewModel;FingerMsg:{_fingerprintUtil.bIsConnected}"); - _fingerprintUtil.FingerDisconnect(); } private DelegateCommand? _loginCommand; @@ -262,10 +259,10 @@ _exitCommand ??= new DelegateCommand(Exit); { //添加参数,键值对格式 keys.Add("operator", user); - //System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => - //{ + System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => + { _regionManager.RequestNavigate("MainRegion", "HomeWindow", keys); - //})); + })); } // 双人登录模式 else @@ -278,10 +275,10 @@ _exitCommand ??= new DelegateCommand(Exit); keys.Add("reviewer", user); Reviewer = user; RaisePropertyChanged("Reviewer"); - //System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => - //{ + System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => + { _regionManager.RequestNavigate("MainRegion", "HomeWindow", keys); - //})); + })); } else @@ -302,10 +299,10 @@ _exitCommand ??= new DelegateCommand(Exit); keys.Add("operator", user); Operator = user; RaisePropertyChanged("Operator"); - //System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => - //{ + System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => + { _regionManager.RequestNavigate("MainRegion", "HomeWindow", keys); - //})); + })); } else @@ -451,6 +448,9 @@ _exitCommand ??= new DelegateCommand(Exit); { //FingerMsg = !_fingerprintUtil.bIsConnected; //_eventAggregator.GetEvent().Subscribe(LoginEvent); + //logger.Info($"LoginWindowViewModel;FingerMsg:{_fingerprintUtil.bIsConnected}"); + //_fingerprintUtil.FingerDisconnect(); + //FingerMsg = !_fingerprintUtil.bIsConnected; } diff --git a/DM_Weight/ViewModels/MainWindowViewModel.cs b/DM_Weight/ViewModels/MainWindowViewModel.cs index a21acc9..fa40760 100644 --- a/DM_Weight/ViewModels/MainWindowViewModel.cs +++ b/DM_Weight/ViewModels/MainWindowViewModel.cs @@ -19,6 +19,7 @@ using DM_Weight.HIKVISION; using log4net.Repository.Hierarchy; using log4net; using System.Windows; +using DM_Weight.Models; namespace DM_Weight.ViewModels { @@ -67,11 +68,12 @@ namespace DM_Weight.ViewModels IRegionManager _regionManager; IUnityContainer _container; //private CHKFunction _cHKFunction; - private readonly ILog logger = LogManager.GetLogger(typeof(PortUtil)); + private readonly ILog logger = LogManager.GetLogger(typeof(MainWindowViewModel)); SocketHelper _socketHelper; - public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, SocketHelper socketHelper) + private PortUtil _portUtil; + public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, SocketHelper socketHelper, PortUtil portUtil) { - //_portUtil = portUtil; + _portUtil = portUtil; this.eventAggregator = eventAggregator; this.eventAggregator.GetEvent().Subscribe(doMyPrismEvent2); _fingerprintUtil = fingerprintUtil; @@ -85,6 +87,59 @@ namespace DM_Weight.ViewModels _container.RegisterType("LoginWindow"); _regionManager.RegisterViewWithRegion("MainRegion", "LoginWindow"); _socketHelper = socketHelper; + new PromiseUtil().taskAsyncLoop(1200000, 0, async (options, next, stop) => + { + _socketHelper.IsMultiThread = true; + try + { + TemperatureHumidityInfo temp = _portUtil.GetWSD(); + if (temp != null) + { + SqlSugarHelper.Db.Insertable(new TemperatureHumidityInfo() + { + GroupNo = temp.GroupNo, + Temp = temp.Temp, + Humi = temp.Humi, + AddTime = DateTime.Now + }).ExecuteCommand(); + logger.Info($"保存温湿度信息:{temp.Temp},{temp.Humi}"); + Task.Delay(1200000);//20分钟查一次 + } + else + { + logger.Info("温湿度信息返回空"); + } + next(); + } + catch (Exception ex) + { + logger.Info($"保存温湿度异常:{ex.Message}"); + next(); + } + }); + //Task.Factory.StartNew(() => + //{ + // while (true) + // { + // TemperatureHumidityInfo temp = _portUtil.GetWSD(); + // if (temp != null) + // { + // SqlSugarHelper.Db.Insertable(new TemperatureHumidityInfo() + // { + // GroupNo = temp.GroupNo, + // Temp = temp.Temp, + // Humi = temp.Humi, + // AddTime = DateTime.Now + // }).ExecuteCommand(); + // logger.Info($"保存温湿度信息:{temp.Temp},{temp.Humi}"); + // Task.Delay(1200000);//20分钟查一次 + // } + // else + // { + // logger.Info("温湿度信息返回空"); + // } + // } + //}); //})); @@ -106,7 +161,7 @@ namespace DM_Weight.ViewModels } if (_socketHelper.IsMultiThread) { - Application.Current.Dispatcher.BeginInvoke(new Action(() => { + Application.Current.Dispatcher.Invoke(new Action(() => { this.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c")); SnackbarMessageQueue.Enqueue(msg.Message); })); diff --git a/DM_Weight/ViewModels/OpenBoxNewWindowViewModel.cs b/DM_Weight/ViewModels/OpenBoxNewWindowViewModel.cs index 0b6565d..09c7188 100644 --- a/DM_Weight/ViewModels/OpenBoxNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/OpenBoxNewWindowViewModel.cs @@ -739,16 +739,16 @@ namespace DM_Weight.ViewModels else { _socketHelper.IsMultiThread = false; - _socketHelper.OpenStatus = false; _socketHelper.dateTime=DateTime.Now; + //_socketHelper.OpenStatus = false; stop(); } } else { _socketHelper.IsMultiThread = false; - _socketHelper.OpenStatus = false; _socketHelper.dateTime = DateTime.Now; + //_socketHelper.OpenStatus = false; stop(); } iException = 0; @@ -766,6 +766,7 @@ namespace DM_Weight.ViewModels Type = MsgType.ERROR, }; _eventAggregator.GetEvent().Publish(alertMsg); + logger.Info($"网口连接异常,正在重试{ex.Message}"); next(); } }); diff --git a/DM_Weight/Views/HomeWindow.xaml b/DM_Weight/Views/HomeWindow.xaml index 40d17df..8ed42ee 100644 --- a/DM_Weight/Views/HomeWindow.xaml +++ b/DM_Weight/Views/HomeWindow.xaml @@ -130,6 +130,5 @@ -