From e18b890f96f638c355336561b35d4243f791e10c Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Mon, 30 Jan 2023 13:35:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingCriterionService.cs | 9 +++-- .../TrialSiteUser/TrialConfigService.cs | 34 +++++++++++++++++-- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs index 8ae02ae17..ee35ab942 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 890281c18..d19f2d901 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()