获取问题修改
continuous-integration/drone/push Build is passing Details

Uat_IRC_Net10
he 2026-08-18 09:24:57 +08:00
parent afeebf662b
commit 35e6a47f2d
2 changed files with 39 additions and 12 deletions

View File

@ -26,6 +26,7 @@ namespace IRaCIS.Core.Application.Service
public partial class ReadingImageTaskService( public partial class ReadingImageTaskService(
IRepository<NoneDicomStudy> _noneDicomStudyRepository, IRepository<NoneDicomStudy> _noneDicomStudyRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<VisitStage> _visitStageRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<TaskInstance> _taskInstanceRepository, IRepository<TaskInstance> _taskInstanceRepository,
IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository, IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository,

View File

@ -14,6 +14,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using MimeKit; using MimeKit;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Linq.Dynamic.Core;
namespace IRaCIS.Core.Application.Service namespace IRaCIS.Core.Application.Service
{ {
@ -270,18 +271,43 @@ namespace IRaCIS.Core.Application.Service
private async Task<List<ReadingQuestionTrial>> GetJudgeDisplayQuestions(Guid trialReadingCriterionId, decimal visitNum, JudgeRule judgeRule) private async Task<List<ReadingQuestionTrial>> GetJudgeDisplayQuestions(Guid trialReadingCriterionId, decimal visitNum, JudgeRule judgeRule)
{ {
var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.IsJudgeQuestion) var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.IsJudgeQuestion)
.Where(x=>x.ShowQuestion== ShowQuestion.Show) .WhereIf(visitNum == 0, x => x.LimitShow != LimitShow.FollowShow)
.OrderBy(x => x.ShowOrder).ToListAsync(); .WhereIf(visitNum != 0, x => x.LimitShow != LimitShow.BaseLineShow)
var questionIds = questionList.Select(x => x.Id).ToList(); .Where(x=>x.LimitShow!=LimitShow.ExcludeSomeVisits||x.ExcludeShowVisitList.Contains(visitNum))
var visitJudgeRules = judgeRule == JudgeRule.Difference .ToListAsync();
? await _readingQuestionVisitJudgeRuleRepository.Where(x => questionIds.Contains(x.ReadingQuestionId) && (x.VisitNum == visitNum || x.VisitNum == -1)).ToListAsync()
: new List<ReadingQuestionVisitJudgeRule>();
return questionList.Where(x => !x.ExcludeShowVisitList.Contains(visitNum))
.Where(x => judgeRule == JudgeRule.Consistent var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == trialReadingCriterionId).FirstNotNullAsync();
? x.JudgeType != JudgeTypeEnum.NotApplicable var questionIds = questionList.Select(x => x.Id).ToList();
: (visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.Id && rule.VisitNum == visitNum) var visitJudgeRules=new List<ReadingQuestionVisitJudgeRule>();
?? visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.Id && rule.VisitNum == -1))?.JudgeType != JudgeTypeEnum.NotApplicable) if (judgeRule == JudgeRule.Difference)
{
if (await _visitStageRepository.AnyAsync(x => x.TrialId == trialCriterion.TrialId && x.VisitNum == visitNum))
{
visitJudgeRules = await _readingQuestionVisitJudgeRuleRepository.Where(x => questionIds.Contains(x.ReadingQuestionId) && x.VisitNum == visitNum).ToListAsync();
}
else
{
visitJudgeRules = await _readingQuestionVisitJudgeRuleRepository.Where(x => questionIds.Contains(x.ReadingQuestionId) && x.VisitNum == -1).ToListAsync();
}
}
else
{
visitJudgeRules = questionList.Select(x => new ReadingQuestionVisitJudgeRule()
{
ReadingQuestionId = x.Id,
AnswerCombination = JsonConvert.DeserializeObject<List<AnswerCombinationDto>>(x.AnswerCombination.IsNullOrEmpty() ? "[]" : x.AnswerCombination),
AnswerGroup = JsonConvert.DeserializeObject<List<string>>(x.AnswerGroup.IsNullOrEmpty() ? "[]" : x.AnswerGroup),
JudgeDifferenceType = x.JudgeDifferenceType,
JudgeType = x.JudgeType,
JudgeDifferenceValue = x.JudgeDifferenceValue,
}).ToList();
}
return questionList
.Where(x => visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.Id && rule.VisitNum == -1)?.JudgeType != JudgeTypeEnum.NotApplicable)
.ToList(); .ToList();
} }