master
xiaochanghai 11 months ago
parent d21fa5e5d7
commit 2a6b046fce
  1. 12
      Tiobon.Core.Common/Helper/ExamHelper.cs
  2. 54
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.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<Ghre_ExamPaperQuestion>().Where(x => x.ExamPaperId == record.ExamPaperId).ToListAsync();
//var exampaperQuestions = await Db.Queryable<Ghre_ExamPaperQuestion>().Where(x => x.ExamPaperId == record.ExamPaperId).ToListAsync();
var exampaper = await Db.Queryable<Ghre_ExamPaper>().FirstAsync(x => x.Id == record.ExamPaperId);
var exampaperQuestions = await Db.Queryable<Ghre_ExamPaperQuestion>()
.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<Ghre_Question>().Where(x => questionIds.Contains(x.Id)).ToListAsync();
var answers = await Db.Queryable<Ghre_QuestionAnswer>()
.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;
}
}

@ -201,7 +201,11 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
extend.styleInfo.paperStyle = exampaper.Style;
extend.styleInfo.coverBackGround = exampaper.CoverBackGround;
var questions = await Db.Queryable<Ghre_ExamPaperQuestion>().Where(x => x.ExamPaperId == exampaper.Id).ToListAsync();
var questions = await Db.Queryable<Ghre_ExamPaperQuestion>()
//.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<Ghre_ExamRecord, Ghre_ExamRe
extend.styleInfo.paperStyle = exampaper.Style;
extend.styleInfo.coverBackGround = exampaper.CoverBackGround;
if (exampaper.SetMethod == DIC_EXAM_PAPER_SET_METHOD.RANDOM)
if (exampaper.SetMethod == DIC_EXAM_PAPER_SET_METHOD.RANDOM && record.Status != DIC_EXAM_RECORD_STATUS.EXAM_END)
{
await Db.Deleteable<Ghre_ExamPaperQuestion>().Where(x => x.ExamPaperId == examRecordId).ExecuteCommandAsync();
var configs = await Db.Queryable<Ghre_ExamPaperConfig>().OrderBy(x => x.TaxisNo).Where(x => x.ExamPaperId == exampaper.Id).ToListAsync();
@ -488,6 +492,7 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
ExamPaperId = examRecordId,
QuestionId = x.Id,
ConfigId = x.Id,
Score = config.Score
}).ToList();
Db.Insertable(insertExamPaperQuestions).ExecuteCommand();
@ -697,40 +702,63 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
CreateTime = DateTime.Now,
ExamRecordDetailId = id,
ExamRecordId = record.Id,
QuestionAnswerId = questionAnswers1.First(x => 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()

Loading…
Cancel
Save