123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- using FISLib.AfterSales;
- using System;
- using Vinno.FIS.Sonopost.Features.AfterSales;
- using Vinno.FIS.Sonopost.Features.Oled;
- using Vinno.FIS.Sonopost.Helpers;
- using Vinno.FIS.Sonopost.Managers.Interfaces;
- using Vinno.IUS.Common.Log;
- namespace Vinno.FIS.Sonopost.Managers
- {
- internal class AfterSalesManager : SonopostManager, IAfterSalesManager
- {
- private readonly ILoginManager _loginManager;
- private readonly IAfterSalesService _fisAfterSalesService;
- private FISMasterInfo _currentRemoteUser;
- private AfterSalesTask _currentAfterSalesTask;
- public AfterSalesManager()
- {
- _loginManager = AppManager.Instance.GetManager<ILoginManager>();
- _fisAfterSalesService = AppManager.Instance.GetManager<IFISManager>().FISAfterSalesService;
- _fisAfterSalesService.MasterChanged += OnMasterChanged;
- _fisAfterSalesService.RemoteMaintenanceEvent += OnRemoteMaintenanceEvent;
- _fisAfterSalesService.ProcessChanged += OnProcessChanged;
- _fisAfterSalesService.RestartEventForSonopost += OnRestartEventForSonopost;
- }
- private void OnRemoteMaintenanceEvent(object sender, FISRemoteMaintenanceInfo fisRemoteMaintenanceInfo)
- {
- switch (fisRemoteMaintenanceInfo.RemoteMaintenanceType)
- {
- case FISRemoteMaintenanceType.GetLog:
- _currentAfterSalesTask?.Dispose();
- _currentAfterSalesTask = new GetLogAfterSalesTask(_currentRemoteUser);
- _currentAfterSalesTask.SetParameters(fisRemoteMaintenanceInfo.Parameters);
- _currentAfterSalesTask.Init();
- _currentAfterSalesTask.Execute();
- break;
- case FISRemoteMaintenanceType.PushPatch:
- _currentAfterSalesTask?.Dispose();
- _currentAfterSalesTask = new PushPatchAfterSalesTask(_currentRemoteUser);
- _currentAfterSalesTask.SetParameters(fisRemoteMaintenanceInfo.Parameters);
- _currentAfterSalesTask.Init();
- _currentAfterSalesTask.Execute();
- break;
- }
- }
- private void OnProcessChanged(object sender, FISProcessInfo e)
- {
- if (e?.Status == FISProgressStatus.Canceled)
- {
- _currentAfterSalesTask.Cancel(true);
- }
- Logger.WriteLineInfo($"AfterSalesManager OnProcessChanged Percent:{e?.Percent},Status:{e?.Status},DetailType:{e?.DetailType}");
- }
- private void OnRestartEventForSonopost(object sender, EventArgs e)
- {
- try
- {
- _loginManager.Logoff();
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"AfterSalesManager OnRestartEventForSonopost Error:{ex}");
- }
- finally
- {
- AppManager.Instance.GetManager<IOledManager>().ShowStatus(OledMessage.Reboot);
- SystemHelper.RebootSystem(); //重新启动程序
- }
- }
- private void OnMasterChanged(object sender, FISMasterInfo e)
- {
- try
- {
- if (e == null)
- {
- _currentAfterSalesTask?.Dispose();
- _currentRemoteUser = null;
- }
- else
- {
- if (_currentRemoteUser == null)
- {
- _currentRemoteUser = new FISMasterInfo(e.UserId, e.UserName);
- }
- else
- {
- _currentRemoteUser.UserId = e.UserId;
- _currentRemoteUser.UserName = e.UserName;
- }
- }
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"AfterSalesManager OnMasterChanged Error:{ex}");
- }
- }
- public override void DoDispose()
- {
- try
- {
- _fisAfterSalesService.MasterChanged -= OnMasterChanged;
- _fisAfterSalesService.RemoteMaintenanceEvent -= OnRemoteMaintenanceEvent;
- _fisAfterSalesService.ProcessChanged -= OnProcessChanged;
- _fisAfterSalesService.RestartEventForSonopost -= OnRestartEventForSonopost;
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"DeviceManager DoDispose Error:{ex}");
- }
- base.DoDispose();
- }
- }
- }
|