From 2a6b046fced9a6ac5e5d48e85a619c9f9e2be5cf Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Mon, 5 Aug 2024 11:08:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tiobon.Core.Common/Helper/ExamHelper.cs | 12 ++++- .../Ghre/Ghre_ExamRecordServices.cs | 54 ++++++++++++++----- 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/Tiobon.Core.Common/Helper/ExamHelper.cs b/Tiobon.Core.Common/Helper/ExamHelper.cs index ea282d4c..c51a6eec 100644 --- a/Tiobon.Core.Common/Helper/ExamHelper.cs +++ b/Tiobon.Core.Common/Helper/ExamHelper.cs @@ -1,5 +1,6 @@ using SqlSugar; using Tiobon.Core.Model.Models; +using static Tiobon.Core.Model.Consts; namespace Tiobon.Core.Common.Helper; @@ -9,7 +10,14 @@ public class ExamHelper { var questionIds = details.Where(x => x.QuestionId != null).Select(m => m.QuestionId).Distinct().ToList(); - var exampaperQuestions = await Db.Queryable().Where(x => x.ExamPaperId == record.ExamPaperId).ToListAsync(); + //var exampaperQuestions = await Db.Queryable().Where(x => x.ExamPaperId == record.ExamPaperId).ToListAsync(); + + var exampaper = await Db.Queryable().FirstAsync(x => x.Id == record.ExamPaperId); + var exampaperQuestions = await Db.Queryable() + .Where(x => (x.ExamPaperId == exampaper.Id && exampaper.SetMethod == DIC_EXAM_PAPER_SET_METHOD.MANUAL) || (x.ExamPaperId == record.Id && exampaper.SetMethod == DIC_EXAM_PAPER_SET_METHOD.RANDOM)) + .ToListAsync(); + + var questions = await Db.Queryable().Where(x => questionIds.Contains(x.Id)).ToListAsync(); var answers = await Db.Queryable() .Where(x => x.QuestionId != null && questionIds.Contains(x.QuestionId.Value) && x.IsCorrect == true) @@ -75,7 +83,7 @@ public class ExamHelper break; } }); - record.Score = score; + record.Score = score ?? 0; } } diff --git a/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs b/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs index a864d5bf..5b08e356 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs @@ -201,7 +201,11 @@ public class Ghre_ExamRecordServices : BaseServices().Where(x => x.ExamPaperId == exampaper.Id).ToListAsync(); + var questions = await Db.Queryable() + //.Where(x => x.ExamPaperId == exampaper.Id) + .Where(x => (x.ExamPaperId == exampaper.Id && exampaper.SetMethod == DIC_EXAM_PAPER_SET_METHOD.MANUAL) || (x.ExamPaperId == examRecordId && exampaper.SetMethod == DIC_EXAM_PAPER_SET_METHOD.RANDOM)) + + .ToListAsync(); var previews = questions.Where(x => x.QuestionId != null).Select(x => new DefaultGhre_ExamPaperPreview() { Id = x.Id, @@ -461,7 +465,7 @@ public class Ghre_ExamRecordServices : BaseServices().Where(x => x.ExamPaperId == examRecordId).ExecuteCommandAsync(); var configs = await Db.Queryable().OrderBy(x => x.TaxisNo).Where(x => x.ExamPaperId == exampaper.Id).ToListAsync(); @@ -488,6 +492,7 @@ public class Ghre_ExamRecordServices : BaseServices x.QuestionNo == answer.value)?.Id, + QuestionAnswerId = answer.value.IsNull() ? null : questionAnswers1.First(x => x.QuestionNo == answer.value)?.Id, }); break; case "Multiple": var TaxisNo = 100; - foreach (var value in answer.value1) - { + if (answer.value1.IsNull() || (!answer.value1.IsNull() && !answer.value1.Any())) recordDetailAnswers.Add(new Ghre_ExamRecordAnswer() { Id = SnowFlakeSingle.instance.getID(), CreateTime = DateTime.Now, ExamRecordDetailId = id, ExamRecordId = record.Id, - QuestionAnswerId = questionAnswers1.First(x => x.QuestionNo == value)?.Id, + AnswerContent = null, TaxisNo = TaxisNo }); - TaxisNo += 100; - } + else + foreach (var value in answer.value1) + { + recordDetailAnswers.Add(new Ghre_ExamRecordAnswer() + { + Id = SnowFlakeSingle.instance.getID(), + CreateTime = DateTime.Now, + ExamRecordDetailId = id, + ExamRecordId = record.Id, + QuestionAnswerId = value.IsNull() ? null : questionAnswers1.First(x => x.QuestionNo == value)?.Id, + TaxisNo = TaxisNo + }); + TaxisNo += 100; + } + break; case "Completion": var TaxisNo1 = 100; - foreach (var value in answer.value1) - { + if (answer.value1.IsNull() || (!answer.value1.IsNull() && !answer.value1.Any())) recordDetailAnswers.Add(new Ghre_ExamRecordAnswer() { Id = SnowFlakeSingle.instance.getID(), CreateTime = DateTime.Now, ExamRecordDetailId = id, ExamRecordId = record.Id, - AnswerContent = value, + AnswerContent = null, TaxisNo = TaxisNo1 }); - TaxisNo1 += 100; - } + else + foreach (var value in answer.value1) + { + recordDetailAnswers.Add(new Ghre_ExamRecordAnswer() + { + Id = SnowFlakeSingle.instance.getID(), + CreateTime = DateTime.Now, + ExamRecordDetailId = id, + ExamRecordId = record.Id, + AnswerContent = value, + TaxisNo = TaxisNo1 + }); + TaxisNo1 += 100; + } break; case "ShortAnswer": recordDetailAnswers.Add(new Ghre_ExamRecordAnswer()