获取单个裁判访视信息修改
continuous-integration/drone/push Build is running Details

Test_IRC_Net10
he 2026-08-12 11:07:25 +08:00
parent 51b9aaa9b1
commit 6bb4167ac7
2 changed files with 41 additions and 8 deletions

View File

@ -66,6 +66,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository,
IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<ReadingQuestionVisitJudgeRule> _readingQuestionVisitJudgeRuleRepository,
IRepository<ReadingQuestionSystem> _readingQuestionSystem,
IRepository<CriterionKeyFileRead> _criterionKeyFileReadRepository,
IRepository<TrialCriterionKeyFile> _trialCriterionKeyFileRepository,

View File

@ -93,7 +93,7 @@ namespace IRaCIS.Core.Application.Service
#region 获取裁判阅片任务信息
/// <summary>
/// 获取单访视裁判任务的 R1、R2 裁判问题答案
/// 获取单访视裁判答案
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
@ -105,25 +105,57 @@ namespace IRaCIS.Core.Application.Service
.FirstNotNullAsync();
var taskIds = new List<Guid> { judgeDataInfo.TaskIdOne, judgeDataInfo.TaskIdTwo };
var trialReadingCriterionId = await _visitTaskRepository
var taskInfo = await _visitTaskRepository
.Where(x => x.Id == judgeDataInfo.TaskIdOne)
.Select(x => x.TrialReadingCriterionId)
.Select(x => new
{
x.TrialReadingCriterionId,
x.VisitTaskNum,
})
.FirstNotNullAsync();
var judgeRule = await _readingQuestionCriterionTrialRepository
.Where(x => x.Id == taskInfo.TrialReadingCriterionId)
.Select(x => x.JudgeRuleEnum)
.FirstNotNullAsync();
var questionList = await _readingQuestionTrialRepository
.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.IsJudgeQuestion)
.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.IsJudgeQuestion)
.OrderBy(x => x.ShowOrder)
.Select(x => new SingleVisitJudgeAnswerItemDto
.Select(x => new
{
ReadingQuestionId = x.Id,
QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us),
ShowOrder = x.ShowOrder,
x.JudgeType,
x.ExcludeShowVisitList,
})
.ToListAsync();
var questionIds = questionList.Select(x => x.ReadingQuestionId).ToList();
var visitJudgeRules = judgeRule == JudgeRule.Difference
? await _readingQuestionVisitJudgeRuleRepository
.Where(x => questionIds.Contains(x.ReadingQuestionId) && (x.VisitNum == taskInfo.VisitTaskNum || x.VisitNum == -1))
.ToListAsync()
: new List<ReadingQuestionVisitJudgeRule>();
var displayQuestions = questionList
.Where(x => !x.ExcludeShowVisitList.Contains(taskInfo.VisitTaskNum))
.Where(x => judgeRule == JudgeRule.Consistent
? x.JudgeType != JudgeTypeEnum.NotApplicable
: (visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.ReadingQuestionId && rule.VisitNum == taskInfo.VisitTaskNum)
?? visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.ReadingQuestionId && rule.VisitNum == -1))?.JudgeType != JudgeTypeEnum.NotApplicable)
.Select(x => new SingleVisitJudgeAnswerItemDto
{
ReadingQuestionId = x.ReadingQuestionId,
QuestionName = x.QuestionName,
ShowOrder = x.ShowOrder,
})
.ToList();
var displayQuestionIds = displayQuestions.Select(x => x.ReadingQuestionId).ToList();
var answerList = await _readingTaskQuestionAnswerRepository
.Where(x => taskIds.Contains(x.VisitTaskId) && questionIds.Contains(x.ReadingQuestionTrialId))
.Where(x => taskIds.Contains(x.VisitTaskId) && displayQuestionIds.Contains(x.ReadingQuestionTrialId))
.Select(x => new
{
x.VisitTaskId,
@ -132,7 +164,7 @@ namespace IRaCIS.Core.Application.Service
})
.ToListAsync();
questionList.ForEach(question =>
displayQuestions.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;
@ -140,7 +172,7 @@ namespace IRaCIS.Core.Application.Service
return new GetSingleVisitJudgeAnswerOutDto
{
QuestionList = questionList,
QuestionList = displayQuestions,
};
}