Browse Source

1、支持新版扫查已结束的上传失败状态
2、截图诊断超时30秒处理优化

felix 1 year ago
parent
commit
27199ce96f

+ 1 - 1
FISSDK/FISIMPL/LiveVideoServiceForAndroid.cs

@@ -525,7 +525,7 @@ namespace FISIMPL
         /// <summary>
         /// Stop Record Video
         /// </summary>
-        public void StopRecordVideo()
+        public void StopRecordVideo(bool isTimeOut)
         {
             throw new NotImplementedException();
         }

+ 2 - 2
FISSDK/FISIMPL/LiveVideoServiceForWindows.cs

@@ -657,7 +657,7 @@ namespace FISIMPL
         /// <summary>
         /// Stop Record Video
         /// </summary>
-        public void StopRecordVideo()
+        public void StopRecordVideo(bool isTimeOut)
         {
             try
             {
@@ -672,7 +672,7 @@ namespace FISIMPL
                     {
                         Logger.WriteLineError($"StopRecordVideo error: live videoV2 feature is null");
                     }
-                    _liveVideoV2.StopRecordVideo();
+                    _liveVideoV2.StopRecordVideo(isTimeOut);
                 }
             }
             catch (Exception ex)

+ 1 - 1
FISSDK/FISSDK/LiveVideo/ILiveVideoService.cs

@@ -87,7 +87,7 @@ namespace FISLib.LiveVideo
         /// <summary>
         /// Stop Record Video
         /// </summary>
-        void StopRecordVideo();
+        void StopRecordVideo(bool isTimeOut);
 
         /// <summary>
         /// 修改是否实时截图的设置

+ 1 - 0
Vinno.FIS.Sonopost/Assets/wwwroot/lang/en-us.json

@@ -145,6 +145,7 @@
   "CheckFailed": "Check failed",
   "SaveFailed": "Save failed",
   "UploadFailed": "Upload failed",
+  "UploadFailBecauseExamIsFinished": "The exam has been finished,upload failed",
   "ConvertFailed": "Convert failed",
   "RefreshDNS": "Refresh DNS cache",
   "RefreshDNSSuccess": "Refresh DNS cahce success",

+ 1 - 0
Vinno.FIS.Sonopost/Assets/wwwroot/lang/zh-cn.json

@@ -145,6 +145,7 @@
   "CheckFailed": "检查失败",
   "SaveFailed": "保存失败",
   "UploadFailed": "上传失败",
+  "UploadFailBecauseExamIsFinished": "该检查已结束,上传失败",
   "ConvertFailed": "转换失败",
   "RefreshDNS": "刷新DNS缓存",
   "RefreshDNSSuccess": "刷新DNS缓存成功",

+ 8 - 4
Vinno.FIS.Sonopost/Assets/wwwroot/pages/dicom/faillist.html

@@ -15,9 +15,9 @@
         display: flex;
     }
 
-    #formDicomFailQuery .layui-form-item {
-        margin-bottom: 0;
-    }
+        #formDicomFailQuery .layui-form-item {
+            margin-bottom: 0;
+        }
 </style>
 <div id="pageDicomFail">
     <div class="page-title" data-content="PageTitle4DicomFailList"></div>
@@ -69,7 +69,8 @@
             ConvertFail: 1,
             CreateScanDataFail: 2,
             UploadFail: 3,
-            Unknown: 4
+            UploadFailBecauseExamIsFinished: 4,
+            Unknown: 5
         };
         let tableIns = null;
         const PageSize = 15;
@@ -128,6 +129,9 @@
                     else if (x.Status === FailReasonMap.UploadFail || x.Status === FailReasonMap.CreateScanDataFail) {
                         x.FailReason = $t("UploadFailed");
                     }
+                    else if (x.Status === FailReasonMap.UploadFailBecauseExamIsFinished) {
+                        x.FailReason = $t("UploadFailBecauseExamIsFinished");
+                    }
                     else if (x.Status === FailReasonMap.Unknown) {
                         x.FailReason = $t("Unknown");
                     }

+ 1 - 0
Vinno.FIS.Sonopost/Features/Dicom/DicomUploadContext.cs

@@ -178,6 +178,7 @@ namespace Vinno.FIS.Sonopost.Features.Dicom
         ConvertFail,
         CreateScanDataFail,
         UploadFail,
+        UploadFailBecauseExamIsFinished,
         Unknown,
         Success
     }

+ 2 - 5
Vinno.FIS.Sonopost/Features/Web/WebPreviewHandler.cs

@@ -105,12 +105,9 @@ namespace Vinno.FIS.Sonopost.Features.Web
             }
             // 跳过帧处理
             _curFrameSignIndex++;
-            if (_curFrameSignIndex != 1)
+            if (_curFrameSignIndex >= FRAME_IGNORE_COUNT)
             {
-                if (_curFrameSignIndex > FRAME_IGNORE_COUNT)
-                {
-                    _curFrameSignIndex = 0;
-                }
+                _curFrameSignIndex = 0;
                 return;
             }
             if (_busy) return;

+ 3 - 3
Vinno.FIS.Sonopost/Managers/LiveVideoManager.cs

@@ -108,7 +108,7 @@ namespace Vinno.FIS.Sonopost.Managers
                     }
                     else
                     {
-                        _fisLiveVideoService.StopRecordVideo();
+                        _fisLiveVideoService.StopRecordVideo(false);
                         _isRecording = false;
                     }
                 }
@@ -151,7 +151,7 @@ namespace Vinno.FIS.Sonopost.Managers
                     }
                     else
                     {
-                        _fisLiveVideoService.StopRecordVideo();
+                        _fisLiveVideoService.StopRecordVideo(false);
                         _isRecording = false;
                     }
                 }
@@ -176,7 +176,7 @@ namespace Vinno.FIS.Sonopost.Managers
                     _checkImageRecordEvent.WaitOne(30000);
                     if (_isRecording)
                     {
-                        _fisLiveVideoService.StopRecordVideo();
+                        _fisLiveVideoService.StopRecordVideo(true);
                         _isRecording = false;
                     }
                 }

+ 6 - 2
Vinno.FIS.Sonopost/Managers/RemedicalManager.cs

@@ -36,7 +36,11 @@ namespace Vinno.FIS.Sonopost.Managers
                 {
                     DicomUploadContextOperator.Instance.UpdateStatusByScanId(scanDataId, DicomUploadStatus.UploadFail);
                 }
-                if ((e.FISVidData.Status == FISUploadStatus.Uploaded && e.ChangeType == FISVidDataChangeType.Removed) || e.FISVidData.Status == FISUploadStatus.Deleted && e.ChangeType == FISVidDataChangeType.Update)
+                else if (e.FISVidData.Status == FISUploadStatus.FailBecauseExamIsFinished && e.ChangeType == FISVidDataChangeType.Update)
+                {
+                    DicomUploadContextOperator.Instance.UpdateStatusByScanId(scanDataId, DicomUploadStatus.UploadFailBecauseExamIsFinished);
+                }
+                else if ((e.FISVidData.Status == FISUploadStatus.Uploaded && e.ChangeType == FISVidDataChangeType.Removed) || e.FISVidData.Status == FISUploadStatus.Deleted && e.ChangeType == FISVidDataChangeType.Update)
                 {
                     var item = DicomUploadContextOperator.Instance.GetCacheByScanId(scanDataId);
                     if (item == null)
@@ -213,7 +217,7 @@ namespace Vinno.FIS.Sonopost.Managers
                 DicomUploadContextOperator.Instance.UpdateStatus(id, DicomUploadStatus.Create);
                 UploadWorkFlow(retryItem.VidPath, retryItem.PatientId);
             }
