diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index 586600d48..5f31b1858 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -344,7 +344,7 @@ namespace IRaCIS.Core.Application.Service { //之前有回退到影像上传的访视 那么当前访视一致性核查通过的时候,当前访视生成但是不分配出去 - var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); + var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit==false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); //之前有回退的,那么当前访视任务生成但是不分配 if (beforeBackVisitTask != null) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 96dd3377c..749aafaac 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -137,7 +137,7 @@ namespace IRaCIS.Core.Application.Service.Allocation if (inOrder) { - if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed)) + if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed && t.IsLostVisit==false)) { var notCheckPassedMinVisitNum = await _subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).FirstOrDefaultAsync(); diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 98353152b..cb5864e42 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -756,54 +756,68 @@ namespace IRaCIS.Core.Application.Image.QA var id = study.Id; - await _dicomStudyRepository.DeleteAsync(study, true); + await _dicomStudyRepository.DeleteAsync(study); + + + //var DicomSeriess = await _repository.GetQueryable().Where(t => t.StudyId == id).Select(x => new + //{ + // x.StudyId, + // x.SubjectId, + // x.SiteId, + // x.TrialId, + // x.Id, + // x.SubjectVisitId, + // x.SeriesTime, + // x.IsReading, + // x.InstanceCount, + // x.SeriesNumber, + // StudyCode = x.DicomStudy.StudyCode, + // Modalities = x.DicomStudy.Modalities, + + //}).ToListAsync(); + var succeess2 = await _repository.BatchDeleteAsync(t => t.StudyId == id); + var success3 = await _dicomSeriesrepository.BatchDeleteNoTrackingAsync(t => t.StudyId == id); - var DicomSeriess = await _repository.GetQueryable().Where(t => t.StudyId == id).Select(x => new - { - x.StudyId, - x.SubjectId, - x.SiteId, - x.TrialId, - x.Id, - x.SubjectVisitId, - x.SeriesTime, - x.IsReading, - x.InstanceCount, - x.SeriesNumber, - StudyCode = x.DicomStudy.StudyCode, - Modalities = x.DicomStudy.Modalities, - - }).ToListAsync(); - - - - var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id, true); + //var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id, true); var success4 = await _repository.BatchDeleteAsync(t => t.StudyId == id); //删除 物理文件 - var instanceIdList = await _repository.Where(t => t.StudyId == id) - .Select(t => new { InstanceId = t.Id, t.SeriesId, t.StudyId, t.SubjectId, t.SiteId }).ToListAsync(); + var instancePathList = await _repository.Where(t => t.StudyId == id) + .Select(t => t.Path ).ToListAsync(); - instanceIdList.ForEach(t => + instancePathList.ForEach(path => { - var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId }; - var (physicalPath, relativePath) = - FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId); + + var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path); if (System.IO.File.Exists(physicalPath)) { File.Delete(physicalPath); } - }); + + //var instanceIdList = await _repository.Where(t => t.StudyId == id) + // .Select(t => new { InstanceId = t.Id, t.SeriesId, t.StudyId, t.SubjectId, t.SiteId }).ToListAsync(); + + //instanceIdList.ForEach(t => + //{ + // var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId }; + // var (physicalPath, relativePath) = + // FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId); + + // if (System.IO.File.Exists(physicalPath)) + // { + // File.Delete(physicalPath); + // } + + //}); } + await _subjectVisitRepository.SaveChangesAsync(); - var subvisit = await _repository.GetQueryable().FirstOrDefaultAsync(x => x.Id == subjectVisitId); - return ResponseOutput.Ok(); }