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; }