From 51b9aaa9b165792a5b70176a8bba686338514665 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 12 Aug 2026 10:53:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=8D=95=E4=B8=AA=E8=AE=BF?= =?UTF-8?q?=E8=A7=86=E8=A3=81=E5=88=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 20 +++++++ .../ReadingJudgeTaskService.cs | 53 +++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 81092d152..9e49b0369 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -2437,6 +2437,26 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid VisitTaskId { get; set; } } + public class GetSingleVisitJudgeAnswerInDto + { + [NotDefault] + public Guid VisitTaskId { get; set; } + } + + public class GetSingleVisitJudgeAnswerOutDto + { + public List QuestionList { get; set; } = new List(); + } + + public class SingleVisitJudgeAnswerItemDto + { + public Guid ReadingQuestionId { get; set; } + public string QuestionName { get; set; } = string.Empty; + public int ShowOrder { get; set; } + public string R1Answer { get; set; } = string.Empty; + public string R2Answer { get; set; } = string.Empty; + } + public class JudgeReadingInfoDto { public string VisitName { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 7b6102a48..9a9e11e93 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -91,6 +91,59 @@ namespace IRaCIS.Core.Application.Service #region 获取裁判阅片任务信息 + + /// + /// 获取单个访视裁判任务的 R1、R2 裁判问题答案。 + /// + /// + /// + [HttpPost] + public async Task GetSingleVisitJudgeAnswer(GetSingleVisitJudgeAnswerInDto inDto) + { + var judgeDataInfo = await _readingJudgeInfoRepository + .Where(x => x.JudgeTaskId == inDto.VisitTaskId) + .FirstNotNullAsync(); + + var taskIds = new List { judgeDataInfo.TaskIdOne, judgeDataInfo.TaskIdTwo }; + var trialReadingCriterionId = await _visitTaskRepository + .Where(x => x.Id == judgeDataInfo.TaskIdOne) + .Select(x => x.TrialReadingCriterionId) + .FirstNotNullAsync(); + + var questionList = await _readingQuestionTrialRepository + .Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.IsJudgeQuestion) + .OrderBy(x => x.ShowOrder) + .Select(x => new SingleVisitJudgeAnswerItemDto + { + ReadingQuestionId = x.Id, + QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us), + ShowOrder = x.ShowOrder, + }) + .ToListAsync(); + + var questionIds = questionList.Select(x => x.ReadingQuestionId).ToList(); + var answerList = await _readingTaskQuestionAnswerRepository + .Where(x => taskIds.Contains(x.VisitTaskId) && questionIds.Contains(x.ReadingQuestionTrialId)) + .Select(x => new + { + x.VisitTaskId, + x.ReadingQuestionTrialId, + x.Answer, + }) + .ToListAsync(); + + questionList.ForEach(question => + { + question.R1Answer = answerList.FirstOrDefault(x => x.VisitTaskId == judgeDataInfo.TaskIdOne && x.ReadingQuestionTrialId == question.ReadingQuestionId)?.Answer ?? string.Empty; + question.R2Answer = answerList.FirstOrDefault(x => x.VisitTaskId == judgeDataInfo.TaskIdTwo && x.ReadingQuestionTrialId == question.ReadingQuestionId)?.Answer ?? string.Empty; + }); + + return new GetSingleVisitJudgeAnswerOutDto + { + QuestionList = questionList, + }; + } + /// /// 获取裁判阅片任务信息 ///