修改上传和归档

Uat_Study
hang 2023-03-02 12:34:02 +08:00
parent 271fa2bccc
commit 7cbede4507
10 changed files with 66 additions and 43 deletions

View File

@ -45,6 +45,7 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Path = System.IO.Path;
namespace IRaCIS.Core.API.Controllers namespace IRaCIS.Core.API.Controllers
{ {
@ -225,6 +226,7 @@ namespace IRaCIS.Core.API.Controllers
_repository = repository; _repository = repository;
} }
[HttpPost, Route("Study/PreArchiveStudy")]
public async Task<IResponseOutput> PreArchiveStudy(PreArchiveStudyCommand preArchiveStudyCommand, public async Task<IResponseOutput> PreArchiveStudy(PreArchiveStudyCommand preArchiveStudyCommand,
[FromServices] IStudyService _studyService, [FromServices] IStudyService _studyService,
[FromServices] IRepository<StudyMonitor> _studyMonitorRepository) [FromServices] IRepository<StudyMonitor> _studyMonitorRepository)

View File

@ -230,7 +230,7 @@
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.DicomFileUploadAsync(System.Func{System.String,System.IO.Stream,System.Int32,System.Threading.Tasks.Task},System.String)"> <member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.DicomFileUploadAsync(System.Func{System.String,System.IO.Stream,System.Int32,System.Threading.Tasks.Task},System.String)">
<summary> 流式上传 Dicom上传 </summary> <summary> 流式上传 Dicom上传 </summary>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.ArchiveStudyNew(System.Guid,System.Guid,System.String,System.Nullable{System.Guid},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)"> <member name="M:IRaCIS.Core.API.Controllers.StudyController.ArchiveStudyNew(System.Guid,System.Guid,System.String,System.Nullable{System.Guid},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{IRaCIS.Core.Domain.Models.StudyMonitor})">
<summary>Dicom 归档</summary> <summary>Dicom 归档</summary>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadVisitClinicalData(System.Guid)"> <member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadVisitClinicalData(System.Guid)">
@ -280,13 +280,15 @@
<param name="taskMedicalReviewId"></param> <param name="taskMedicalReviewId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadNoneDicomFile(Microsoft.AspNetCore.Http.IFormCollection,System.Guid,System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy})"> <member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadNoneDicomFile(Microsoft.AspNetCore.Http.IFormCollection,System.Guid,System.Guid,System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.StudyMonitor})">
<summary> <summary>
上传非Dicom 文件 支持压缩包 多文件上传 上传非Dicom 文件 支持压缩包 多文件上传
</summary> </summary>
<param name="formCollection"></param> <param name="formCollection"></param>
<param name="subjectVisitId"></param> <param name="subjectVisitId"></param>
<param name="noneDicomStudyId"></param> <param name="noneDicomStudyId"></param>
<param name="studyMonitorId"></param>
<param name="_noneDicomStudyRepository"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadVisitCheckExcel(System.Guid)"> <member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadVisitCheckExcel(System.Guid)">

View File

@ -385,7 +385,6 @@ namespace IRaCIS.Core.Application.Service.Common
UploadFinishedTime = t.UploadFinishedTime, UploadFinishedTime = t.UploadFinishedTime,
TotalMillisecondsInterval = t.TotalMillisecondsInterval,
UploadTime = t.CreateTime, UploadTime = t.CreateTime,

View File

