增加影像统计导出
continuous-integration/drone/push Build is passing Details

Test_IRC_Net8
hang 2025-06-17 16:30:13 +08:00
parent 90cd6ad0eb
commit 0c4bd680dd
3 changed files with 52 additions and 0 deletions

View File

@ -48,6 +48,54 @@ namespace IRaCIS.Core.Application.Service.Common
{ {
[HttpPost]
public async Task<IActionResult> GetTrialVisitImageStatList_Export(TrialVisitImageQuery inQuery,
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
[FromServices] IRepository<Trial> _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<ExcelExportInfo>(_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 后续需要移动过来 #region 后续需要移动过来

View File

@ -602,6 +602,8 @@ namespace IRaCIS.Core.Application.Contracts
? $"{TotalImageSize.Value / 1024d / 1024d:F3} MB" ? $"{TotalImageSize.Value / 1024d / 1024d:F3} MB"
: "0.000 MB"; : "0.000 MB";
public string ImageTypeStr => $"{(IsHaveDicom ? "DICOM," : "")}{(IsHaveNoneDicom ? "Non-DICOM" : "")}";
public bool IsHaveDicom { get; set; } public bool IsHaveDicom { get; set; }
public bool IsHaveNoneDicom { get; set; } public bool IsHaveNoneDicom { get; set; }

View File

@ -298,6 +298,8 @@ public static class StaticData
public const string OCT_LipidAngle_Template = "OCT_LipidAngle_Template"; public const string OCT_LipidAngle_Template = "OCT_LipidAngle_Template";
public const string TriaVisitImageStat_Export = "TriaVisitImageStat_Export";
} }