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<ReadingTableQuestionAnswer> _readingTableQuestionAnswerRepository; private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository; + private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository; + public ReadingQuestionService( IRepository<ReadingQuestionCriterionSystem> readingQuestionCriterionSystemRepository, IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository, IRepository<ReadingQuestionTrial> readingQuestionTrialRepository, IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository, IRepository<VisitTask> visitTaskRepository, + IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository, IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository, IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository, IRepository<ReadingTaskQuestionAnswer> 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<ReadingCriterionDictionary> _readingCriterionDictionaryRepository; private readonly IReadingQuestionService iReadingQuestionService; + + private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswer; + + private readonly IRepository<VisitTask> _visitTaskRepository; + private readonly IRepository<ReadingTableQuestionAnswer> _readingTableQuestionAnswerRepository; + private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository; + + private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository; + public TrialConfigService(IRepository<Trial> trialRepository, IRepository<TrialQCQuestion> trialQCQuestionRepository, IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository, @@ -46,7 +55,14 @@ namespace IRaCIS.Core.Application IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository, IReadingQuestionService iReadingQuestionService, IEasyCachingProvider provider, - IOrganInfoService iOrganInfoService + IOrganInfoService iOrganInfoService, + + IRepository<VisitTask> visitTaskRepository, + IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository, + IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository, + IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository, + IRepository<ReadingTaskQuestionAnswer> 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()