diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 84cf9f143..795feb2a4 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -48,6 +48,54 @@ namespace IRaCIS.Core.Application.Service.Common { + [HttpPost] + public async Task GetTrialVisitImageStatList_Export(TrialVisitImageQuery inQuery, + [FromServices] IRepository _subjectVisitRepository, + [FromServices] IRepository _trialRepository, + [FromServices] IDictionaryService _dictionaryService) + { + var query = _subjectVisitRepository.Where(t => t.TrialId == inQuery.TrialId) + .WhereIf(inQuery.TrialSiteId != null, t => t.TrialSiteId == inQuery.TrialSiteId) + .WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.Subject.Code.Contains(inQuery.SubjectCode)) + .WhereIf(inQuery.BeginScanDate != null, t => t.LatestScanDate >= inQuery.BeginScanDate) + .WhereIf(inQuery.EndScanDate != null, t => t.LatestScanDate == inQuery.EndScanDate) + .Select(t => new TrialVisitImageStatView() + { + TrialId = t.TrialId, + SubjectVisitId = t.Id, + SubjectCode = t.Subject.Code, + TrialSiteCode = t.TrialSite.TrialSiteCode, + TrialSiteId = t.TrialSiteId, + VisitName = t.VisitName, + VisitNum = t.VisitNum, + EarliestScanDate = t.EarliestScanDate, + LatestScanDate = t.LatestScanDate, + + IsHaveDicom = t.StudyList.Any(), + + IsHaveNoneDicom = t.NoneDicomStudyList.Any(), + + + TotalStudyCount = t.StudyList.Count() + t.NoneDicomStudyList.Count(), + + TotalImageCount = t.StudyList.Sum(t => t.InstanceCount) + t.NoneDicomStudyList.Sum(t => t.FileCount), + + TotalImageSize = t.StudyList.SelectMany(t => t.InstanceList).Sum(t => t.FileSize) + t.NoneDicomStudyList.SelectMany(t => t.NoneDicomFileList).Sum(t => t.FileSize), + + }); + + + var list = await query.Where(t => t.TotalImageCount > 0).SortToListAsync(inQuery); + + var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); + + exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TriaVisitImageStat_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialMaintenanceDTO)); + + } + #region 后续需要移动过来 diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index e325616c4..54e3367be 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -602,6 +602,8 @@ namespace IRaCIS.Core.Application.Contracts ? $"{TotalImageSize.Value / 1024d / 1024d:F3} MB" : "0.000 MB"; + public string ImageTypeStr => $"{(IsHaveDicom ? "DICOM," : "")}{(IsHaveNoneDicom ? "Non-DICOM" : "")}"; + public bool IsHaveDicom { get; set; } public bool IsHaveNoneDicom { get; set; } diff --git a/IRaCIS.Core.Infrastructure/_IRaCIS/_Config/_StaticData.cs b/IRaCIS.Core.Infrastructure/_IRaCIS/_Config/_StaticData.cs index b613b9050..5bf0e6d00 100644 --- a/IRaCIS.Core.Infrastructure/_IRaCIS/_Config/_StaticData.cs +++ b/IRaCIS.Core.Infrastructure/_IRaCIS/_Config/_StaticData.cs @@ -298,6 +298,8 @@ public static class StaticData public const string OCT_LipidAngle_Template = "OCT_LipidAngle_Template"; + public const string TriaVisitImageStat_Export = "TriaVisitImageStat_Export"; + }