100 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
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.Diagnostics;
 | 
						|
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<string> UpdateDrawerNo
 | 
						|
        {
 | 
						|
            get => new DelegateCommand<string>((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<SnackbarEvent>().Publish(alertMsg);
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            );
 | 
						|
        }
 | 
						|
        public DelegateCommand ReturnLoginDelegate
 | 
						|
        {
 | 
						|
            get => new DelegateCommand(() =>
 | 
						|
            {
 | 
						|
                _regionManager.RequestNavigate("MainRegion", "LoginWindow");
 | 
						|
            });
 | 
						|
        }
 | 
						|
        private DelegateCommand? _exitCommand;
 | 
						|
        public DelegateCommand ExitCommand => _exitCommand ??= new DelegateCommand(Exit);
 | 
						|
        void Exit()
 | 
						|
        {
 | 
						|
            //_chkFunction.HIKLoginOut();
 | 
						|
            _socketHelper.SocketDisConnect();
 | 
						|
            Process.GetCurrentProcess().Kill();
 | 
						|
            Environment.Exit(0);
 | 
						|
        }
 | 
						|
        //间隔1分钟查询数据库连接状态
 | 
						|
        private void CheckDBConnect()
 | 
						|
        {
 | 
						|
            new PromiseUtil<int>().taskAsyncLoop(60000, 0, async (options, next, stop) =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    var userList = SqlSugarHelper.Db.Queryable<UserList>()
 | 
						|
                                        .First(u => u.UserName == "admin");
 | 
						|
                    App.DbConnectionFail = false;
 | 
						|
                    DBConnectionStatus = true;
 | 
						|
                    stop();
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    next();
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |