Uat_Study
hang 2022-08-05 13:05:51 +08:00
parent d0856021db
commit 412ca21ba2
6 changed files with 61 additions and 13 deletions

View File

@ -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
/// <summary> 流式上传 Dicom上传 </summary>
[Route("base")]
public virtual async Task<int> DicomFileUploadAsync(Func<string, Stream, Task> filePathFunc)
public virtual async Task<int> DicomFileUploadAsync(Func<string, Stream, int, Task> 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);
}
}
@ -227,7 +228,7 @@ namespace IRaCIS.Core.API.Controllers
[FromServices] ILogger<UploadDownLoadController> _logger,
[FromServices] IEasyCachingProvider _provider,
[FromServices] IStudyService _studyService,
[FromServices] IHubContext<UploadHub, IUploadClient> _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);

View File

@ -220,10 +220,10 @@
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.FileUploadAsync(System.Func{System.String,System.Threading.Tasks.Task{System.String}})">
<summary> 流式上传 通用封装 不返回任何数据,后续还有事情处理 </summary>
</member>
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.DicomFileUploadAsync(System.Func{System.String,System.IO.Stream,System.Threading.Tasks.Task})">
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.DicomFileUploadAsync(System.Func{System.String,System.IO.Stream,System.Int32,System.Threading.Tasks.Task})">
<summary> 流式上传 Dicom上传 </summary>
</member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.ArchiveStudyNew(IRaCIS.Core.Application.Contracts.ArchiveStudyCommand,Microsoft.Extensions.Logging.ILogger{IRaCIS.Core.API.Controllers.UploadDownLoadController},EasyCaching.Core.IEasyCachingProvider,IRaCIS.Core.Application.Contracts.IStudyService,IRaCIS.Core.Application.Contracts.Dicom.IDicomArchiveService,IRaCIS.Core.Infra.EFCore.IRepository)">
<member name="M:IRaCIS.Core.API.Controllers.StudyController.ArchiveStudyNew(IRaCIS.Core.Application.Contracts.ArchiveStudyCommand,Microsoft.Extensions.Logging.ILogger{IRaCIS.Core.API.Controllers.UploadDownLoadController},EasyCaching.Core.IEasyCachingProvider,IRaCIS.Core.Application.Contracts.IStudyService,Microsoft.AspNetCore.SignalR.IHubContext{IRaCIS.Core.API.UploadHub,IRaCIS.Core.API.IUploadClient},IRaCIS.Core.Application.Contracts.Dicom.IDicomArchiveService,IRaCIS.Core.Infra.EFCore.IRepository)">
<summary>Dicom 归档</summary>
</member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadVisitClinicalData(System.Guid)">

View File

@ -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<IUploadClient>
{
//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);
}
}
}

View File

@ -146,6 +146,8 @@ namespace IRaCIS.Core.API
//DicomÓ°ÏñäÖȾͼƬ ¿çƽ̨
services.AddDicomSetup();
// 实时应用
services.AddSignalR();
//services.AddSingleton<IImportResultFilter, ImportResultFilteTest>();
@ -212,6 +214,7 @@ namespace IRaCIS.Core.API
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<UploadHub>("/UploadHub");
endpoints.MapControllers();
});

View File

@ -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");
}

View File

@ -4757,6 +4757,13 @@
<param name="trialQCProcess">项目配置的针对访视检查是那种审核0 不审1 单审2双审</param>
<param name="currentQCType">当前 QC进入的是那种审核 1 单审2复审</param>
</member>
<member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetQCQuestionAnswer(IRaCIS.Core.Application.Contracts.GetQCQuestionAnswerInDto)">
<summary>
获取质控问题答案
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetQCQuestionAnswerList(System.Guid,System.Guid,IRaCIS.Core.Domain.Share.TrialQCProcess,IRaCIS.Core.Domain.Share.CurrentQC)">
<summary>
获取某次访视 QC 问题核对答案 列表 初始化进去的时候是模板项QC填写了就是对应的内容