diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 7be3b0487..7e185716c 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -471,7 +471,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } - study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), visiTaskId.ToString()); + study.Id = studyId; study.TrialId = incommand.TrialId; study.SubjectId = incommand.SubjectId; study.VisitTaskId = visiTaskId; @@ -568,29 +568,41 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc //新的序列 那么 检查的序列数量+1 findStudy.SeriesCount += 1; } - else - { - //该序列掉了instance - dicomSeries.InstanceCount += seriesItem.InstanceList.Count; - } + //else + //{ + // //该序列掉了instance + // dicomSeries.InstanceCount += seriesItem.InstanceList.Count; + //} + + //找到该序列已经存在的instanceId + var existInstanceIdList = _taskInstanceRepository.Where(t => t.SeriesId == dicomSeries.Id).Select(t => t.Id).ToList(); foreach (var instanceItem in seriesItem.InstanceList) { var insntance = _mapper.Map(instanceItem); - insntance.Id = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString(), visiTaskId.ToString()); - insntance.StudyId = findStudy.Id; - insntance.SeriesId = dicomSeries.Id; - insntance.TrialId = incommand.TrialId; - insntance.SubjectId = incommand.SubjectId; - insntance.VisitTaskId = visiTaskId; + var instanceId = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString(), visiTaskId.ToString()); + + + if (!existInstanceIdList.Any(t => t == instanceId)) + { + insntance.Id = instanceId; + insntance.StudyId = findStudy.Id; + insntance.SeriesId = dicomSeries.Id; + + insntance.TrialId = incommand.TrialId; + insntance.SubjectId = incommand.SubjectId; + insntance.VisitTaskId = visiTaskId; + + await _taskInstanceRepository.AddAsync(insntance); + + dicomSeries.InstanceCount++; + findStudy.InstanceCount++; + } - await _taskInstanceRepository.AddAsync(insntance); } - - // 不管是新的序列 还是 该序列 掉了Instance 重传的时候 检查的instance 数量都会增加 - findStudy.InstanceCount += seriesItem.InstanceList.Count; + //findStudy.InstanceCount += seriesItem.InstanceList.Count; }