diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index 75866346f..e699edec4 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -45,6 +45,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using Path = System.IO.Path; namespace IRaCIS.Core.API.Controllers { @@ -225,6 +226,7 @@ namespace IRaCIS.Core.API.Controllers _repository = repository; } + [HttpPost, Route("Study/PreArchiveStudy")] public async Task PreArchiveStudy(PreArchiveStudyCommand preArchiveStudyCommand, [FromServices] IStudyService _studyService, [FromServices] IRepository _studyMonitorRepository) diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index 2731afbfe..e10bb49b8 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -230,7 +230,7 @@ 流式上传 Dicom上传 - + Dicom 归档 @@ -280,13 +280,15 @@ - + 上传非Dicom 文件 支持压缩包 多文件上传 + + diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index b8bd9aa2a..2bd0d10b8 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -385,7 +385,6 @@ namespace IRaCIS.Core.Application.Service.Common UploadFinishedTime = t.UploadFinishedTime, - TotalMillisecondsInterval = t.TotalMillisecondsInterval, UploadTime = t.CreateTime, diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index 42b470942..20f7aba41 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -59,7 +59,26 @@ namespace IRaCIS.Core.Application.Contracts 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 @@ -67,9 +86,11 @@ namespace IRaCIS.Core.Application.Contracts 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) //{ // return $"{uploadTimeSpan.Milliseconds}毫秒"; @@ -86,6 +107,8 @@ namespace IRaCIS.Core.Application.Contracts //{ // return $" {uploadTimeSpan.Hours} 小时 {uploadTimeSpan.Minutes} 分钟 {uploadTimeSpan.Seconds} 秒 {uploadTimeSpan.Milliseconds}毫秒"; //} + #endregion + } } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index bb29487b5..647d5a2c5 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -192,7 +192,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc - TotalMillisecondsInterval = t.TotalMillisecondsInterval, IsDicomReUpload = t.IsDicomReUpload, StudyId = t.Id, diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index 6a914a8f0..b51509a00 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -473,10 +473,9 @@ namespace IRaCIS.Core.Application.Contracts public string IsDicomStr => IsDicom ? "DICOM" : "Non-DICOM"; 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 @@ -486,14 +485,14 @@ namespace IRaCIS.Core.Application.Contracts 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 UploadFinishedTime { get; set; } + public DateTime? UploadFinishedTime { get; set; } public decimal FileSize { get; set; } diff --git a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs index 9af0a20ab..23d605e5b 100644 --- a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs +++ b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs @@ -31,7 +31,7 @@ namespace IRaCIS.Core.Domain.Models - public int TotalMillisecondsInterval { get; set; } + //public int TotalMillisecondsInterval { get; set; } public DateTime UploadStartTime { get; set; } diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 65049292a..a1c877d09 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -10,7 +10,6 @@ using Microsoft.EntityFrameworkCore.ChangeTracking; using System.Reflection; using EntityFramework.Exceptions.SqlServer; using IRaCIS.Core.Domain.Share; -using IRaCIS.Core.Infra.EFCore.ValueGenerator; using MassTransit; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; diff --git a/IRaCIS.Core.Infra.EFCore/Context/ValueGenerator/UploadTotalMillisecondsIntervalGenerator.cs b/IRaCIS.Core.Infra.EFCore/Context/ValueGenerator/UploadTotalMillisecondsIntervalGenerator.cs index 18f4519d4..a50964821 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/ValueGenerator/UploadTotalMillisecondsIntervalGenerator.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/ValueGenerator/UploadTotalMillisecondsIntervalGenerator.cs @@ -1,34 +1,34 @@ -using System; -using IRaCIS.Core.Domain.Models; -using Microsoft.EntityFrameworkCore.ChangeTracking; -using Microsoft.EntityFrameworkCore.ValueGeneration; +//using System; +//using IRaCIS.Core.Domain.Models; +//using Microsoft.EntityFrameworkCore.ChangeTracking; +//using Microsoft.EntityFrameworkCore.ValueGeneration; -namespace IRaCIS.Core.Infra.EFCore.ValueGenerator -{ - /// - /// 上传监控 时间间隔存储 需要按照这个字段进行排序 - /// - public class UploadTotalMillisecondsInterval : ValueGenerator - { +//namespace IRaCIS.Core.Infra.EFCore.ValueGenerator +//{ +// /// +// /// 上传监控 时间间隔存储 需要按照这个字段进行排序 +// /// +// public class UploadTotalMillisecondsInterval : ValueGenerator +// { - //code first must migration dbfirst must config in db and also need config in code - //modelBuilder.Entity().Property(e => e.TotalMillisecondsInterval).HasComputedColumnSql("datediff(MS,UploadStartTime,UploadFinishedTime)"); +// //code first must migration dbfirst must config in db and also need config in code +// //modelBuilder.Entity().Property(e => e.TotalMillisecondsInterval).HasComputedColumnSql("datediff(MS,UploadStartTime,UploadFinishedTime)"); - //modelBuilder.Entity().Property(e => e.TestInterval).ValueGeneratedOnAddOrUpdate().HasDefaultValueSql("datediff(MS,UploadStartTime,UploadFinishedTime)"); +// //modelBuilder.Entity().Property(e => e.TestInterval).ValueGeneratedOnAddOrUpdate().HasDefaultValueSql("datediff(MS,UploadStartTime,UploadFinishedTime)"); - public override int Next(EntityEntry entry) - { - if (entry.Entity is StudyMonitor entity) - { - return (entity.UploadFinishedTime - entity.UploadStartTime).Milliseconds; - } - else - { - throw new ArgumentException("ValueGenerator用在了不适合的实体"); +// public override int Next(EntityEntry entry) +// { +// if (entry.Entity is StudyMonitor entity) +// { +// return (entity.UploadFinishedTime - entity.UploadStartTime)?.Milliseconds; +// } +// else +// { +// throw new ArgumentException("ValueGenerator用在了不适合的实体"); - } - } - public override bool GeneratesTemporaryValues => false; - } +// } +// } +// public override bool GeneratesTemporaryValues => false; +// } -} \ No newline at end of file +//} \ No newline at end of file diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyMonitorConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyMonitorConfigration.cs index 142e4a78e..b60f29acc 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyMonitorConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyMonitorConfigration.cs @@ -1,5 +1,5 @@ using IRaCIS.Core.Domain.Models; -using IRaCIS.Core.Infra.EFCore.ValueGenerator; +//using IRaCIS.Core.Infra.EFCore.ValueGenerator; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -18,7 +18,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration //.HasForeignKey(s => new { s.TrialId, s.SiteId }) //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - builder.Property(e => e.TotalMillisecondsInterval).HasValueGenerator().ValueGeneratedOnAdd(); + //builder.Property(e => e.TotalMillisecondsInterval).HasValueGenerator().ValueGeneratedOnAdd(); builder