From 412ca21ba20ea8f3ce5be2c93a979a53d190a630 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 5 Aug 2022 13:05:51 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/UploadDownLoadController.cs | 21 ++++++-----
IRaCIS.Core.API/IRaCIS.Core.API.xml | 4 +-
IRaCIS.Core.API/SignalRHub/UploadHub.cs | 37 +++++++++++++++++++
IRaCIS.Core.API/Startup.cs | 3 ++
.../RequestResponseLoggingMiddleware.cs | 2 +-
.../IRaCIS.Core.Application.xml | 7 ++++
6 files changed, 61 insertions(+), 13 deletions(-)
create mode 100644 IRaCIS.Core.API/SignalRHub/UploadHub.cs
diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
index 8a4588392..fbffda7fa 100644
--- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
+++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
@@ -24,6 +24,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.SignalR;
using Microsoft.AspNetCore.StaticFiles;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.EntityFrameworkCore;
@@ -130,7 +131,7 @@ namespace IRaCIS.Core.API.Controllers
/// 流式上传 Dicom上传
[Route("base")]
- public virtual async Task DicomFileUploadAsync(Func filePathFunc)
+ public virtual async Task DicomFileUploadAsync(Func filePathFunc)
{
var fileCount = 0;
@@ -163,7 +164,7 @@ namespace IRaCIS.Core.API.Controllers
{
++fileCount;
- await filePathFunc(entry.Key, entry.OpenEntryStream());
+ await filePathFunc(entry.Key, entry.OpenEntryStream(), fileCount);
}
}
}
@@ -174,7 +175,7 @@ namespace IRaCIS.Core.API.Controllers
{
++fileCount;
- await filePathFunc(fileName, section.Body);
+ await filePathFunc(fileName, section.Body, fileCount);
}
}
@@ -224,12 +225,12 @@ namespace IRaCIS.Core.API.Controllers
[DisableRequestSizeLimit]
[TypeFilter(typeof(TrialResourceFilter))]
public async Task ArchiveStudyNew([FromForm] ArchiveStudyCommand archiveStudyCommand,
- [FromServices] ILogger _logger,
+ [FromServices] ILogger _logger,
[FromServices] IEasyCachingProvider _provider,
- [FromServices] IStudyService _studyService,
-
- [FromServices] IDicomArchiveService _dicomArchiveService,
- [FromServices] IRepository _repository
+ [FromServices] IStudyService _studyService,
+ [FromServices] IHubContext _uploadHub,
+ [FromServices] IDicomArchiveService _dicomArchiveService,
+ [FromServices] IRepository _repository
)
{
@@ -261,7 +262,7 @@ namespace IRaCIS.Core.API.Controllers
var savedInfo = _studyService.GetSaveToDicomInfo(archiveStudyCommand.SubjectVisitId);
- archiveResult.ReceivedFileCount = await DicomFileUploadAsync(async (fileName, fileStream) =>
+ archiveResult.ReceivedFileCount = await DicomFileUploadAsync(async (fileName, fileStream, receivedCount) =>
{
try
@@ -280,6 +281,7 @@ namespace IRaCIS.Core.API.Controllers
}
}
+ await _uploadHub.Clients.All.ReceivProgressAsync(archiveStudyCommand.StudyInstanceUid, receivedCount);
}
catch (Exception e)
@@ -337,7 +339,6 @@ namespace IRaCIS.Core.API.Controllers
else
{
studyMonitor.IsSuccess = false;
- studyMonitor.UploadFinishedTime = DateTime.Now;
studyMonitor.Note= JsonConvert.SerializeObject(archiveResult);
_provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid);
diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml
index 1dbe638d2..960630722 100644
--- a/IRaCIS.Core.API/IRaCIS.Core.API.xml
+++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml
@@ -220,10 +220,10 @@
流式上传 通用封装 不返回任何数据,后续还有事情处理
-
+
流式上传 Dicom上传
-
+
Dicom 归档
diff --git a/IRaCIS.Core.API/SignalRHub/UploadHub.cs b/IRaCIS.Core.API/SignalRHub/UploadHub.cs
new file mode 100644
index 000000000..98eb1ea23
--- /dev/null
+++ b/IRaCIS.Core.API/SignalRHub/UploadHub.cs
@@ -0,0 +1,37 @@
+using EasyCaching.Core;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.SignalR;
+using System.Threading.Tasks;
+
+namespace IRaCIS.Core.API
+{
+ public interface IUploadClient
+ {
+ Task ReceivProgressAsync( string studyInstanceUid , int haveReceivedCount);
+ }
+
+
+ //[Authorize]
+ public class UploadHub : Hub
+ {
+ //private IEasyCachingProvider _provider { get; }
+
+ //public UploadHub(IEasyCachingProvider provider)
+ //{
+ // _provider = provider;
+ //}
+
+ public override Task OnConnectedAsync()
+ {
+ return base.OnConnectedAsync();
+ }
+
+ public async Task SendProgress(string studyInstanceUid, int haveReceivedCount)
+ {
+
+
+ await Clients.All.ReceivProgressAsync(studyInstanceUid, haveReceivedCount);
+ }
+
+ }
+}
diff --git a/IRaCIS.Core.API/Startup.cs b/IRaCIS.Core.API/Startup.cs
index e52799119..24663f7e8 100644
--- a/IRaCIS.Core.API/Startup.cs
+++ b/IRaCIS.Core.API/Startup.cs
@@ -146,6 +146,8 @@ namespace IRaCIS.Core.API
//DicomӰȾͼƬ ƽ̨
services.AddDicomSetup();
+ // ʵʱӦ
+ services.AddSignalR();
//services.AddSingleton();
@@ -212,6 +214,7 @@ namespace IRaCIS.Core.API
app.UseEndpoints(endpoints =>
{
+ endpoints.MapHub("/UploadHub");
endpoints.MapControllers();
});
diff --git a/IRaCIS.Core.API/_PipelineExtensions/Serilog/RequestResponseLoggingMiddleware.cs b/IRaCIS.Core.API/_PipelineExtensions/Serilog/RequestResponseLoggingMiddleware.cs
index 7b2bd5c96..112314b65 100644
--- a/IRaCIS.Core.API/_PipelineExtensions/Serilog/RequestResponseLoggingMiddleware.cs
+++ b/IRaCIS.Core.API/_PipelineExtensions/Serilog/RequestResponseLoggingMiddleware.cs
@@ -24,7 +24,7 @@ namespace IRaCIS.Core.API._PipelineExtensions.Serilog
if (ContentType != null)
{
- isUploadRelation = context.Request.ContentType.Contains("multipart/form-data") || context.Request.ContentType.Contains("boundary");
+ isUploadRelation = context.Request.ContentType.Contains("multipart/form-data") || context.Request.ContentType.Contains("boundary") || context.Request.ContentType.Contains("octet-stream");
}
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 655e88298..38f4fe058 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -4757,6 +4757,13 @@
项目配置的针对访视检查是那种审核,0 不审,1 单审,2双审
当前 QC进入的是那种审核 1 单审,2复审
+
+
+ 获取质控问题答案
+
+
+
+
获取某次访视 QC 问题核对答案 列表 初始化进去的时候是模板项,QC填写了就是对应的内容