From e9d3dda160323c2dc30cb85d97d53035d002c1a7 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Fri, 14 Aug 2026 11:46:44 +0800 Subject: [PATCH] =?UTF-8?q?OTC=E5=92=8CIVUS=E9=AA=8C=E8=AF=81=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingCalculate/IVUSCalculateService.cs | 16 ++++++++++++++++ .../ReadingCalculate/OCTCalculateService.cs | 14 ++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs index 604bc582e..f1785dfc7 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs @@ -29,6 +29,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IGeneralCalculateService _generalCalculateService, IRepository _readingTaskQuestionAnswerRepository, IVisitTaskHelpeService _visitTaskHelpeService, + IRepository _noneDicomStudyFileRepository, IHttpContextAccessor httpContext, ILogger _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ICriterionCalculateService { @@ -1083,6 +1084,21 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); + var noneDicomFiles = await _noneDicomStudyFileRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId) + .Select(x => new { x.FileType, x.FileName }).ToListAsync(); + var hasZip = noneDicomFiles.Any(x => x.FileType == "application/zip" + || x.FileType == "application/x-zip-compressed" + || x.FileName.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)); + var hasImage = noneDicomFiles.Any(x => x.FileType.StartsWith("image/", StringComparison.OrdinalIgnoreCase) + || x.FileName.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) + || x.FileName.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase) + || x.FileName.EndsWith(".png", StringComparison.OrdinalIgnoreCase)); + + if (!hasZip || !hasImage) + { + throw new BusinessValidationFailedException(_localizer["CriterionImageFileVerify"]); + } + var question = await _readingQuestionTrialRepository.Where(x => x.LesionType == LesionType.ROI && x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).FirstNotNullAsync(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs index 7f05e0469..e338ace11 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs @@ -35,6 +35,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IGeneralCalculateService _generalCalculateService, IVisitTaskHelpeService _visitTaskHelpeService, IRepository _readingTaskQuestionAnswerRepository, + IRepository _taskStudyRepository, + IRepository _noneDicomStudyFileRepository, ILogger _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ICriterionCalculateService { /// @@ -1597,6 +1599,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); + var noneDicomFiles = await _noneDicomStudyFileRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId) + .Select(x => new { x.FileType, x.FileName }).ToListAsync(); + var hasDicom = await _taskStudyRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId); + var hasZip = noneDicomFiles.Any(x => x.FileType == "application/zip" + || x.FileType == "application/x-zip-compressed" + || x.FileName.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)); + + if (!hasDicom || !hasZip) + { + throw new BusinessValidationFailedException(_localizer["CriterionImageFileVerify"]); + } + var question = await _readingQuestionTrialRepository.Where(x => x.LesionType == LesionType.ROI && x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).FirstNotNullAsync();