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<VisitTaskInfo> VisitTaskList { get; set; }
+ public List<VisitTaskGroupAnswerDto> TaskQuestions { get; set; }
+ }
+
+ public class VisitTaskGroupAnswerDto
+ {
+ public Guid VisitTaskId { get; set; }
+
public List<VisitTaskGroupInfo> 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 表格问题相关
+ /// <summary>
+ /// 获取阅片报告
+ /// </summary>
+ /// <param name="indto"></param>
+ /// <returns></returns>
+ public async Task<GetReadingReportEvaluationOutDto> 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<VisitTaskGroupInfo> 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<VisitTaskGroupInfo> 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>()
+ {
+ };
+ 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<VistTaskTableQuestionRowInfo>()
- // {
+ }).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<VisitTaskGroupAnswerDto>();
+ 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<VistTaskTableQuestionRowInfo> questionRowInfos = new List<VistTaskTableQuestionRowInfo>();
+ 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;
+
+ }
/// <summary>
/// 获取表格答案行信息