diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index e1f0e80d3..0776d651b 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -1176,44 +1176,52 @@ namespace IRaCIS.Core.Infra.EFCore.Common }; - - //if (inspection.TrialId == null && inspection.SubjectId == null && inspection.SubjectVisitId == null && inspection.SiteId == null && inspection.VisitTaskId == null) - //{ - // throw new BusinessValidationFailedException("稽查记录 关联TrialId、SubjectId、SubjectVisitId、SiteId 都忘记进行了设置"); - //} - if (inspection.VisitTaskId != null) { - var info = (await _dbContext.VisitTask.Where(x => x.Id == inspection.VisitTaskId).Select(x => new { SubjectId = x.SubjectId, x.Subject.SiteId, x.TrialId, x.SourceSubjectVisitId, ReadModuleSubjectVisitId = (Guid?)x.ReadModule.SubjectVisitId }).FirstOrDefaultAsync()).IfNullThrowException(); + + if (generalData.TrialId == null || generalData.SiteId == null || generalData.SubjectId == null) + { + var info = await _dbContext.VisitTask.Where(x => x.Id == inspection.VisitTaskId).Select(x => new { SubjectId = x.SubjectId, x.Subject.SiteId, x.TrialId, x.SourceSubjectVisitId, ReadModuleSubjectVisitId = (Guid?)x.ReadModule.SubjectVisitId }).FirstOrDefaultAsync(); - generalData.TrialId = info?.TrialId ?? generalData.TrialId; - generalData.SubjectId = info?.SubjectId ?? generalData.SubjectId; - generalData.SiteId = info?.SiteId ?? generalData.SiteId; - generalData.SubjectVisitId = info?.SourceSubjectVisitId != null ? info?.SourceSubjectVisitId : (info?.ReadModuleSubjectVisitId != null ? info?.ReadModuleSubjectVisitId : null); + generalData.TrialId = info?.TrialId ?? generalData.TrialId; + generalData.SubjectId = info?.SubjectId ?? generalData.SubjectId; + generalData.SiteId = info?.SiteId ?? generalData.SiteId; + generalData.SubjectVisitId = info?.SourceSubjectVisitId != null ? info?.SourceSubjectVisitId : (info?.ReadModuleSubjectVisitId != null ? info?.ReadModuleSubjectVisitId : null); + } + } // Suject visit 都进行了设置 不用处理 if (inspection.SubjectVisitId != null) { - var info = await _dbContext.SubjectVisit.Where(x => x.Id == generalData.SubjectVisitId).Select(x => - new { x.SubjectId, x.SiteId, x.TrialId }).FirstOrDefaultAsync(); + if (generalData.TrialId == null || generalData.SiteId == null || generalData.SubjectId == null) + { + var info = await _dbContext.SubjectVisit.Where(x => x.Id == generalData.SubjectVisitId).Select(x => + new { x.SubjectId, x.SiteId, x.TrialId }).FirstOrDefaultAsync(); - generalData.TrialId = info?.TrialId ?? generalData.TrialId; - generalData.SiteId = info?.SiteId ?? generalData.SiteId; + generalData.TrialId = info?.TrialId ?? generalData.TrialId; + generalData.SiteId = info?.SiteId ?? generalData.SiteId; + generalData.SubjectId = info?.SubjectId ?? generalData.SubjectId; + } + - generalData.SubjectId = info?.SubjectId ?? generalData.SubjectId; } if (generalData.SubjectId != null) { - var info = await _dbContext.Subject.Where(x => x.Id == generalData.SubjectId).Select(x => new { SubjectId = x.Id, x.SiteId, x.TrialId }).FirstOrDefaultAsync(); + if (generalData.TrialId == null || generalData.SiteId == null) + { + var info = await _dbContext.Subject.Where(x => x.Id == generalData.SubjectId).Select(x => new { SubjectId = x.Id, x.SiteId, x.TrialId }).FirstOrDefaultAsync(); + + generalData.TrialId = info?.TrialId ?? generalData.TrialId; + generalData.SiteId = info?.SiteId ?? generalData.SiteId; + } + - generalData.TrialId = info?.TrialId ?? generalData.TrialId; - generalData.SiteId = info?.SiteId ?? generalData.SiteId; } return generalData;