@ -59,7 +59,26 @@ namespace IRaCIS.Core.Application.Contracts
public string ArchiveFinishedTimeStr => ArchiveFinishedTime?.ToString("yyyy-MM-dd HH:mm:ss.fff"); public string ArchiveFinishedTimeStr => ArchiveFinishedTime?.ToString("yyyy-MM-dd HH:mm:ss.fff");
public double TotalMillisecondsInterval { get; set; } public string UploadIntervalStr
{
get
{
var uploadTimeSpan = UploadFinishedTime - UploadStartTime;
return $" {uploadTimeSpan?.Hours}:{uploadTimeSpan?.Minutes}:{uploadTimeSpan?.Seconds}.{uploadTimeSpan?.Milliseconds}";
}
}
public string ArchiveIntervalStr
{
get
{
var uploadTimeSpan = ArchiveFinishedTime - UploadFinishedTime;
return $" {uploadTimeSpan?.Hours}:{uploadTimeSpan?.Minutes}:{uploadTimeSpan?.Seconds}.{uploadTimeSpan?.Milliseconds}";
}
}
public string TimeInterval public string TimeInterval
@ -67,9 +86,11 @@ namespace IRaCIS.Core.Application.Contracts
get get
{ {
var uploadTimeSpan = UploadFinishedTime - UploadStartTime; var uploadTimeSpan = ArchiveFinishedTime - UploadStartTime;
return $" {uploadTimeSpan.Hours}:{uploadTimeSpan.Minutes}:{uploadTimeSpan.Seconds}.{uploadTimeSpan.Milliseconds}"; return $" {uploadTimeSpan?.Hours}:{uploadTimeSpan?.Minutes}:{uploadTimeSpan?.Seconds}.{uploadTimeSpan?.Milliseconds}";
#region 废弃
//if (uploadTimeSpan.Seconds == 0 && uploadTimeSpan.Minutes==0 && uploadTimeSpan.Hours == 0) //if (uploadTimeSpan.Seconds == 0 && uploadTimeSpan.Minutes==0 && uploadTimeSpan.Hours == 0)
//{ //{
// return $"{uploadTimeSpan.Milliseconds}毫秒"; // return $"{uploadTimeSpan.Milliseconds}毫秒";
@ -86,6 +107,8 @@ namespace IRaCIS.Core.Application.Contracts
//{ //{
// return $" {uploadTimeSpan.Hours} 小时 {uploadTimeSpan.Minutes} 分钟 {uploadTimeSpan.Seconds} 秒 {uploadTimeSpan.Milliseconds}毫秒"; // return $" {uploadTimeSpan.Hours} 小时 {uploadTimeSpan.Minutes} 分钟 {uploadTimeSpan.Seconds} 秒 {uploadTimeSpan.Milliseconds}毫秒";
//} //}
#endregion
} }
} }

View File

@ -192,7 +192,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TotalMillisecondsInterval = t.TotalMillisecondsInterval,
IsDicomReUpload = t.IsDicomReUpload, IsDicomReUpload = t.IsDicomReUpload,
StudyId = t.Id, StudyId = t.Id,

View File

@ -473,10 +473,9 @@ namespace IRaCIS.Core.Application.Contracts
public string IsDicomStr => IsDicom ? "DICOM" : "Non-DICOM"; public string IsDicomStr => IsDicom ? "DICOM" : "Non-DICOM";
public string UploadStartTimeStr => UploadStartTime.ToString("yyyy-MM-dd HH:mm:ss.fff"); public string UploadStartTimeStr => UploadStartTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
public string UploadFinishedTimeStr => UploadFinishedTime.ToString("yyyy-MM-dd HH:mm:ss.fff"); public string UploadFinishedTimeStr => UploadFinishedTime?.ToString("yyyy-MM-dd HH:mm:ss.fff");
public double TotalMillisecondsInterval { get; set; }
public string TimeInterval public string TimeInterval
@ -486,14 +485,14 @@ namespace IRaCIS.Core.Application.Contracts
var uploadTimeSpan = UploadFinishedTime - UploadStartTime; var uploadTimeSpan = UploadFinishedTime - UploadStartTime;
return $" {uploadTimeSpan.Hours}:{uploadTimeSpan.Minutes}:{uploadTimeSpan.Seconds}.{uploadTimeSpan.Milliseconds}"; return $" {uploadTimeSpan?.Hours}:{uploadTimeSpan?.Minutes}:{uploadTimeSpan?.Seconds}.{uploadTimeSpan?.Milliseconds}";
} }
} }
public DateTime UploadStartTime { get; set; } public DateTime UploadStartTime { get; set; }
public DateTime UploadFinishedTime { get; set; } public DateTime? UploadFinishedTime { get; set; }
public decimal FileSize { get; set; } public decimal FileSize { get; set; }

