diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 91b518abd..67e4e5dd1 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1220,6 +1220,11 @@ 类型值 + + + 答案 + + 项目ID @@ -4150,13 +4155,20 @@ - + 找子问题 + + + 保存任务问题 + + + + 提交问题 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 1478f4e85..51dd3d891 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -64,6 +64,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { [NotDefault] public Guid ReadingQuestionCriterionTrialId { get; set; } + + public Guid? VisitTaskId { get; set; } } /// @@ -151,6 +153,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public string TypeValue { get; set; } + /// + /// 答案 + /// + public string Answer { get; set; } + public List Childrens { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index 06276c7a6..ee7609bbb 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -150,9 +150,30 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetTrialReadingQuestion(GetTrialReadingQuestionInDto inDto) { - var qusetionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId).OrderBy(x=>x.ShowOrder).ToListAsync(); + var query= from data in _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId==inDto.ReadingQuestionCriterionTrialId ) + join questionAnswer in _readingTaskQuestionAnswerRepository.Where(x=>x.VisitTaskId==inDto.VisitTaskId) on data.Id equals questionAnswer.ReadingQuestionTrialId into questionAnswerTemp + from leftquestionAnswer in questionAnswerTemp.DefaultIfEmpty() + select new GetTrialReadingQuestionOutDto() + { + ReadingQuestionTrialId=data.Id, + ReadingQuestionCriterionTrialId=data.ReadingQuestionCriterionTrialId, + TrialId=data.TrialId, + Type=data.Type, + ParentTriggerValue=data.ParentTriggerValue, + GroupName=data.GroupName, + QuestionName=data.QuestionName, + IsRequired=data.IsRequired, + ShowOrder=data.ShowOrder, + ParentId=data.ParentId, + TypeValue=data.TypeValue, + Answer= leftquestionAnswer.Answer + }; - List groupList = _mapper.Map>(qusetionList.Where(x => x.ParentId == null)); + var qusetionList =await query.ToListAsync(); + + + + List groupList = qusetionList.Where(x => x.ParentId == null).ToList(); groupList.ForEach(x => { FindChildQuestion(x, qusetionList); @@ -167,9 +188,9 @@ namespace IRaCIS.Application.Services /// /// - private void FindChildQuestion(GetTrialReadingQuestionOutDto trialReadingQuestion, List questionlists) + private void FindChildQuestion(GetTrialReadingQuestionOutDto trialReadingQuestion, List questionlists) { - trialReadingQuestion.Childrens = _mapper.Map>(questionlists.Where(x => x.ParentId == trialReadingQuestion.ReadingQuestionTrialId)); + trialReadingQuestion.Childrens = questionlists.Where(x => x.ParentId == trialReadingQuestion.ReadingQuestionTrialId).ToList(); if (trialReadingQuestion.Childrens != null && trialReadingQuestion.Childrens.Count != 0) { trialReadingQuestion.Childrens.ForEach(x => @@ -179,18 +200,16 @@ namespace IRaCIS.Application.Services } } - - - /// - /// 提交问题 + /// 保存任务问题 /// /// /// - [NonDynamicMethod] - public async Task SubmitVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto) + [HttpPost] + public async Task SaveVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto) { - var subjectId =await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.SubjectId).FirstOrDefaultAsync(); + var subjectId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.SubjectId).FirstOrDefaultAsync(); + await _readingTaskQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId); List readingTaskAnswerList = inDto.AnswerList.Select(x => new ReadingTaskQuestionAnswer() { Id = NewId.NextGuid(), @@ -202,6 +221,26 @@ namespace IRaCIS.Application.Services TrialId = inDto.TrialId }).ToList(); await _readingTaskQuestionAnswerRepository.AddRangeAsync(readingTaskAnswerList); + + + var result = await _visitTaskRepository.SaveChangesAsync(); + return ResponseOutput.Ok(result); + + } + + + + + + /// + /// 提交问题 + /// + /// + /// + [HttpPost] + public async Task SubmitVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto) + { + await this.SaveVisitTaskQuestions(inDto); await _visitTaskRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask() { ReadingTaskState = ReadingTaskState.HaveSigned diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index c4dca2468..e2c801df0 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -66,7 +66,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common } - /// /// 特殊删除 /// @@ -85,8 +84,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common } } - - /// /// 插入Add的实体 ///