From adaa085e5659dba47cb960762fb4ad4a4f6fd961 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 18 Aug 2026 11:19:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=BB=98=E8=AE=A4=E4=B8=8D?= =?UTF-8?q?=E9=80=82=E7=94=A8=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingQuestionService.cs | 53 +++++++++++++++++++ .../ReadingQuestionVisitJudgeRule.cs | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs index 8c99a7088..44f0b2173 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs @@ -36,6 +36,7 @@ namespace IRaCIS.Core.Application.Service IRepository _readingTaskQuestionAnswer, IRepository _previousPDFRepository, IRepository _readingQuestionVisitJudgeRuleRepository, + IRepository _visitStageRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IReadingQuestionService { @@ -713,9 +714,61 @@ namespace IRaCIS.Core.Application.Service } var entity = await _readingQuestionTrialRepository.InsertOrUpdateAsync(indto, true); + await AddNAJudgeRule(entity); return ResponseOutput.Ok(entity.Id.ToString()); } + /// + /// 添加问题的不适用规则 + /// + /// + private async Task AddNAJudgeRule(ReadingQuestionTrial entity) + { + List visitNums = new List(); + if (entity.IsJudgeQuestion) + { + var visitStageNums = await _visitStageRepository + .Where(x => x.TrialId == entity.TrialId) + .Select(x => x.VisitNum) + .Distinct() + .ToListAsync(); + + switch (entity.LimitShow) + { + case LimitShow.BaseLineShow: + visitNums = visitStageNums.Where(x => x > 0).ToList(); + visitNums.Add(-1); + break; + case LimitShow.FollowShow: + visitNums.Add(0); + break; + case LimitShow.ExcludeSomeVisits: + visitNums = entity.ExcludeShowVisitList; + break; + } + } + + if (visitNums.Count==0) + { + return; + } + + + await _readingQuestionVisitJudgeRuleRepository.BatchDeleteNoTrackingAsync(x => + x.ReadingQuestionId == entity.Id && visitNums.Contains(x.VisitNum)); + + var rules = visitNums.Select(visitNum => new ReadingQuestionVisitJudgeRule + { + Id = NewId.NextGuid(), + ReadingQuestionId = entity.Id, + VisitNum = visitNum, + JudgeType = JudgeTypeEnum.None, + }).ToList(); + + await _readingQuestionVisitJudgeRuleRepository.AddRangeAsync(rules); + await _readingQuestionVisitJudgeRuleRepository.SaveChangesAsync(); + } + /// /// 获取项目问题(项目) /// diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionVisitJudgeRule.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionVisitJudgeRule.cs index 67dcf892d..e44d8c6b1 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionVisitJudgeRule.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionVisitJudgeRule.cs @@ -21,7 +21,7 @@ public class ReadingQuestionVisitJudgeRule : BaseAddAuditEntity public Guid ReadingQuestionId { get; set; } /// - /// 访视Num + /// 访视Num (计划外是-1) /// public decimal VisitNum { get; set; }