From 46b68ca2c9b15252c9e9b7018245d544ef0eaf1e Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 12 Mar 2024 13:25:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=BB=98=E8=AE=A4=E5=8C=BB?= =?UTF-8?q?=E5=AD=A6=E5=AE=A1=E6=A0=B8=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingMedicineQuestionService.cs | 48 +++++++++++++++---- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs index 0c3e7051c..4de2b3f2c 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs @@ -503,14 +503,16 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddDefaultQuestions(AddDefaultQuestionsInDto inDto) { - if (await _readingMedicineTrialQuestionRepository.AnyAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType == inDto.LanguageType && x.SystemQuestionId != null)) - { - await _readingMedicineTrialQuestionRepository.BatchDeleteNoTrackingAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType == inDto.LanguageType && x.SystemQuestionId != null); - } - else - { - await _readingMedicineTrialQuestionRepository.BatchDeleteNoTrackingAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType != inDto.LanguageType); - } + //if (await _readingMedicineTrialQuestionRepository.AnyAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType == inDto.LanguageType && x.SystemQuestionId != null)) + //{ + // await _readingMedicineTrialQuestionRepository.BatchDeleteNoTrackingAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType == inDto.LanguageType && x.SystemQuestionId != null); + //} + //else + //{ + // await _readingMedicineTrialQuestionRepository.BatchDeleteNoTrackingAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType != inDto.LanguageType); + //} + + await _readingMedicineTrialQuestionRepository.BatchDeleteNoTrackingAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId); var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync(); List needAddCategory = new List() { ReadingCategory.Visit }; if(criterionInfo.IsReadingPeriod) @@ -529,8 +531,7 @@ namespace IRaCIS.Core.Application.Service var maxOrder = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId).OrderByDescending(x => x.ShowOrder).Select(x => x.ShowOrder).FirstOrDefaultAsync(); List needList = await _readingMedicineSystemQuestionRepository .Where(x=>x.LanguageType==inDto.LanguageType) - .Where(x =>needAddCategory.Contains(x.ReadingCategory)) - .Where(x => x.CriterionTypeEnum == criterionInfo.CriterionType || x.IsGeneral) + .Where(x =>needAddCategory.Contains(x.ReadingCategory) && x.CriterionTypeEnum == criterionInfo.CriterionType) .Select(x => new TrialDataFromSystem() { @@ -548,6 +549,33 @@ namespace IRaCIS.Core.Application.Service TrialId = inDto.TrialId, }).ToListAsync(); + foreach (var item in needAddCategory.Where(x => x != ReadingCategory.Visit).ToList()) + { + if (!needList.Any(x => x.ReadingCategory == item)) + { + needList.AddRange(await _readingMedicineSystemQuestionRepository + .Where(x => x.LanguageType == inDto.LanguageType) + .Where(x => x.ReadingCategory == item && x.IsGeneral) + .Select(x => new TrialDataFromSystem() + { + + ShowOrder = x.ShowOrder, + IsEnable = x.IsEnable, + LanguageType = x.LanguageType, + IsRequired = x.IsRequired, + QuestionName = x.QuestionName, + TrialReadingCriterionId = inDto.TrialReadingCriterionId, + Type = x.Type, + ParentId = x.ParentId, + SystemQuestionId = x.Id, + ReadingCategory = x.ReadingCategory, + TypeValue = x.TypeValue, + TrialId = inDto.TrialId, + }).ToListAsync()); + } + } + + needList.ForEach(x => { x.Id = NewId.NextGuid(); maxOrder++;