From afc2b8b6b9b45fe6feb7da54712ad88e2456d253 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Mon, 20 Jun 2022 17:11:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 27 +++++++-- .../Reading/Dto/ReadingQuestionViewModel.cs | 6 ++ .../Reading/ReadingImageTaskService.cs | 59 +++++++++++++++++-- 3 files changed, 83 insertions(+), 9 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index b49df314b..277af0070 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -25,13 +25,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public ReadingCategory ReadingCategory { get; set; } - public decimal VisitNum{ get; set; } + public decimal VisitNum { get; set; } -} + } public class GetReadingImgInDto { - + public Guid? SubjectId { get; set; } [NotDefault] @@ -46,7 +46,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } } - + /// /// 返回对象 @@ -80,7 +80,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string AnswerGroup { get; set; } - + } public class GetTrialCriterionJudgeQuestionListInDto @@ -130,6 +130,23 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto // List Questions { get; set; } //} + public class GroupTaskAnswerDto + { + public Guid QuestionId { get; set; } + + public string AnswerGroup { get; set; } + + public List TaskAnswerList { get; set; } + } + + public class AnswerGroup + { + public Guid GroupId { get; set; } + + public string GroupValue { get; set; } + } + + public class TaskAnswerDto { public Guid VisitTaskId { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs index bfe3cae22..8fc31f5a9 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs @@ -441,6 +441,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public string GroupName { get; set; } + + /// + /// 答案分组 + /// + public string AnswerGroup { get; set; } + /// /// 类型 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index 966268eea..8d9fb9947 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -14,6 +14,7 @@ using Panda.DynamicWebApi.Attributes; using AutoMapper; using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Infrastructure; +using Newtonsoft.Json; namespace IRaCIS.Application.Services { @@ -310,9 +311,8 @@ namespace IRaCIS.Application.Services private async Task TriggerJudgeQuestion(Guid VisitTaskId) { var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync(); - var visitTaskList = await _visitTaskRepository.Where(x =>x.ReadingTaskState== ReadingTaskState.HaveSigned&& x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).ToListAsync(); - var visitTaskids = visitTaskList.Select(x => x.Id).ToList(); - if (visitTaskList.Count == 2) + var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync(); + if (visitTaskids.Count == 2) { var query = from questionAnswet in _readingTaskQuestionAnswerRepository.Where(x=> visitTaskids.Contains(x.VisitTaskId)) join question in _readingQuestionTrialRepository.Where(x=>x.IsJudgeQuestion) on new { ReadingQuestionTrialId= questionAnswet.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId= question.Id } @@ -323,10 +323,61 @@ namespace IRaCIS.Application.Services QuestionId= question.Id, VisitTaskId= questionAnswet.VisitTaskId, }; + var questionAnswerlist =await query.ToListAsync(); + List groupTasks = questionAnswerlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup }).Select(x => new GroupTaskAnswerDto + { + QuestionId = x.Key.QuestionId, + AnswerGroup = x.Key.AnswerGroup, + TaskAnswerList = x.ToList(), + }).ToList(); + var verificationResults = true; + foreach (var item in groupTasks) + { + if (item.TaskAnswerList.Count() != 2) + { + verificationResults = false; + break; + } + else + { + var item1= item.TaskAnswerList[0]; + var item2= item.TaskAnswerList[1]; + if (item1.Answer != item2.Answer) + { + var answerGroup = JsonConvert.DeserializeObject>(item.AnswerGroup).Select(x => new AnswerGroup() + { + GroupId = NewId.NextGuid(), + GroupValue = x + }); - + var itemAnswerGroupsitem1 = answerGroup.Where(x => x.GroupValue.Contains($"|{item1.Answer}|")); + var itemAnswerGroupsitem2 = answerGroup.Where(x => x.GroupValue.Contains($"|{item2.Answer}|")); + + var unionList = itemAnswerGroupsitem1.Union(itemAnswerGroupsitem2).ToList(); + if (unionList.Count < 1) + { + verificationResults = false; + break; + } + } + } + } + + if (!verificationResults) + { + + } } } + /// + /// 添加裁判任务 + /// + /// + private async Task SaveJudgeTask() + { + + } + } }