From 0559988bd6e17fe8c09930a43d10217bd4ca7297 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 11 May 2022 17:59:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E7=AD=94=E6=A1=88=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/AuditingData.cs | 82 ++++++++++++++++--- .../Common/Dto/AnswerDto.cs | 14 ++++ .../Context/IRaCISDBContext.cs | 2 +- 3 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 IRaCIS.Core.Infra.EFCore/Common/Dto/AnswerDto.cs diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index a8e573af1..417059716 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -388,21 +388,81 @@ namespace IRaCIS.Core.Infra.EFCore.Common } - //Qc 问题答案 - foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(TrialQCQuestionAnswer))) + // Qc 问题答案 + if (entitys.Any(x => x.Entity.GetType() == typeof(TrialQCQuestionAnswer))) { - var entity = item.Entity as TrialQCQuestionAnswer; - var subjectvisit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.SubjectVisitId).FirstOrDefaultAsync(); + var entitylist = entitys.Where(x => x.Entity.GetType() == typeof(TrialQCQuestionAnswer)).Select(x => x.Entity as TrialQCQuestionAnswer).ToList(); + var firstentity = entitylist.FirstOrDefault(); + var subjectvisit = await _dbContext.SubjectVisit.Where(x => x.Id == firstentity.SubjectVisitId).FirstOrDefaultAsync(); subjectvisit = subjectvisit ?? new SubjectVisit(); - type = type == "Update" ? "Add" : type; - await InsertInspection(item, type, x => new DataInspection() + if (type == "Add") { - SiteId= subjectvisit.SiteId, - SubjectId= subjectvisit.SubjectId, - SubjectVisitName= subjectvisit.VisitName, - GeneralId = x.Id, - }); + await AddInspectionRecordAsync(new DataInspection() + { + SiteId = subjectvisit.SiteId, + Identification = $"{_userInfo.RequestUrl}/{ firstentity.GetType().Name}/{type}", + SubjectId = subjectvisit.SubjectId, + SubjectVisitName = subjectvisit.VisitName, + TrialId= subjectvisit.TrialId, + SubjectVisitId= subjectvisit.Id, + GeneralId = subjectvisit.Id, + }, new + { + QcQuestionAnswerCommands = await Getdata(entitylist), + }); + } + else if (type == "Update") + { + type = "Add"; + var questionids = entitylist.Where(x => x.SubjectVisitId == subjectvisit.Id).Select(x => x.Id).ToList(); + var noupdatedata = _dbContext.TrialQCQuestionAnswer.Where(x => x.SubjectVisitId == subjectvisit.Id && !questionids.Contains(x.Id)).ToList(); + entitylist.AddRange(noupdatedata); + await AddInspectionRecordAsync(new DataInspection() + { + Identification = $"{_userInfo.RequestUrl}/{ firstentity.GetType().Name}/{type}", + SiteId = subjectvisit.SiteId, + SubjectId = subjectvisit.SubjectId, + TrialId = subjectvisit.TrialId, + SubjectVisitId = subjectvisit.Id, + SubjectVisitName = subjectvisit.VisitName, + GeneralId = subjectvisit.Id, + }, new + { + QcQuestionAnswerCommands = await Getdata(entitylist), + }); + } + + async Task> Getdata(List questionAnswers) + { + var ids = questionAnswers.Select(x => x.TrialQCQuestionConfigureId).ToList(); + var trialQCQuestionConfigureDatas = await _dbContext.TrialQCQuestionConfigure.Where(x => ids.Contains(x.Id)).ToListAsync(); + var collect = questionAnswers.GroupJoin(trialQCQuestionConfigureDatas, one => one.TrialQCQuestionConfigureId, two => two.Id, (x, y) => new { one = x, two = y }) + .SelectMany( a => a.two.DefaultIfEmpty(),(c, d) => new { c = c.one, d }) + .Select(o => new AnswerDto() + { + QuestionName = o.d.QuestionName, + Answer = o.c.Answer, + }).ToList(); + return collect; + } + } + + ////Qc 问题答案 + //foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(TrialQCQuestionAnswer))) + //{ + // var entity = item.Entity as TrialQCQuestionAnswer; + // var subjectvisit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.SubjectVisitId).FirstOrDefaultAsync(); + // subjectvisit = subjectvisit ?? new SubjectVisit(); + // type = type == "Update" ? "Add" : type; + // await InsertInspection(item, type, x => new DataInspection() + // { + // SiteId= subjectvisit.SiteId, + // SubjectId= subjectvisit.SubjectId, + // SubjectVisitName= subjectvisit.VisitName, + // GeneralId = x.Id, + // }); + //} #endregion } diff --git a/IRaCIS.Core.Infra.EFCore/Common/Dto/AnswerDto.cs b/IRaCIS.Core.Infra.EFCore/Common/Dto/AnswerDto.cs new file mode 100644 index 000000000..0467f5cb3 --- /dev/null +++ b/IRaCIS.Core.Infra.EFCore/Common/Dto/AnswerDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace IRaCIS.Core.Infra.EFCore.Common.Dto +{ + public class AnswerDto + { + public string QuestionName { get; set; } + + public string Answer { get; set; } + } +} \ No newline at end of file diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 5aa1a4ede..0c4287d0d 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -263,7 +263,7 @@ namespace IRaCIS.Core.Infra.EFCore public virtual DbSet TrialQCQuestionConfigure { get; set; } public virtual DbSet QCQuestionConfigure { get; set; } - public virtual DbSet TrialQCQuestionRecord { get; set; } + public virtual DbSet TrialQCQuestionAnswer { get; set; } public virtual DbSet CheckChallengeDialog { get; set; } #endregion