修改上传

Test.EIImageViewer
hang 2023-03-02 11:47:43 +08:00
parent cc3513846f
commit 38b9775ad2
11 changed files with 162 additions and 45 deletions

View File

@ -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,

View File

@ -31,7 +31,7 @@ public static class ExcelExportHelper
//一个值 对应不同的字典翻译
var needTranslatePropertyList = translateType.GetProperties().Where(t => t.IsDefined(typeof(DictionaryTranslateAttribute), true))
.SelectMany(c =>
c.GetCustomAttributes(typeof(DictionaryTranslateAttribute), false).Select(f => (DictionaryTranslateAttribute?)f).Where(t => t.CriterionType == criterionType || t.CriterionType == null)
c.GetCustomAttributes(typeof(DictionaryTranslateAttribute), false).Select(f => (DictionaryTranslateAttribute?)f).Where(t => t?.CriterionType == criterionType || t?.CriterionType == null)
.Select(k => new { c.Name, k.DicParentCode ,k.IsTranslateDenpendOtherProperty, k.DependPropertyName,k.DependPropertyValueStr})
).ToList();

View File

@ -458,6 +458,9 @@
质疑列表
</summary>
<param name="challengeQuery"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetSubjectList_Export(IRaCIS.Application.Contracts.SubjectQueryParam,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
@ -465,6 +468,9 @@
受试者信息导出表
</summary>
<param name="param"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetSubjectProgress_Export(IRaCIS.Core.Application.Contracts.SubjectProgressQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
@ -492,6 +498,9 @@
阅片期信息表
</summary>
<param name="param"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetDicomAndNoneDicomStudyList_Export(IRaCIS.Core.Application.Contracts.StudyQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
@ -499,6 +508,9 @@
一致性核查 检查信息表
</summary>
<param name="studyQuery"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetConsistencyVerificationList_Export(IRaCIS.Core.Application.Contracts.CheckQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit})">
@ -506,6 +518,10 @@
一致性核查记录表
</summary>
<param name="checkQuery"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<param name="_subjectVisitRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetReadingTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
@ -513,6 +529,9 @@
PM阅片跟踪
</summary>
<param name="queryVisitTask"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetReReadingTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
@ -520,6 +539,9 @@
PM 重阅追踪
</summary>
<param name="queryVisitTask"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetMedicalReviewTaskList_Export(IRaCIS.Core.Application.ViewModel.TaskMedicalReviewQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
@ -527,6 +549,9 @@
PM 医学审核(挑选任务生成后的列表)
</summary>
<param name="inQuery"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetSelfAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
@ -534,12 +559,19 @@
自身一致性分析(仅做了resist1.1)
</summary>
<param name="queryVisitTask"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetGroupAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
<summary>
组件一致性分析(仅做了resist1.1)
</summary>
<param name="queryVisitTask"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<param name="inQuery"></param>
<returns></returns>
</member>
@ -555,6 +587,9 @@
整体肿瘤评估 (目前仅仅 RECIST1.1 多个标准一个接口 Excel 列是一样的
</summary>
<param name="queryVisitTask"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetEvaluationOfTumorEfficacy_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
@ -573,6 +608,9 @@
评估病灶明细表 (目前仅仅 RECIST1.1 RECIST1.1 PGW3 表都是不同的)
</summary>
<param name="queryVisitTask"></param>
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService">

View File

@ -86,6 +86,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// 质疑列表
/// </summary>
/// <param name="challengeQuery"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
@ -128,6 +131,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// 受试者信息导出表
/// </summary>
/// <param name="param"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetSubjectList_Export(SubjectQueryParam param,
@ -409,6 +415,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// 阅片期信息表
/// </summary>
/// <param name="param"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetReadingPeriodList_Export(ReadPeriodQuery param,
@ -435,6 +444,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// 一致性核查 检查信息表
/// </summary>
/// <param name="studyQuery"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
@ -519,6 +531,10 @@ namespace IRaCIS.Core.Application.Service.Common
/// 一致性核查记录表
/// </summary>
/// <param name="checkQuery"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <param name="_subjectVisitRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetConsistencyVerificationList_Export(CheckQuery checkQuery,
@ -555,6 +571,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// PM阅片跟踪
/// </summary>
/// <param name="queryVisitTask"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetReadingTaskList_Export(VisitTaskQuery queryVisitTask,
@ -602,6 +621,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// PM 重阅追踪
/// </summary>
/// <param name="queryVisitTask"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetReReadingTaskList_Export(VisitTaskQuery queryVisitTask,
@ -648,6 +670,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// PM 医学审核(挑选任务生成后的列表)
/// </summary>
/// <param name="inQuery"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetMedicalReviewTaskList_Export(TaskMedicalReviewQuery inQuery,
@ -686,6 +711,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// 自身一致性分析(仅做了resist1.1)
/// </summary>
/// <param name="queryVisitTask"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetSelfAnalysisTaskList_Export(VisitTaskQuery queryVisitTask,
@ -763,6 +791,10 @@ namespace IRaCIS.Core.Application.Service.Common
/// <summary>
/// 组件一致性分析(仅做了resist1.1)
/// </summary>
/// <param name="queryVisitTask"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
@ -923,6 +955,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// 整体肿瘤评估 (目前仅仅 RECIST1.1 多个标准一个接口 Excel 列是一样的
/// </summary>
/// <param name="queryVisitTask"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetOverallTumorEvaluationList_Export(VisitTaskQuery queryVisitTask,
@ -935,7 +970,7 @@ namespace IRaCIS.Core.Application.Service.Common
//每次查询必须是单标准的
var criterion = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName }).FirstOrDefaultAsync();
var criterion = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName }).FirstNotNullAsync();
if (criterion.CriterionType != CriterionType.RECIST1Pointt1 && criterion.CriterionType != CriterionType.PCWG3)
{
@ -1040,6 +1075,9 @@ namespace IRaCIS.Core.Application.Service.Common
/// 评估病灶明细表 (目前仅仅 RECIST1.1 RECIST1.1 PGW3 表都是不同的)
/// </summary>
/// <param name="queryVisitTask"></param>
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetDetailedOfEvaluatedLesion_Export(VisitTaskQuery queryVisitTask,

View File

@ -197,7 +197,7 @@ namespace IRaCIS.Core.Application.Service
foreach (var taskId in taskIdList)
{
await _taskMedicalReviewRepository.AddAsync(new TaskMedicalReview() { TrialId = trialId, VisitTaskId = taskId, MedicalManagerUserId = minUserIdList.FirstOrDefault(), AllocateTime = DateTime.Now
,IsAutoGenerate=true,PDRelationTaskIdListStr=string.Join('|', taskIdList)
,IsAutoGenerate=true,PDRelationTaskIdListStr=string.Join('|', taskIdList.Distinct())
},true);
}

View File

@ -54,7 +54,9 @@ namespace IRaCIS.Core.Application.Contracts
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 string ArchiveFinishedTimeStr => ArchiveFinishedTime?.ToString("yyyy-MM-dd HH:mm:ss.fff");
public double TotalMillisecondsInterval { get; set; }
@ -90,7 +92,9 @@ namespace IRaCIS.Core.Application.Contracts
public DateTime UploadStartTime { get; set; }
public DateTime UploadFinishedTime { get; set; }
public DateTime? UploadFinishedTime { get; set; }
public DateTime? ArchiveFinishedTime { get; set; }
public decimal FileSize { get; set; }

View File

@ -50,6 +50,9 @@ namespace IRaCIS.Core.Application.Services
return success;
}
public async Task<(Guid StudyId, string StudyCode)> ArchiveDicomStreamAsync(Stream dicomStream,
DicomTrialSiteSubjectInfo addtionalInfo, List<string> seriesInstanceUidList, List<string> instanceUidList)
{

View File

@ -188,6 +188,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
FileSize = t.FileSize,
UploadFinishedTime = t.UploadFinishedTime,
UploadStartTime = t.UploadStartTime,
ArchiveFinishedTime=t.ArchiveFinishedTime,
TotalMillisecondsInterval = t.TotalMillisecondsInterval,

View File

@ -219,10 +219,17 @@ namespace IRaCIS.Core.Application.Contracts
public List<DicomSeriesDTO> SeriesList { get; set; } = new List<DicomSeriesDTO>();
}
public class PreArchiveStudyCommand
{
public Guid SubjectVisitId { get; set; }
}
public class ArchiveStudyCommand
{
[NotDefault]
public Guid StudyMonitorId { get; set; }
public Guid? AbandonStudyId { get; set; }

View File

@ -200,7 +200,7 @@ namespace IRaCIS.Core.Domain.Models
public bool IsAutoGenerate { get; set; }
// | 分割
public string PDRelationTaskIdListStr { get; set; }
public string PDRelationTaskIdListStr { get; set; }=string.Empty;
[NotMapped]
public List<Guid> PDRelationTaskIdList=> PDRelationTaskIdListStr.Split('|',StringSplitOptions.RemoveEmptyEntries).Select(t=> Guid.Parse(t) ).ToList();

View File

@ -37,7 +37,12 @@ namespace IRaCIS.Core.Domain.Models
public DateTime UploadStartTime { get; set; }
public DateTime UploadFinishedTime { get; set; }
public DateTime? UploadFinishedTime { get; set; }
public DateTime? ArchiveFinishedTime { get; set; }
public int FailedFileCount { get; set; }
public decimal FileSize { get; set; }