diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs index 7f9477f02..8b2f94607 100644 --- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs +++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs @@ -222,6 +222,9 @@ namespace IRaCIS.Application.Services var trial = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId)).IfNullThrowException(); + //确认是否是首次确认 + var initTrialVisitPlanConfirmed = trial.VisitPlanConfirmed; + trial.VisitPlanConfirmed = true; @@ -238,29 +241,35 @@ namespace IRaCIS.Application.Services #region 统一给Subject 增加访视任务 - List subjectVisits = new List(); - - var addvisitStages = await _visitStageRepository.Where(x => !x.IsHaveFirstConfirmed && x.TrialId == trialId).ToListAsync(); - - foreach (var visitPlan in addvisitStages) + //首次确认时 IsHaveFirstConfirmed都为false 不需要给Subject 加访视 + if (initTrialVisitPlanConfirmed) { - foreach (var subject in subjects) + List subjectVisits = new List(); + + var addvisitStages = await _visitStageRepository.Where(x => !x.IsHaveFirstConfirmed && x.TrialId == trialId).ToListAsync(); + + foreach (var visitPlan in addvisitStages) { - var addSv = _mapper.Map(visitPlan); - - addSv.SubjectId = subject.Id; - addSv.TrialId = subject.TrialId; - addSv.SiteId = subject.SiteId; - - if (!await _subjectVisitRepository.AnyAsync(t => t.VisitStageId == visitPlan.Id && t.SubjectId == subject.Id)) + foreach (var subject in subjects) { - subjectVisits.Add(addSv); + var addSv = _mapper.Map(visitPlan); + + addSv.SubjectId = subject.Id; + addSv.TrialId = subject.TrialId; + addSv.SiteId = subject.SiteId; + + //再加一层保险,防止重复 + if (!await _subjectVisitRepository.AnyAsync(t => t.VisitStageId == visitPlan.Id && t.SubjectId == subject.Id)) + { + subjectVisits.Add(addSv); + } } } + + await _subjectVisitRepository.AddRangeAsync(subjectVisits); } - await _subjectVisitRepository.AddRangeAsync(subjectVisits); - + #endregion