View File

@ -31,7 +31,7 @@ namespace IRaCIS.Core.Domain.Models
public int TotalMillisecondsInterval { get; set; } //public int TotalMillisecondsInterval { get; set; }
public DateTime UploadStartTime { get; set; } public DateTime UploadStartTime { get; set; }

View File

@ -10,7 +10,6 @@ using Microsoft.EntityFrameworkCore.ChangeTracking;
using System.Reflection; using System.Reflection;
using EntityFramework.Exceptions.SqlServer; using EntityFramework.Exceptions.SqlServer;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore.ValueGenerator;
using MassTransit; using MassTransit;
using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;

View File

@ -1,34 +1,34 @@
using System; //using System;
using IRaCIS.Core.Domain.Models; //using IRaCIS.Core.Domain.Models;
using Microsoft.EntityFrameworkCore.ChangeTracking; //using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.ValueGeneration; //using Microsoft.EntityFrameworkCore.ValueGeneration;
namespace IRaCIS.Core.Infra.EFCore.ValueGenerator //namespace IRaCIS.Core.Infra.EFCore.ValueGenerator
{ //{
/// <summary> // /// <summary>
/// 上传监控 时间间隔存储 需要按照这个字段进行排序 // /// 上传监控 时间间隔存储 需要按照这个字段进行排序
/// </summary> // /// </summary>
public class UploadTotalMillisecondsInterval : ValueGenerator<int> // public class UploadTotalMillisecondsInterval : ValueGenerator<int>
{ // {
//code first must migration dbfirst must config in db and also need config in code // //code first must migration dbfirst must config in db and also need config in code
//modelBuilder.Entity<StudyMonitor>().Property(e => e.TotalMillisecondsInterval).HasComputedColumnSql("datediff(MS,UploadStartTime,UploadFinishedTime)"); // //modelBuilder.Entity<StudyMonitor>().Property(e => e.TotalMillisecondsInterval).HasComputedColumnSql("datediff(MS,UploadStartTime,UploadFinishedTime)");
//modelBuilder.Entity<StudyMonitor>().Property(e => e.TestInterval).ValueGeneratedOnAddOrUpdate().HasDefaultValueSql("datediff(MS,UploadStartTime,UploadFinishedTime)"); // //modelBuilder.Entity<StudyMonitor>().Property(e => e.TestInterval).ValueGeneratedOnAddOrUpdate().HasDefaultValueSql("datediff(MS,UploadStartTime,UploadFinishedTime)");
public override int Next(EntityEntry entry) // public override int Next(EntityEntry entry)
{ // {
if (entry.Entity is StudyMonitor entity) // if (entry.Entity is StudyMonitor entity)
{ // {
return (entity.UploadFinishedTime - entity.UploadStartTime).Milliseconds; // return (entity.UploadFinishedTime - entity.UploadStartTime)?.Milliseconds;
} // }
else // else
{ // {
throw new ArgumentException("ValueGenerator用在了不适合的实体"); // throw new ArgumentException("ValueGenerator用在了不适合的实体");
} // }
} // }
public override bool GeneratesTemporaryValues => false; // public override bool GeneratesTemporaryValues => false;
} // }
} //}

View File

@ -1,5 +1,5 @@
using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Infra.EFCore.ValueGenerator; //using IRaCIS.Core.Infra.EFCore.ValueGenerator;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
@ -18,7 +18,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
//.HasForeignKey(s => new { s.TrialId, s.SiteId }) //.HasForeignKey(s => new { s.TrialId, s.SiteId })
//.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); //.HasPrincipalKey(c => new { c.TrialId, c.SiteId });
builder.Property(e => e.TotalMillisecondsInterval).HasValueGenerator<UploadTotalMillisecondsInterval>().ValueGeneratedOnAdd(); //builder.Property(e => e.TotalMillisecondsInterval).HasValueGenerator<UploadTotalMillisecondsInterval>().ValueGeneratedOnAdd();
builder builder