-            else if (retryItem.Status == DicomUploadStatus.UploadFail)
+            else if (retryItem.Status == DicomUploadStatus.UploadFail || retryItem.Status == DicomUploadStatus.UploadFailBecauseExamIsFinished)
             {
                 var count = retryItem.Count + 1;
                 DicomUploadContextOperator.Instance.UpdateRetryCount(retryItem, count);

+ 1 - 1
Vinno.FIS.Sonopost/WebApi/Controllers/DicomController.cs

@@ -138,7 +138,7 @@ namespace Vinno.FIS.Sonopost.WebApi.Controllers
             {
                 if (status == DicomUploadStatus.UploadFail)
                 {
-                    allList = allList.Where(x => x.Status == status || x.Status == DicomUploadStatus.CreateScanDataFail)?.ToList() ?? new List<DicomUploadContext>();
+                    allList = allList.Where(x => x.Status == status || x.Status == DicomUploadStatus.CreateScanDataFail || x.Status == DicomUploadStatus.UploadFailBecauseExamIsFinished)?.ToList() ?? new List<DicomUploadContext>();
                 }
                 else
                 {

+ 1 - 1
Vinno.vCloud.Common.FIS/LiveVideos/ILiveVideoV2.cs

@@ -65,7 +65,7 @@ namespace Vinno.vCloud.Common.FIS.LiveVideos
         /// <summary>
         /// Stop Record Video
         /// </summary>
-        void StopRecordVideo();
+        void StopRecordVideo(bool isTimeOut);
 
         /// <summary>
         /// 获取品牌列表

+ 3 - 3
Vinno.vCloud.Common.FIS/LiveVideos/LiveVideoV2.cs

@@ -406,7 +406,7 @@ namespace Vinno.vCloud.Common.FIS.LiveVideos
                 _previewManager.Dispose();
                 _realtimeCaptureManager.CaptureImageGenerated -= OnCaptureImageGenerated;
                 _realtimeCaptureManager.RecordVideoGenerated -= OnRecordVideoGenerated;
-                _realtimeCaptureManager.StopRecordVideo();
+                _realtimeCaptureManager.StopRecordVideo(false);
                 _disposed = true;
             }
         }
@@ -924,9 +924,9 @@ namespace Vinno.vCloud.Common.FIS.LiveVideos
             _realtimeCaptureManager.StartRecordVideo();
         }
 
-        public void StopRecordVideo()
+        public void StopRecordVideo(bool isTimeOut)
         {
-            _realtimeCaptureManager.StopRecordVideo();
+            _realtimeCaptureManager.StopRecordVideo(isTimeOut);
         }
     }
 }

+ 13 - 3
Vinno.vCloud.Common.FIS/LiveVideos/RealTimeCaptureManager.cs

@@ -16,7 +16,7 @@ namespace Vinno.vCloud.Common.FIS.LiveVideos
     internal class RealTimeCaptureManager
     {
         private readonly string _storagePath;
-
+        private bool _isTimeOut;
         private bool _isBusy;
 
         /// <summary>
@@ -131,6 +131,7 @@ namespace Vinno.vCloud.Common.FIS.LiveVideos
                     return;
                 }
                 _isBusy = true;
+                _isTimeOut = false;
                 Task.Run(() =>
                 {
                     var stopwatch = new Stopwatch();
@@ -193,7 +194,15 @@ namespace Vinno.vCloud.Common.FIS.LiveVideos
                             if (stopwatch.ElapsedMilliseconds > 0 && vinnoImageData.ImageCount > 0)
                             {
                                 var imageCount = index + 1;
-                                var frameRate = (int)Math.Ceiling((decimal)imageCount * 1000 / stopwatch.ElapsedMilliseconds);
+                                double frameRate;
+                                if (_isTimeOut)
+                                {
+                                    frameRate = (double)(decimal)imageCount * 1000 / 30000;
+                                }
+                                else
+                                {
+                                    frameRate = (double)(decimal)imageCount * 1000 / stopwatch.ElapsedMilliseconds;
+                                }
                                 var probe = new VinnoProbe("ThirdPart", VinnoProbeType.Linear, new VinnoApplication("ThirdPart", string.Empty, "ThirdPart", "ThirdPart", false), frameRate);
                                 vinnoImageData.AddProbe(probe);
                             }
@@ -225,8 +234,9 @@ namespace Vinno.vCloud.Common.FIS.LiveVideos
             }
         }
 
-        public void StopRecordVideo()
+        public void StopRecordVideo(bool isTimeOut)
         {
+            _isTimeOut = isTimeOut;
             LiveVideoStatusChecker.Instance.StopRecord();
         }
     }