From 1d180fa83f35ac69f4b3b11f91c0958a2e734818 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 27 Nov 2025 13:39:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?uat-=E6=A0=87=E6=B3=A8-16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index e353005a0..907aefab0 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -517,7 +517,7 @@ namespace IRaCIS.Core.Application.Services .WhereIf(isManualGenerate, t => t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t => t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsConfirmed && t.IsReading)) //影像后处理 上传了新的影像 还要原始dsa .WhereIf(taskInfo.TaskStudyCount > 0 && (taskInfo.CriterionType == CriterionType.OCT || taskInfo.CriterionType == CriterionType.IVUS), t => t.ModalityForEdit == "XA" || t.ModalityForEdit == "OCT") - .WhereIf(taskInfo.TaskStudyCount > 0 && (taskInfo.CriterionType != CriterionType.OCT || taskInfo.CriterionType != CriterionType.IVUS), t => false) + .WhereIf(taskInfo.TaskStudyCount > 0 && (taskInfo.CriterionType != CriterionType.OCT && taskInfo.CriterionType != CriterionType.IVUS), t => false) .Select(k => new VisitStudyDTO() { InstanceCount = k.InstanceCount, From 72591ee203446d33ca20f4187272c0f0f5c6de1d Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 27 Nov 2025 14:04:23 +0800 Subject: [PATCH 2/3] =?UTF-8?q?uat-=E6=A0=87=E6=B3=A8-17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImageAndDoc/DownloadAndUploadService.cs | 73 +++++++++++++------ 1 file changed, 51 insertions(+), 22 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 9453074da..918171eb3 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -824,39 +824,68 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc [HttpDelete] - public async Task DeleteTaskStudy(Guid visitTaskId, bool isDicom, Guid? dicomStudyId, Guid? noneDicomStudyId) + public async Task DeleteTaskStudy(Guid visitTaskId, Guid? subjectVisitId, bool isDicom, Guid? dicomStudyId, Guid? noneDicomStudyId) { if (isDicom) { - if (dicomStudyId == null) + //靶段标注删除访视影像 + if (visitTaskId == Guid.Empty && subjectVisitId != null && subjectVisitId != Guid.Empty) { - var deleteStudyPathList = await _taskInstanceRepository.Where(t => t.VisitTaskId == visitTaskId).GroupBy(t => t.StudyId).Select(g => g.First().Path).ToListAsync(); - - foreach (var fisrtPath in deleteStudyPathList) - { - var prefix = fisrtPath.Substring(1, fisrtPath.LastIndexOf('/') - 1); - await _oSSService.DeleteFromPrefix(prefix, true); - } - - - await _taskStudyRepository.DeleteFromQueryAsync(t => t.VisitTaskId == visitTaskId); - await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId); - await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId); - } - else - { - var fisrtPath = await _taskInstanceRepository.Where(t => t.VisitTaskId == visitTaskId && t.StudyId == dicomStudyId).Select(t => t.Path).FirstOrDefaultAsync(); + var fisrtPath = await _taskInstanceRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.StudyId == dicomStudyId).Select(t => t.Path).FirstOrDefaultAsync(); var prefix = fisrtPath.Substring(1, fisrtPath.LastIndexOf('/') - 1); await _oSSService.DeleteFromPrefix(prefix, true); - await _taskStudyRepository.DeleteFromQueryAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); - await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); - await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); + await _taskStudyRepository.DeleteFromQueryAsync(t => t.SubjectVisitId == subjectVisitId && t.Id == dicomStudyId); + await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId && t.Id == dicomStudyId); + await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId && t.Id == dicomStudyId); } + + if (visitTaskId != Guid.Empty) + { + if (dicomStudyId == null) + { + var deleteStudyPathList = await _taskInstanceRepository.Where(t => t.VisitTaskId == visitTaskId).GroupBy(t => t.StudyId).Select(g => g.First().Path).ToListAsync(); + + foreach (var fisrtPath in deleteStudyPathList) + { + var prefix = fisrtPath.Substring(1, fisrtPath.LastIndexOf('/') - 1); + await _oSSService.DeleteFromPrefix(prefix, true); + } + + + await _taskStudyRepository.DeleteFromQueryAsync(t => t.VisitTaskId == visitTaskId); + await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId); + await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId); + } + else + { + var fisrtPath = await _taskInstanceRepository.Where(t => t.VisitTaskId == visitTaskId && t.StudyId == dicomStudyId).Select(t => t.Path).FirstOrDefaultAsync(); + var prefix = fisrtPath.Substring(1, fisrtPath.LastIndexOf('/') - 1); + await _oSSService.DeleteFromPrefix(prefix, true); + + await _taskStudyRepository.DeleteFromQueryAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); + await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); + await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); + } + } + } else { - await _noneDicomStudyFileReposiotry.DeleteFromQueryAsync(t => t.VisitTaskId == visitTaskId && t.OriginNoneDicomStudyId == noneDicomStudyId); + if (visitTaskId == Guid.Empty) + { + + //删除靶段标注非dicom + await _noneDicomStudyFileReposiotry.DeleteFromQueryAsync(t => t.ImageLabelNoneDicomStudyId == noneDicomStudyId); + + } + else + { + //删除后处理非dicom + await _noneDicomStudyFileReposiotry.DeleteFromQueryAsync(t => t.VisitTaskId == visitTaskId && t.OriginNoneDicomStudyId == noneDicomStudyId); + + } + } await _noneDicomStudyFileReposiotry.SaveChangesAsync(); From fe79c77285ba77165dcfef6e14d1962abe38f4dc Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 27 Nov 2025 14:23:19 +0800 Subject: [PATCH 3/3] =?UTF-8?q?uat-=E6=A0=87=E6=B3=A8-18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs | 3 ++- .../Service/ImageAndDoc/DownloadAndUploadService.cs | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index dc8986c18..24252c2d2 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -975,7 +975,8 @@ namespace IRaCIS.Core.Application.Contracts public Guid? SourceSubjectVisitId => SubjectVisitId; - + //防止前端null 故意返回 + public Guid VisitTaskId { get; set; } public List OrginalStudyList { get; set; } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 918171eb3..e5f39f38c 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -831,13 +831,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc //靶段标注删除访视影像 if (visitTaskId == Guid.Empty && subjectVisitId != null && subjectVisitId != Guid.Empty) { - var fisrtPath = await _taskInstanceRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.StudyId == dicomStudyId).Select(t => t.Path).FirstOrDefaultAsync(); + var fisrtPath = await _taskInstanceRepository.Where(t => t.SubjectVisitId == subjectVisitId ).Select(t => t.Path).FirstOrDefaultAsync(); var prefix = fisrtPath.Substring(1, fisrtPath.LastIndexOf('/') - 1); await _oSSService.DeleteFromPrefix(prefix, true); - await _taskStudyRepository.DeleteFromQueryAsync(t => t.SubjectVisitId == subjectVisitId && t.Id == dicomStudyId); - await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId && t.Id == dicomStudyId); - await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId && t.Id == dicomStudyId); + await _taskStudyRepository.DeleteFromQueryAsync(t => t.SubjectVisitId == subjectVisitId ); + await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId); + await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId); } if (visitTaskId != Guid.Empty)