From 35e6a47f2daba933a2aced9c214c7d48ed8e530a Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 18 Aug 2026 09:24:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingImageTaskService.cs | 1 + .../ReadingJudgeTaskService.cs | 50 ++++++++++++++----- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 1a6b462e3..fc9e98eec 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -26,6 +26,7 @@ namespace IRaCIS.Core.Application.Service public partial class ReadingImageTaskService( IRepository _noneDicomStudyRepository, IRepository _visitTaskRepository, + IRepository _visitStageRepository, IRepository _trialRepository, IRepository _taskInstanceRepository, IRepository _noneDicomStudyFileRepository, diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 9a765d0f3..36c25cd81 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -14,6 +14,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using MimeKit; using Newtonsoft.Json; +using System.Linq.Dynamic.Core; namespace IRaCIS.Core.Application.Service { @@ -270,19 +271,44 @@ namespace IRaCIS.Core.Application.Service private async Task> GetJudgeDisplayQuestions(Guid trialReadingCriterionId, decimal visitNum, JudgeRule judgeRule) { var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.IsJudgeQuestion) - .Where(x=>x.ShowQuestion== ShowQuestion.Show) - .OrderBy(x => x.ShowOrder).ToListAsync(); - var questionIds = questionList.Select(x => x.Id).ToList(); - var visitJudgeRules = judgeRule == JudgeRule.Difference - ? await _readingQuestionVisitJudgeRuleRepository.Where(x => questionIds.Contains(x.ReadingQuestionId) && (x.VisitNum == visitNum || x.VisitNum == -1)).ToListAsync() - : new List(); + .WhereIf(visitNum == 0, x => x.LimitShow != LimitShow.FollowShow) + .WhereIf(visitNum != 0, x => x.LimitShow != LimitShow.BaseLineShow) + .Where(x=>x.LimitShow!=LimitShow.ExcludeSomeVisits||x.ExcludeShowVisitList.Contains(visitNum)) + .ToListAsync(); - return questionList.Where(x => !x.ExcludeShowVisitList.Contains(visitNum)) - .Where(x => judgeRule == JudgeRule.Consistent - ? x.JudgeType != JudgeTypeEnum.NotApplicable - : (visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.Id && rule.VisitNum == visitNum) - ?? visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.Id && rule.VisitNum == -1))?.JudgeType != JudgeTypeEnum.NotApplicable) - .ToList(); + + var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == trialReadingCriterionId).FirstNotNullAsync(); + var questionIds = questionList.Select(x => x.Id).ToList(); + var visitJudgeRules=new List(); + 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>(x.AnswerCombination.IsNullOrEmpty() ? "[]" : x.AnswerCombination), + AnswerGroup = JsonConvert.DeserializeObject>(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(); } ///