From 77f9bd84d7f99b41ef212b52c9c5b5eb569d2478 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 1 Dec 2022 14:45:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingQuestionService.cs | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs index 5b9a214bf..4d2a4307e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs @@ -6,6 +6,7 @@ using IRaCIS.Core.Infra.EFCore.Common; using Panda.DynamicWebApi.Attributes; using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Infrastructure; +using Newtonsoft.Json; namespace IRaCIS.Application.Services { @@ -391,6 +392,32 @@ namespace IRaCIS.Application.Services } indto.ParentTriggerValue = string.Join(',', indto.ParentTriggerValueList); indto.RelevanceValue = string.Join(',', indto.RelevanceValueList); + + + if (indto.Id != null) + { + var relationList = await GetQuestionCalculateRelation(new GetQuestionCalculateRelationInDto() + { + + TrialReadingCriterionId = indto.ReadingQuestionCriterionTrialId, + }); + + var relation = relationList.Where(x => x.QuestionId == indto.Id).FirstOrDefault(); + List calculateInfoList = new List(); + try + { + var result = JsonConvert.DeserializeObject>(indto.CalculateQuestions); + calculateInfoList = result == null ? new List() : result; + } + catch (Exception) + { + + + } + + this.VerifyCalculateRelation(relationList, indto.Id.Value); + } + var entity = await _readingQuestionTrialRepository.InsertOrUpdateAsync(indto, true); return ResponseOutput.Ok(entity.Id.ToString()); } @@ -411,6 +438,27 @@ namespace IRaCIS.Application.Services return await query.ToListAsync(); } + private void VerifyCalculateRelation(List relationList,Guid QuestionId) + { + var relation = relationList.Where(x=>x.CalculateQuestionList.Any(y=>y.QuestionId== QuestionId||y.TableQuestionId==QuestionId)).ToList(); + + if (relation.Select(x => x.QuestionId).ToList().Contains(QuestionId)) + { + throw new BusinessValidationFailedException("计算依赖循环了!"); + } + + else + { + var newrelation = relation.Clone(); + relation.ForEach(x => + { + + VerifyCalculateRelation(newrelation, QuestionId); + }); + } + + } + /// /// 获取问题计算关系 /// @@ -565,6 +613,32 @@ namespace IRaCIS.Application.Services { indto.ParentTriggerValue = string.Join(',', indto.ParentTriggerValueList); indto.RelevanceValue = string.Join(',', indto.RelevanceValueList); + + if (indto.Id != null) + { + var relationList = await GetQuestionCalculateRelation(new GetQuestionCalculateRelationInDto() + { + + ReadingQuestionId = indto.ReadingQuestionId, + }); + + var relation = relationList.Where(x => x.QuestionId == indto.Id).FirstOrDefault(); + List calculateInfoList = new List(); + try + { + var result = JsonConvert.DeserializeObject>(indto.CalculateQuestions); + calculateInfoList = result == null ? new List() : result; + } + catch (Exception) + { + + + } + + this.VerifyCalculateRelation(relationList, indto.Id.Value); + } + + var entity = await _readingTableQuestionTrialRepository.InsertOrUpdateAsync(indto, true); return ResponseOutput.Ok(entity.Id.ToString()); @@ -572,6 +646,8 @@ namespace IRaCIS.Application.Services } + + /// /// 删除项目表格问题