From ccd6935dcb3d520844a4fe1f800c033edd9ad77e Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 31 Aug 2022 09:58:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 8 + .../Reading/ReadingCalculateService.cs | 2 +- .../Reading/ReadingImageTaskService.cs | 164 ++++++++++++------ 3 files changed, 119 insertions(+), 55 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 4c7e4a9c2..b66bf7225 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -14,7 +14,15 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public List VisitTaskList { get; set; } + public List TaskQuestions { get; set; } + } + + public class VisitTaskGroupAnswerDto + { + public Guid VisitTaskId { get; set; } + public List Questions { get; set; } + } public class VisitTaskGroupInfo diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs index 6b5bab33e..8ee6520bf 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs @@ -105,7 +105,7 @@ namespace IRaCIS.Core.Application.Service CriterionId= criterionId, TrialId=visitTask.TrialId, }; - //await ReadingCalculate(readingData); + await ReadingCalculate(readingData); } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index 45944ef0b..badebaf7e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -108,77 +108,133 @@ namespace IRaCIS.Application.Services #region 表格问题相关 + /// + /// 获取阅片报告 + /// + /// + /// + public async Task GetReadingReportEvaluation(GetReadingReportEvaluationInDto indto) + { + GetReadingReportEvaluationOutDto result = new GetReadingReportEvaluationOutDto(); - //public async Task<> GetReadingReportEvaluation(GetReadingReportEvaluationInDto indto) - //{ - // GetReadingReportEvaluationOutDto result = new GetReadingReportEvaluationOutDto(); + var taskInfoList = await _visitTaskRepository.Where(x => x.SubjectId == indto.SubjectId && x.TaskState == TaskState.Effect + && x.ReadingCategory == ReadingCategory.Visit && !x.IsAnalysisCreate && x.ReadingTaskState == ReadingTaskState.HaveSigned + ).OrderBy(x => x.VisitTaskNum).Select(x => new VisitTaskInfo() + { + VisitTaskId = x.Id, + TaskName = x.TaskName, + VisitTaskNum = x.VisitTaskNum, + }).ToListAsync(); - // var taskInfoList = await _visitTaskRepository.Where(x => x.SubjectId == indto.SubjectId && x.TaskState == TaskState.Effect - // && x.ReadingCategory == ReadingCategory.Visit && !x.IsAnalysisCreate && x.ReadingTaskState == ReadingTaskState.HaveSigned - // ).OrderBy(x => x.VisitTaskNum).Select(x => new VisitTaskInfo() - // { - // VisitTaskId = x.Id, - // TaskName = x.TaskName, - // VisitTaskNum = x.VisitTaskNum, - // }).ToListAsync(); + result.VisitTaskList = taskInfoList; + + var visitTaskIds = taskInfoList.Select(x => x.VisitTaskId).ToList(); + + var criterionId = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == indto.TrialId && x.IsConfirm).Select(x => x.Id).FirstOrDefaultAsync(); + var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId).ToListAsync(); + var tableQuestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == criterionId).ToListAsync(); - // var visitTaskIds = taskInfoList.Select(x => x.VisitTaskId).ToList(); - - // var criterionId = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == indto.TrialId && x.IsConfirm).Select(x => x.Id).FirstOrDefaultAsync(); - // var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId).ToListAsync(); - // var tableQuestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == criterionId).ToListAsync(); + var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); - // var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); - // var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + // 第一级 + #region 构造问题 + List questions = questionList.Where(x => x.Type == "group").OrderBy(x => x.ShowOrder).Select(x => new VisitTaskGroupInfo() + { + QuestionId = x.Id, + GroupName = x.GroupName, + QuestionName = x.QuestionName, + ShowOrder = x.ShowOrder, + }).ToList(); - // // 第一级 + foreach (var item in questions) + { + item.QuestionList = questionList.Where(x => x.GroupName == item.GroupName).OrderBy(x => x.ShowOrder).Select(x => new VisitTaskQuestionInfo() + { + GroupName = x.GroupName, + QuestionId = x.Id, + QuestionName = x.QuestionName, + ShowOrder = x.ShowOrder, - // List questions = questionList.Where(x => x.Type == "group").OrderBy(x => x.ShowOrder).Select(x => new VisitTaskGroupInfo() - // { - // QuestionId = x.Id, - // GroupName=x.GroupName, - // QuestionName = x.QuestionName, - // ShowOrder = x.ShowOrder, - // }).ToList(); + }).ToList(); - // foreach (var item in questions) - // { - // item.QuestionList = questionList.Where(x => x.GroupName == item.GroupName).OrderBy(x => x.ShowOrder).Select(x => new VisitTaskQuestionInfo() - // { - // GroupName = x.GroupName, - // QuestionId = x.Id, - // QuestionName = x.QuestionName, - // ShowOrder = x.ShowOrder, + foreach (var question in item.QuestionList) + { + question.TableRowQuestionList = new List() + { + }; + VistTaskTableQuestionRowInfo questionInfo = new VistTaskTableQuestionRowInfo() + { - // }).ToList(); + RowIndex = 0, + OrderMark = String.Empty, + TableQuestionList = tableQuestionList.Where(x => x.ReadingQuestionId == question.QuestionId).OrderBy(x => x.ShowOrder).Select(x => new VistTaskTableQuestionInfo() + { + Answer = String.Empty, + QuestionId = question.QuestionId, + TableQuestionId = x.Id, + ShowOrder = x.ShowOrder, + QuestionName = x.QuestionName, - // foreach (var question in item.QuestionList) - // { - // question.TableRowQuestionList = new List() - // { + }).ToList() + }; - // }; - // VistTaskTableQuestionRowInfo questionInfo = new VistTaskTableQuestionRowInfo() - // { + question.TableRowQuestionList.Add(questionInfo); - // RowIndex = 0, - // OrderMark = String.Empty, - // TableQuestionList=tableQuestionList.Where(x=>x.ReadingQuestionId== question.QuestionId).Select(x=> new VistTaskTableQuestionInfo() { - // Answer=String.Empty, - // GroupName=question - - // }) + } + } + #endregion - // } - // } - // } + #region 构造答案 - - //} + result.TaskQuestions = new List(); + foreach (var item in taskInfoList) + { + var itemQuestions = questions.Clone(); + foreach (var group in itemQuestions) + { + group.QuestionList.ForEach(x => + { + x.Answer = answers.Where(n => n.VisitTaskId == item.VisitTaskId && x.QuestionId == x.QuestionId).Select(x => x.Answer).FirstOrDefault() ?? String.Empty; + var tableQuestionAnswers = tableAnswers.Where(n => n.QuestionId == n.QuestionId && n.VisitTaskId == item.VisitTaskId).GroupBy(y => new { y.RowIndex }).Select(y => new + { + RowIndex = y.Key.RowIndex, + Answer = y.ToList(), + }); + List questionRowInfos = new List(); + var answerModel = x.TableRowQuestionList.FirstOrDefault() ?? new VistTaskTableQuestionRowInfo(); + tableQuestionAnswers.ForEach(y => + { + VistTaskTableQuestionRowInfo rowInfo = answerModel.Clone(); + rowInfo.RowIndex = y.RowIndex; + rowInfo.TableQuestionList.ForEach(z => + { + z.Answer = y.Answer.Where(n => n.TableQuestionId == z.TableQuestionId && n.QuestionId == z.QuestionId).Select(n => n.Answer).FirstOrDefault() ?? String.Empty; + + }); + questionRowInfos.Add(rowInfo); + }); + + x.TableRowQuestionList = questionRowInfos; + + }); + } + + result.TaskQuestions.Add(new VisitTaskGroupAnswerDto() { + + VisitTaskId=item.VisitTaskId, + Questions= itemQuestions + }); + } + #endregion + + return result; + + } /// /// 获取表格答案行信息