Browse Source

支持新版远程维护的补丁推送,获取日志的取消功能

felix 1 year ago
parent
commit
92351ab2a3

+ 10 - 6
Vinno.FIS.Sonopost/Features/AfterSales/AfterSalesTask.cs

@@ -282,18 +282,20 @@ namespace Vinno.FIS.Sonopost.Features.AfterSales
         /// </summary>
         /// <param name="fromRemoteService">From Remote Service</param>
         /// <param name="fisProcessResult"></param>
-        public void Cancel(bool fromRemoteService, FISProcessResult fisProcessResult)
+        public void Cancel(bool fromRemoteService)
         {
             try
             {
                 Status = AfterSalesCommandStatus.Cancelling;
-                if (!fromRemoteService && fisProcessResult != null)
-                {
-                    SendProcessResultToServer(fisProcessResult);
-                }
+
                 CancellationTokenSource.Cancel();
                 CancelDownload();
                 CancelUpload();
+                OnCancel();
+                if (fromRemoteService)
+                {
+                    Logger.WriteLineInfo($"AfterSalesTask Cancelled FromRemoteService:{fromRemoteService}");
+                }
                 IsExcuting = false;
                 Status = AfterSalesCommandStatus.Cancelled;
             }
@@ -303,6 +305,8 @@ namespace Vinno.FIS.Sonopost.Features.AfterSales
             }
         }
 
+        protected abstract void OnCancel();
+
         public void Dispose()
         {
             _fisAfterSalesService.UploadProgressChanged -= OnUploadProgressChanged;
@@ -311,7 +315,7 @@ namespace Vinno.FIS.Sonopost.Features.AfterSales
             _fisAfterSalesService.UploadResultRaised -= OnUploadResultRaised;
             if (IsExcuting || _isUploading || _isDownloading)
             {
-                Cancel(false, null);
+                Cancel(false);
             }
         }
     }

+ 15 - 3
Vinno.FIS.Sonopost/Features/AfterSales/GetLogAfterSalesTask.cs

@@ -221,7 +221,6 @@ namespace Vinno.FIS.Sonopost.Features.AfterSales
                     var processInfo = new FISProcessInfo(_finishProcess, FISProgressStatus.Progressing, FISDetailType.GetLogSuccess);
                     UpdateProgressInfo(processInfo);
                     SendProcessResultToServer(new FISProcessResult(_targetId, FISTaskType.GetLog, FISTaskStatus.Finished, FISDetailType.GetLogSuccess, _finishProcess, FISProcessSource.FromTerminal, fileToken));
-                    IsExcuting = false;
                 }
                 else
                 {
@@ -232,8 +231,6 @@ namespace Vinno.FIS.Sonopost.Features.AfterSales
             catch (Exception ex)
             {
                 Logger.WriteLineError($"GetLogAfterSalesTask OnUploadResultRaised Error:{ex}");
-                CancelUpload();
-                IsExcuting = false;
             }
             finally
             {
@@ -241,5 +238,20 @@ namespace Vinno.FIS.Sonopost.Features.AfterSales
                 IsExcuting = false;
             }
         }
+
+        protected override void OnCancel()
+        {
+            try
+            {
+                var process = new FISProcessResult(_targetId, FISTaskType.GetLog, FISTaskStatus
+                .Failed, FISDetailType.GetLogCancel, 0, FISProcessSource.FromTerminal, string.Empty);
+                SendProcessResultToServer(process);
+                CancellationTokenSource?.Cancel();
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLineError($"GetLogTask OnCancel error: {ex}");
+            }
+        }
     }
 }

+ 15 - 2
Vinno.FIS.Sonopost/Features/AfterSales/PushPatchAfterSalesTask.cs

@@ -106,8 +106,6 @@ namespace Vinno.FIS.Sonopost.Features.AfterSales
             catch (Exception ex)
             {
                 Logger.WriteLineError($"PushPatchAfterSalesTask OnDownloadResultRaised Error:{ex}");
-                CancelDownload();
-                IsExcuting = false;
             }
             finally
             {
@@ -250,5 +248,20 @@ namespace Vinno.FIS.Sonopost.Features.AfterSales
         protected override void OnUploadResultRaised(object sender, string fileToken)
         {
         }
+
+        protected override void OnCancel()
+        {
+            try
+            {
+                var process = new FISProcessResult(_targetId, FISTaskType.PushPatch, FISTaskStatus.Failed, FISDetailType.PushPatchCancel,
+                0, FISProcessSource.FromTerminal, string.Empty);
+                SendProcessResultToServer(process);
+                CancellationTokenSource.Cancel();
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLineError($"PushPatchTask OnCancel error: {ex}");
+            }
+        }
     }
 }

+ 1 - 1
Vinno.FIS.Sonopost/Managers/AfterSalesManager.cs

@@ -77,7 +77,7 @@ namespace Vinno.FIS.Sonopost.Managers
         {
             if (e?.Status == FISProgressStatus.Canceled)
             {
-                _currentAfterSalesTask.Cancel(true, null);
+                _currentAfterSalesTask.Cancel(true);
             }
             Logger.WriteLineInfo($"AfterSalesManager OnProcessChanged Percent:{e?.Percent},Status:{e?.Status},DetailType:{e?.DetailType}");
         }