Эх сурвалжийг харах

Merge branch 'master' of http://git.ius.plus/Project-Wing/fis

jimmy.jiang@vinno.com 8 сар өмнө
parent
commit
ca63252b24

+ 27 - 0
fis/Helpers/HttpHelper.cs

@@ -81,6 +81,10 @@ namespace fis.Helpers
             {
                 var response = await httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, _cancellationTokenSource.Token);
                 var n = response.Content.Headers.ContentLength;
+                if (n == null) 
+                {
+                   n = await GetFileSizeAsync(url);
+                }
                 var stream = await response.Content.ReadAsStreamAsync();
                 using (var fileStream = file.Create())
                 {
@@ -113,6 +117,29 @@ namespace fis.Helpers
             }
         }
 
+        static async Task<long> GetFileSizeAsync(string url)
+        {
+            using (HttpClient client = new HttpClient())
+            {
+                // 使用 HEAD 方法请求文件头部信息
+                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Head, url);
+
+                HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
+
+                response.EnsureSuccessStatusCode();
+
+                // 从响应头中获取文件大小
+                if (response.Content.Headers.ContentLength.HasValue)
+                {
+                    return response.Content.Headers.ContentLength.Value;
+                }
+                else
+                {
+                    throw new Exception("Could not determine the file size.");
+                }
+            }
+        }
+
         /// <summary>
         /// windows文件名特殊字符移除
         /// </summary>

+ 37 - 18
fis/Managers/ExportDataManager.cs

@@ -63,7 +63,14 @@ namespace fis.Win.Dev.Managers
 
         private void UpdateProgress(List<string> args)
         {
-            BrowserManager.MainBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            if (AppManager.IsVStation)
+            {
+                BrowserManager.SlaveBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            }
+            else
+            {
+                BrowserManager.MainBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            }
         }
 
         public async void ExportDatas(List<ExportDataInfo> exportDataInfos, string name, string path)
@@ -220,29 +227,41 @@ namespace fis.Win.Dev.Managers
                             string fileExtentName = ".jpg";
                             bool isVid = false;
                             var fileDataType = sampleRemedicalInfoDTO.FileDataType;
-                            switch (fileDataType)
+                            if (sampleRemedicalInfoDTO.IsAnalysisResult)
                             {
-                                case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.VinnoVidSingle:
-                                case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.ThirdVidMovie:
-                                case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.ThirdVidSingle:
-                                case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.VinnoVidMovie:
-                                    isVid = true;
-                                    fileExtentName = ".vid";
-                                    break;
-                                case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.Image:
-                                case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.AnalysisImage:
-                                case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.MeasurementImage:
-                                    fileExtentName = ".jpg";
-                                    break;
-                                case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.AnalysisVideo:
-                                    fileExtentName = ".mp4";
-                                    break;
+                                fileExtentName = ".png";
+                            }
+                            else
+                            {
+                                switch (fileDataType)
+                                {
+                                    case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.VinnoVidSingle:
+                                    case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.ThirdVidMovie:
+                                    case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.ThirdVidSingle:
+                                    case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.VinnoVidMovie:
+                                        isVid = true;
+                                        fileExtentName = ".vid";
+                                        break;
+                                    case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.Image:
+                                    case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.AnalysisImage:
+                                    case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.MeasurementImage:
+                                        fileExtentName = ".jpg";
+                                        break;
+                                    case WingInterfaceLibrary.Enum.SampleRemedicalFileDataTypeEnum.AnalysisVideo:
+                                        fileExtentName = ".mp4";
+                                        break;
+                                }
                             }
                             string fileNameNoExtName = examDate + "_" + index.ToString();
                             string fileName = fileNameNoExtName + fileExtentName;
                             string filePath = Path.Combine(patientScanTypePath, fileName);
                             currentDataId = sampleRemedicalInfoDTO.BusinessCode;
