diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index ebed5042b..cfed590dd 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -321,6 +321,9 @@ namespace IRaCIS.Core.Application.Contracts public decimal VisitNum { get; set; } public string VisitName { get; set; } = string.Empty; + public Guid SubjectId { get; set; } + public Guid SiteId { get; set; } + //public string Modality { get; set; } public RequestBackStateEnum RequestBackState { get; set; } diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 50306bdb3..a248e1133 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1480,15 +1480,7 @@ namespace IRaCIS.Core.Application.Image.QA [TypeFilter(typeof(TrialResourceFilter))] public async Task QCPassedOrFailed(Guid trialId, Guid subjectVisitId, [FromRoute] AuditStateEnum auditState) { - var DicomSeriesdatac = await _repository.GetQueryable().Where(x => x.SubjectVisitId == subjectVisitId).Select(x => new { - StudyCode = x.DicomStudy.StudyCode, - Modalities = x.DicomStudy.Modalities, - SeriesNumber = x.SeriesNumber, - InstanceCount = x.InstanceCount, - SeriesTime = x.SeriesTime, - IsReading = x.IsReading, - IsDeleted = x.IsDeleted, - }).ToListAsync(); + if (!await _repository.AnyAsync(t => t.TrialId == trialId && t.UserId == _userInfo.Id)) { @@ -1631,20 +1623,55 @@ namespace IRaCIS.Core.Application.Image.QA //删除 软删除的物理文件 + + var instanceIdList = await _repository.Where(t => t.DicomSerie.IsDeleted && t.SubjectVisitId == subjectVisitId) .Select(t => new { InstanceId = t.Id, t.SeriesId, t.StudyId, t.SubjectId, t.SiteId }).ToListAsync(); List datas = new List(); - var DicomSeriesdata = await _repository.GetQueryable().Where(x=>x.SubjectVisitId== subjectVisitId&&x.IsDeleted).Select(x => new { - StudyCode=x.DicomStudy.Code, - Modalities=x.DicomStudy.Modalities, - SeriesNumber=x.SeriesNumber, - InstanceCount=x.InstanceCount, - SeriesTime=x.SeriesTime, - IsReading=x.IsReading, - IsDeleted=x.IsDeleted, + var DicomSeriesdata = await _repository.GetQueryable().Where(x => x.SubjectVisitId == subjectVisitId).Select(x => new { + StudyCode = x.DicomStudy.StudyCode, + Modalities = x.DicomStudy.Modalities, + SeriesNumber = x.SeriesNumber, + InstanceCount = x.InstanceCount, + SeriesTime = x.SeriesTime, + TrialId=x.TrialId, + SiteId=x.SiteId, + x.SubjectId, + x.SubjectVisitId, + x.IsDeleted, + x.IsReading, + x.Id, + }).ToListAsync(); + DateTime time = DateTime.Now.AddMilliseconds(500); + DicomSeriesdata.ForEach(x => + { + datas.Add(new DataInspection() + { + TrialId = x.TrialId, + SiteId = x.SiteId, + SubjectId = x.SubjectId, + SubjectVisitId = x.SubjectVisitId, + GeneralId = x.Id, + CreateTime = time, + Identification = "Delete|DICOM Series|Data|Visit-Image Quanlity Control", + JsonDetail = JsonConvert.SerializeObject(new + { + StudyCode = x.StudyCode, + Modalities = x.Modalities, + SeriesNumber = x.SeriesNumber, + InstanceCount = x.InstanceCount, + SeriesTime = x.SeriesTime, + IsReading=x.IsReading, + IsDeleted=x.IsDeleted, + }) + + }); + + }); + await _inspectionService.AddListInspectionRecordAsync(datas); instanceIdList.ForEach(t => { var path = _dicomFileStoreHelper.GetInstanceFilePath(new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId }, t.SeriesId, t.InstanceId.ToString());