diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index 90070bc88..e96d43145 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -654,6 +654,8 @@ namespace IRaCIS.Core.Application.Contracts /// 修约小数点 /// public int? DigitPlaces { get; set; } + + public bool IsSignSave { get; set; } = false; } public class SetTrialReadingInfoInDto diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index ca6c1c1d0..225999068 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -161,6 +161,21 @@ namespace IRaCIS.Core.Application /// public async Task SetTrialReadingCriterion(SetTrialReadingCriterionInDto inDto) { + + if (inDto.IsSignSave) + { + var criterionFormType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialCriterionId).Select(x => x.FormType).FirstOrDefaultAsync(); + var count = _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialCriterionId) + .WhereIf(criterionFormType == FormType.SinglePage, x => x.ReadingCriterionPageId == null) + .WhereIf(criterionFormType == FormType.MultiplePage, x => x.ReadingCriterionPageId != null).Count(); + + if (count == 0) + { + throw new BusinessValidationFailedException("当前标准下未配置问题"); + } + } + + await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(inDto.TrialCriterionId, x => new ReadingQuestionCriterionTrial() {