-                            await HttpHelper.DownloadFile(sampleRemedicalInfoDTO.ImageUrl, new FileInfo(filePath));
+                            var imageUrl = sampleRemedicalInfoDTO.ImageUrl;
+                            if (sampleRemedicalInfoDTO.IsAnalysisResult) 
+                            {
+                                imageUrl = sampleRemedicalInfoDTO.CoverImgUrl;
+                            }
+                            await HttpHelper.DownloadFile(imageUrl, new FileInfo(filePath));
                             string prePath = patientName + "/" + examDate + "/";
                             if (isVid)
                             {

+ 8 - 1
fis/Managers/FileExporterManager.cs

@@ -1070,7 +1070,14 @@ namespace fis.Managers
 
         private void UpdateProgress(List<string> args)
         {
-            BrowserManager.MainBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            if (AppManager.IsVStation) 
+            {
+                BrowserManager.SlaveBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            }
+            else
+            {
+                BrowserManager.MainBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            }
         }
         #endregion
 

+ 8 - 1
fis/Managers/UpgradManager.cs

@@ -162,7 +162,14 @@ namespace  fis.Managers
 
         private void UpdateProgress(List<string> args)
         {
-            BrowserManager.MainBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            if (AppManager.IsVStation) 
+            {
+                BrowserManager.SlaveBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            }
+            else
+            {
+                BrowserManager.MainBrowser.ExecuteJS(TargetMethodName.UpdateExportProgess, args);
+            }
         }
     }
 

+ 15 - 2
fis/SlaveApp.axaml.cs

@@ -55,30 +55,43 @@ namespace fis
             Logger.WriteShellLog("App OnFrameworkInitializationCompleted start");
             if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
             {
+                Logger.WriteShellLog("App OnFrameworkInitializationCompleted desktop");
                 var manager = AppManager.Get<ISecondaryWindowManager>();
+                Logger.WriteShellLog("App OnFrameworkInitializationCompleted manager");
                 AppManager.IsSlaveWindow = true;
+                Logger.WriteShellLog("App OnFrameworkInitializationCompleted 0");
                 Task.Run(() =>
                 {
+                    Logger.WriteShellLog("App OnFrameworkInitializationCompleted 1");
                     ///建立管道通信的Server,用于处理主窗口发送的消息
                     PipeServerManager.Initialize(AppManager.SlaveFisWindowPipe);
-                 
+                    Logger.WriteShellLog("App OnFrameworkInitializationCompleted 2");
                 });
                 if (!AppManager.IsVStation)
                 {
+                    Logger.WriteShellLog("App OnFrameworkInitializationCompleted 3");
                     Task.Run(() =>
                     {
+                        Logger.WriteShellLog("App OnFrameworkInitializationCompleted 4");
                         ///建立管道通信的Client,用于副窗口主动发消息到主窗口
                         PipeClientManager.Initialize(AppManager.MainFisWindowPipe);
+                        Logger.WriteShellLog("App OnFrameworkInitializationCompleted 5");
                     });
                 }
-
+                Logger.WriteShellLog("App OnFrameworkInitializationCompleted 6");
                 await manager.ShowWindowByTypeAsync(WindowType.Measure, string.Empty, false);
+                Logger.WriteShellLog("App OnFrameworkInitializationCompleted 7");
                 _mainWindow = manager.SlaveWindow!;
+                Logger.WriteShellLog("App OnFrameworkInitializationCompleted 8");
                 desktop.MainWindow = _mainWindow;
+                Logger.WriteShellLog("App OnFrameworkInitializationCompleted 9");
                 ShellConfig.Instance.WindowsNum = _mainWindow.Screens.ScreenCount;
+                Logger.WriteShellLog("App OnFrameworkInitializationCompleted 10");
             }
             base.OnFrameworkInitializationCompleted();
+            Logger.WriteShellLog("App OnFrameworkInitializationCompleted 11");
             _notificationWindow = new NotificationWindow();
+            Logger.WriteShellLog("App OnFrameworkInitializationCompleted 12");
             RtmpPublisherManager.RegisterClientKey();
             Logger.WriteShellLog("App OnFrameworkInitializationCompleted end");
         }

+ 8 - 1
fis/Utilities/FFMPEG/VideoFFmpegHelper.cs

@@ -37,7 +37,14 @@ namespace fis.Utilities.FFMPEG
             ToolManager.Instance.FFmpegService.SetFFmpegPath(Path.Combine(distFolderPath, "ffmpeg.exe"));
             _stream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
             _vid = new VinnoImageData(_stream);
-            FrameRate = (int)_vid.Probe.FrameRate;
+            if (_vid.Probe != null)
+            {
+                FrameRate = (int)_vid.Probe.FrameRate;
+            }
+            else 
+            {
+                FrameRate = 0;
+            }
             ImageCount = _vid.ImageCount;
         }