获取单个访视裁判

Test_IRC_Net10
he 2026-08-12 10:53:08 +08:00
parent 5183e30e41
commit 51b9aaa9b1
2 changed files with 73 additions and 0 deletions

View File

@ -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<SingleVisitJudgeAnswerItemDto> QuestionList { get; set; } = new List<SingleVisitJudgeAnswerItemDto>();
}
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; }

View File

@ -91,6 +91,59 @@ namespace IRaCIS.Core.Application.Service
#region 获取裁判阅片任务信息
/// <summary>
/// 获取单个访视裁判任务的 R1、R2 裁判问题答案。
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<GetSingleVisitJudgeAnswerOutDto> GetSingleVisitJudgeAnswer(GetSingleVisitJudgeAnswerInDto inDto)
{
var judgeDataInfo = await _readingJudgeInfoRepository
.Where(x => x.JudgeTaskId == inDto.VisitTaskId)
.FirstNotNullAsync();
var taskIds = new List<Guid> { 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,
};
}
/// <summary>
/// 获取裁判阅片任务信息
/// </summary>