修改上传

This commit is contained in:
2023-03-02 11:47:43 +08:00
parent cc3513846f
commit 38b9775ad2
11 changed files with 162 additions and 45 deletions
@@ -1,4 +1,5 @@
using AutoMapper;
using DocumentFormat.OpenXml.Drawing;
using EasyCaching.Core;
using ExcelDataReader;
using IRaCIS.Application.Contracts;
@@ -12,6 +13,7 @@ using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.MediatR.CommandAndQueries;
using IRaCIS.Core.Application.MediatR.Handlers;
using IRaCIS.Core.Application.Service;
using IRaCIS.Core.Application.Service.ImageAndDoc;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
@@ -223,6 +225,38 @@ namespace IRaCIS.Core.API.Controllers
_repository = repository;
}
public async Task<IResponseOutput> PreArchiveStudy(PreArchiveStudyCommand preArchiveStudyCommand,
[FromServices] IStudyService _studyService,
[FromServices] IRepository<StudyMonitor> _studyMonitorRepository)
{
if (_provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_AddFixedFiled).Value == null)
{
await _mediator.Send(new AnonymizeCacheRequest());
}
var savedInfo = _studyService.GetSaveToDicomInfo(preArchiveStudyCommand.SubjectVisitId);
var studyMonitor = new StudyMonitor()
{
TrialId = savedInfo.TrialId,
SiteId = savedInfo.SiteId,
SubjectId = savedInfo.SubjectId,
SubjectVisitId = savedInfo.SubjectVisitId,
IsSuccess = false,
UploadStartTime = DateTime.Now,
IsDicom = true,
IP = _userInfo.IP
};
var addEntity = await _studyMonitorRepository.AddAsync(studyMonitor, true);
return ResponseOutput.Ok(addEntity.Id);
}
/// <summary>Dicom 归档</summary>
[HttpPost, Route("Study/ArchiveStudy")]
@@ -235,17 +269,15 @@ namespace IRaCIS.Core.API.Controllers
[FromServices] IStudyService _studyService,
[FromServices] IHubContext<UploadHub, IUploadClient> _uploadHub,
[FromServices] IDicomArchiveService _dicomArchiveService,
[FromServices] IRepository _repository
[FromServices] IRepository _repository,
[FromServices] IRepository<StudyMonitor> _studyMonitorRepository
)
{
if (_provider.Get<List<SystemAnonymization>>(StaticData.Anonymize.Anonymize_AddFixedFiled).Value == null)
{
await _mediator.Send(new AnonymizeCacheRequest());
}
//_logger.LogError("请求到达接口");
if (!HttpContext.Request.HasFormContentType ||
!MediaTypeHeaderValue.TryParse(HttpContext.Request.ContentType, out var mediaTypeHeader) ||
@@ -270,6 +302,13 @@ namespace IRaCIS.Core.API.Controllers
_provider.Set($"StudyUid_{trialId}_{archiveStudyCommand.StudyInstanceUid}", _userInfo.Id, TimeSpan.FromMinutes(30));
}
//到了接口,代表上传结束了
var studyMonitor = await _studyMonitorRepository.FirstOrDefaultAsync(t => t.Id == archiveStudyCommand.StudyMonitorId);
studyMonitor.UploadFinishedTime = DateTime.Now;
var (archiveResult, archivedStudyIds) = (new DicomArchiveResult(), new List<Guid>());
@@ -332,23 +371,12 @@ namespace IRaCIS.Core.API.Controllers
throw new BusinessValidationFailedException("请求异常,请重试!");
}
studyMonitor.FileSize = (decimal)HttpContext.Request.ContentLength;
studyMonitor.FileCount = archiveResult.ReceivedFileCount;
studyMonitor.FailedFileCount = archiveResult.ErrorFiles.Count;
studyMonitor.IsDicomReUpload = archiveStudyCommand.AbandonStudyId != null;
studyMonitor.Note = JsonConvert.SerializeObject(archiveResult);
var studyMonitor = new StudyMonitor()
{
TrialId = savedInfo.TrialId,
SiteId = savedInfo.SiteId,
SubjectId = savedInfo.SubjectId,
SubjectVisitId = savedInfo.SubjectVisitId,
UploadStartTime = startTime,
FileSize = (decimal)HttpContext.Request.ContentLength,
FileCount = archiveResult.ReceivedFileCount,
IsDicom = true,
IsDicomReUpload = archiveStudyCommand.AbandonStudyId != null,
IP = _userInfo.IP
};
try
{
@@ -365,21 +393,12 @@ namespace IRaCIS.Core.API.Controllers
studyMonitor.IsSuccess = true;
}
else
{
studyMonitor.IsSuccess = false;
studyMonitor.Note = JsonConvert.SerializeObject(archiveResult);
}
}
catch (Exception e)
{
studyMonitor.IsSuccess = false;
studyMonitor.Note = JsonConvert.SerializeObject(new { Message = e.Message, Result = archiveResult });
_logger.LogError(e.Message + e.StackTrace);
}
@@ -389,9 +408,7 @@ namespace IRaCIS.Core.API.Controllers
studyMonitor.StudyId = archiveResult.ArchivedDicomStudies.FirstOrDefault()?.Id ?? Guid.Empty;
studyMonitor.StudyCode = archiveResult.ArchivedDicomStudies.FirstOrDefault()?.StudyCode;
studyMonitor.UploadFinishedTime = DateTime.Now;
await _repository.AddAsync(studyMonitor, true);
studyMonitor.ArchiveFinishedTime = DateTime.Now;
}
@@ -642,6 +659,7 @@ namespace IRaCIS.Core.API.Controllers
return serverFilePath;
});
var uploadFinishedTime = DateTime.Now;
//// 上传非Dicom 后 将状态改为待提交 分为普通上传 和QC后重传 普通上传时才改为待提交
@@ -660,7 +678,8 @@ namespace IRaCIS.Core.API.Controllers
StudyId = noneDicomStudyId,
StudyCode = noneDicomStudy.StudyCode,
UploadStartTime = startTime,
UploadFinishedTime = DateTime.Now,
UploadFinishedTime = uploadFinishedTime,
ArchiveFinishedTime=DateTime.Now,
IP = _userInfo.IP,
TrialId = sv.TrialId,
SiteId = sv.SiteId,