diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 082508c9f..1ce2f947d 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -1573,7 +1573,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid? QuestionId { get; set; } - public bool IsHaveChange { get; set; } = false; + /// + /// 裁判百分比或绝对值的相差值 + /// + public decimal? JudgeDifferenceValue { get; set; } + + public bool IsHaveChange { get; set; } = false; public string VisitAnswer { get; set; } = string.Empty; @@ -2267,7 +2272,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid QuestionId { get; set; } - public string AnswerGroup { get; set; } + /// + /// 裁判百分比或绝对值的相差值 + /// + public decimal? JudgeDifferenceValue { get; set; } + public string AnswerGroup { get; set; } public string AnswerCombination { get; set; } @@ -2311,7 +2320,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string AnswerCombination { get; set; } public JudgeTypeEnum JudgeType { get; set; } - } + + /// + /// 裁判百分比或绝对值的相差值 + /// + public decimal? JudgeDifferenceValue { get; set; } + } public class GetSystemReadingQuestionPageDto diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs index d44a0f8ea..5759c9ced 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs @@ -250,7 +250,9 @@ namespace IRaCIS.Application.Services .Select(y => new GlobalQuestionInfo() { - QuestionId = y.ReadingQuestionTrialId, + JudgeDifferenceValue= y.ReadingQuestionTrial.JudgeDifferenceValue, + + QuestionId = y.ReadingQuestionTrialId, QuestionName = y.ReadingQuestionTrial.QuestionName.LanguageName(y.ReadingQuestionTrial.QuestionEnName, _userInfo.IsEn_Us), QuestionEnName=y.ReadingQuestionTrial.QuestionEnName, AnswerGroup = y.ReadingQuestionTrial.AnswerGroup, @@ -290,6 +292,7 @@ namespace IRaCIS.Application.Services x.BeforeQuestionList.Add(new GlobalQuestionInfo() { QuestionId = y.Id, + JudgeDifferenceValue=y.JudgeDifferenceValue, QuestionName = y.QuestionName.LanguageName(y.QuestionEnName, _userInfo.IsEn_Us), QuestionEnName = y.QuestionEnName, AnswerGroup = y.AnswerGroup, @@ -373,7 +376,8 @@ namespace IRaCIS.Application.Services (lr.global.Select(x => x.Answer).FirstOrDefault().IsNullOrEmpty() && inDto.UsingOriginalData ? lr.question.Answer : lr.global.Select(x => x.Answer).FirstOrDefault() ), - VisitAnswer = lr.question.Answer, + JudgeDifferenceValue= lr.question.JudgeDifferenceValue, + VisitAnswer = lr.question.Answer, IsHaveChange = lr.global.Any(x=>x.QuestionId!=null&&!x.Answer.IsNullOrEmpty()) ? true : false, QuestionId = lr.question.QuestionId, QuestionName = lr.question.QuestionName.LanguageName(lr.question.QuestionEnName, _userInfo.IsEn_Us), @@ -507,6 +511,7 @@ namespace IRaCIS.Application.Services .Select(x => new CriterionDictionaryInfo() { Id = x.Id, + DictionaryId = x.DictionaryId, ChildGroup = x.Dictionary.ChildGroup, IsBaseLineUse=x.IsBaseLineUse, diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index ee7f2daca..dada71fba 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -616,6 +616,7 @@ namespace IRaCIS.Application.Services AnswerCombination = question.AnswerCombination, JudgeType = question.JudgeType, QuestionId = question.Id, + JudgeDifferenceValue=question.JudgeDifferenceValue, VisitTaskId = questionAnswer.VisitTaskId, }; var globalVisitAnswerlist = await globalVisitQuestionQuery.ToListAsync(); @@ -624,12 +625,13 @@ namespace IRaCIS.Application.Services foreach (var item in taskNums) { - List groupTasks = globalVisitAnswerlist.Where(x => x.VisitTaskNum == item).GroupBy(x => new { x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto + List groupTasks = globalVisitAnswerlist.Where(x => x.VisitTaskNum == item).GroupBy(x => new {x.JudgeDifferenceValue, x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto { QuestionId = x.Key.QuestionId, AnswerGroup = x.Key.AnswerGroup, AnswerCombination = x.Key.AnswerCombination, JudgeType = x.Key.JudgeType, + JudgeDifferenceValue=x.Key.JudgeDifferenceValue, TaskAnswerList = x.Select(y => y.Answer).ToList(), }).ToList(); noteEqual = noteEqual || ComputeJudgeResult(groupTasks); @@ -647,17 +649,19 @@ namespace IRaCIS.Application.Services AnswerCombination = question.AnswerCombination, JudgeType = question.JudgeType, QuestionId = question.Id, + JudgeDifferenceValue=question.JudgeDifferenceValue, VisitTaskId = questionAnswet.VisitTaskId, }; var questionAnswerlist = await query.ToListAsync(); // 将答案进行分组 - List groupTasks = questionAnswerlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto + List groupTasks = questionAnswerlist.GroupBy(x => new {x.JudgeDifferenceValue, x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto { QuestionId = x.Key.QuestionId, AnswerGroup = x.Key.AnswerGroup, AnswerCombination = x.Key.AnswerCombination, JudgeType = x.Key.JudgeType, + JudgeDifferenceValue=x.Key.JudgeDifferenceValue, TaskAnswerList = x.Select(y => y.Answer).ToList(), }).ToList(); noteEqual = ComputeJudgeResult(groupTasks); @@ -699,14 +703,15 @@ namespace IRaCIS.Application.Services twoItem.AfterQuestionList.Where(x => x.QuestionId != null && x.IsJudgeQuestion).ToList() ).ToList(); - List globalGroupTasks = newlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto + List globalGroupTasks = newlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination,x.JudgeDifferenceValue }).Select(x => new GroupTaskAnswerDto { QuestionId = x.Key.QuestionId!.Value, AnswerGroup = x.Key.AnswerGroup, AnswerCombination = x.Key.AnswerCombination, JudgeType = x.Key.JudgeType, TaskAnswerList = x.Select(y => y.Answer).ToList(), - }).ToList(); + JudgeDifferenceValue= x.Key.JudgeDifferenceValue, + }).ToList(); noteEqual = noteEqual || ComputeJudgeResult(globalGroupTasks); } @@ -749,7 +754,7 @@ namespace IRaCIS.Application.Services AnswerCombination = question.AnswerCombination, JudgeType = question.JudgeType, QuestionId = question.Id, - + JudgeDifferenceValue=question.JudgeDifferenceValue, }; var visitTaskQuestions = await query.ToListAsync(); @@ -758,12 +763,13 @@ namespace IRaCIS.Application.Services lastTask.AfterQuestionList.Where(x => x.QuestionId != null).ToList() ).ToList(); - List globalGroupTasks = newlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto + List globalGroupTasks = newlist.GroupBy(x => new {x.JudgeDifferenceValue, x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto { QuestionId = x.Key.QuestionId!.Value, AnswerGroup = x.Key.AnswerGroup, AnswerCombination = x.Key.AnswerCombination, JudgeType = x.Key.JudgeType, + JudgeDifferenceValue=x.Key.JudgeDifferenceValue, TaskAnswerList = x.Select(y => y.Answer).ToList(), }).ToList(); noteEqual = noteEqual || ComputeJudgeResult(globalGroupTasks); @@ -924,7 +930,42 @@ namespace IRaCIS.Application.Services } }); break; - default: + case JudgeTypeEnum.DifferenceAbsoluteValue: + var deffaultValue = taskAnswer1.IsNullOrEmptyReturn0() - taskAnswer2.IsNullOrEmptyReturn0(); + if (deffaultValue < 0) + { + deffaultValue =0 -deffaultValue; + + } + if (deffaultValue >= item.JudgeDifferenceValue) + { + noteEqual = true; + } + + break; + case JudgeTypeEnum.PercentageDifference: + var value1 = taskAnswer1.IsNullOrEmptyReturn0(); + var value2 = taskAnswer2.IsNullOrEmptyReturn0(); + if (value1 == 0 || value2 == 0) + { + noteEqual = true; + } + else + { + if (value1 < value2) + { + noteEqual = (value2 - value1) / value1 >= item.JudgeDifferenceValue; + + } + else + { + noteEqual = (value1 - value2) / value2 >= item.JudgeDifferenceValue; + } + } + + + break; + default: noteEqual = false; break; }