diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs index 8ae02ae1..ee35ab94 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs @@ -24,12 +24,15 @@ namespace IRaCIS.Core.Application.Service.RC private readonly IRepository _readingTableQuestionAnswerRepository; private readonly IRepository _readingTableAnswerRowInfoRepository; + private readonly IRepository _readingTableQuestionTrialRepository; + public ReadingQuestionService( IRepository readingQuestionCriterionSystemRepository, IRepository readingQuestionCriterionTrialRepository, IRepository readingQuestionTrialRepository, IRepository readingCriterionDictionaryRepository, IRepository visitTaskRepository, + IRepository readingTableQuestionTrialRepository, IRepository readingTableQuestionAnswerRepository, IRepository readingTableAnswerRowInfoRepository, IRepository readingTaskQuestionAnswer, @@ -38,7 +41,7 @@ namespace IRaCIS.Core.Application.Service.RC this._readingQuestionCriterionSystemRepository = readingQuestionCriterionSystemRepository; this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; this._readingQuestionTrialRepository = readingQuestionTrialRepository; - + this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository; this._readingCriterionPageRepository = readingCriterionPageRepository; this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; this._visitTaskRepository = visitTaskRepository; @@ -63,10 +66,6 @@ namespace IRaCIS.Core.Application.Service.RC }); - var taskquery = _visitTaskRepository.Where(x => x.TrialReadingCriterionId == trialReadingCriterionId).AsQueryable(); - await _readingTaskQuestionAnswer.BatchDeleteNoTrackingAsync(x => taskquery.Any(y=>y.Id==x.VisitTaskId)); - await _readingTableAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => taskquery.Any(y => y.Id == x.VisitTaskId)); - await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => taskquery.Any(y => y.Id == x.VisitTaskId)); return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 890281c1..d19f2d90 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -35,6 +35,15 @@ namespace IRaCIS.Core.Application private readonly IRepository _readingCriterionDictionaryRepository; private readonly IReadingQuestionService iReadingQuestionService; + + private readonly IRepository _readingTaskQuestionAnswer; + + private readonly IRepository _visitTaskRepository; + private readonly IRepository _readingTableQuestionAnswerRepository; + private readonly IRepository _readingTableAnswerRowInfoRepository; + + private readonly IRepository _readingTableQuestionTrialRepository; + public TrialConfigService(IRepository trialRepository, IRepository trialQCQuestionRepository, IRepository readingQuestionCriterionTrialRepository, @@ -46,7 +55,14 @@ namespace IRaCIS.Core.Application IRepository readingCriterionDictionaryRepository, IReadingQuestionService iReadingQuestionService, IEasyCachingProvider provider, - IOrganInfoService iOrganInfoService + IOrganInfoService iOrganInfoService, + + IRepository visitTaskRepository, + IRepository readingTableQuestionTrialRepository, + IRepository readingTableQuestionAnswerRepository, + IRepository readingTableAnswerRowInfoRepository, + IRepository readingTaskQuestionAnswer + ) { _trialRepository = trialRepository; @@ -58,9 +74,15 @@ namespace IRaCIS.Core.Application this._readingQuestionTrialRepository = readingQuestionTrialRepository; this._readingQuestionCriterionSystemRepository = readingQuestionCriterionSystemRepository; this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; - this._readingCriterionPageRepository = readingCriterionPageRepository; this._provider = provider; this._iOrganInfoService = iOrganInfoService; + this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository; + this._readingCriterionPageRepository = readingCriterionPageRepository; + + this._visitTaskRepository = visitTaskRepository; + this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository; + this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; + this._readingTaskQuestionAnswer = readingTaskQuestionAnswer; } @@ -193,6 +215,14 @@ namespace IRaCIS.Core.Application TrialReadingCriterionId = inDto.TrialReadingCriterionId, }); + // 清除多余答案 + + var questionQuery = _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId).AsQueryable(); + var tableQuestionQuery = _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).AsQueryable(); + await _readingTaskQuestionAnswer.BatchDeleteNoTrackingAsync(x => questionQuery.Count(y => y.Id == x.ReadingQuestionTrialId) == 0) ; + await _readingTableAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => questionQuery.Count(y => y.Id == x.QuestionId)==0); + await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => tableQuestionQuery.Count(y => y.Id == x.TableQuestionId)==0); + var systemCriterion = await _readingQuestionCriterionSystemRepository.Where(x => x.Id == trialCriterion.ReadingQuestionCriterionSystemId).FirstNotNullAsync(); await _readingQuestionCriterionTrialRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial()