新增 预自动评分

master
xiaochanghai 12 months ago
parent 8c29658f1b
commit 43d46a5bd9
  1. 2632
      Model/Tiobon.Web.pdm
  2. 14
      Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordAnswerController.cs
  3. 235
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  4. 5
      Tiobon.Core.Api/Tiobon.Core.xml
  5. 49
      Tiobon.Core.Common/Helper/ExamHelper.cs
  6. 12
      Tiobon.Core.IServices/Ghre/IGhre_ExamRecordAnswerServices.cs
  7. 131
      Tiobon.Core.Model/Base/Ghre/Ghre_ExamRecordAnswer.Dto.Base.cs
  8. 15
      Tiobon.Core.Model/Base/Ghre/Ghre_ExamRecordDetail.Dto.Base.cs
  9. 27
      Tiobon.Core.Model/Edit/Ghre/Ghre_ExamRecordAnswer.Dto.EditInput.cs
  10. 2
      Tiobon.Core.Model/Edit/Ghre/Ghre_ExamRecordDetail.Dto.EditInput.cs
  11. 27
      Tiobon.Core.Model/Insert/Ghre/Ghre_ExamRecordAnswer.Dto.InsertInput.cs
  12. 2
      Tiobon.Core.Model/Insert/Ghre/Ghre_ExamRecordDetail.Dto.InsertInput.cs
  13. 133
      Tiobon.Core.Model/Models/Ghre/Ghre_ExamRecordAnswer.cs
  14. 15
      Tiobon.Core.Model/Models/Ghre/Ghre_ExamRecordDetail.cs
  15. 34
      Tiobon.Core.Model/View/Ghre/Ghre_ExamRecordAnswer.Dto.View.cs
  16. 18
      Tiobon.Core.Model/View/Ghre/Ghre_ExamRecordDetail.Dto.View.cs
  17. 1
      Tiobon.Core.Serilog/Sink/LogBatchingSink.cs
  18. 23
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordAnswerServices.cs
  19. 23
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs
  20. 7
      Tiobon.Core.Services/Ghre/Ghre_ExamServices.cs
  21. 235
      Tiobon.Core/Tiobon.Core.Model.xml
  22. 5
      Tiobon.Core/Tiobon.Core.xml

File diff suppressed because it is too large Load Diff

@ -0,0 +1,14 @@
namespace Tiobon.Core.Api.Controllers;
/// <summary>
/// Ghre_ExamRecordAnswer(Controller)
/// </summary>
[Route("api/[controller]")]
[ApiController, GlobalActionFilter]
[Authorize(Permissions.Name), ApiExplorerSettings(GroupName = Grouping.GroupName_Ghre)]
public class Ghre_ExamRecordAnswerController : BaseController<IGhre_ExamRecordAnswerServices, Ghre_ExamRecordAnswer, Ghre_ExamRecordAnswerDto, InsertGhre_ExamRecordAnswerInput, EditGhre_ExamRecordAnswerInput>
{
public Ghre_ExamRecordAnswerController(IGhre_ExamRecordAnswerServices service) : base(service)
{
}
}

@ -2420,6 +2420,101 @@
预留字段12
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase">
<summary>
Ghre_ExamRecordAnswer (Dto.Base)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.ExamRecordDetailId">
<summary>
答题记录明细ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.QuestionAnswerId">
<summary>
题目答案ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.AnswerContent">
<summary>
答案内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.TaxisNo">
<summary>
排序号
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.RemarkSz">
<summary>
备注
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.IsDefault">
<summary>
默认标志
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse1">
<summary>
预留字段1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse2">
<summary>
预留字段2
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse3">
<summary>
预留字段3
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse4">
<summary>
预留字段4
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse5">
<summary>
预留字段5
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse6">
<summary>
预留字段6
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse7">
<summary>
预留字段7
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse8">
<summary>
预留字段8
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse9">
<summary>
预留字段9
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse10">
<summary>
预留字段10
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.ReverseI1">
<summary>
预留字段11
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.ReverseI2">
<summary>
预留字段12
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailBase">
<summary>
Ghre_ExamRecordDetail (Dto.Base)
@ -2450,16 +2545,6 @@
员工ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailBase.QuestionAnswerId">
<summary>
题目答案ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailBase.AnswerContent">
<summary>
答案内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailBase.Score">
<summary>
得分
@ -4112,6 +4197,11 @@
考试记录 (Dto.EditInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordAnswerInput">
<summary>
Ghre_ExamRecordAnswer (Dto.EditInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordDetailInput">
<summary>
Ghre_ExamRecordDetail (Dto.EditInput)
@ -4257,6 +4347,11 @@
考试记录 (Dto.InsertInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordAnswerInput">
<summary>
Ghre_ExamRecordAnswer (Dto.InsertInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordDetailInput">
<summary>
Ghre_ExamRecordDetail (Dto.InsertInput)
@ -6916,6 +7011,101 @@
预留字段12
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer">
<summary>
Ghre_ExamRecordAnswer (Model)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.ExamRecordDetailId">
<summary>
答题记录明细ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.QuestionAnswerId">
<summary>
题目答案ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.AnswerContent">
<summary>
答案内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.TaxisNo">
<summary>
排序号
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.RemarkSz">
<summary>
备注
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.IsDefault">
<summary>
默认标志
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse1">
<summary>
预留字段1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse2">
<summary>
预留字段2
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse3">
<summary>
预留字段3
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse4">
<summary>
预留字段4
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse5">
<summary>
预留字段5
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse6">
<summary>
预留字段6
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse7">
<summary>
预留字段7
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse8">
<summary>
预留字段8
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse9">
<summary>
预留字段9
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse10">
<summary>
预留字段10
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.ReverseI1">
<summary>
预留字段11
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.ReverseI2">
<summary>
预留字段12
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDetail">
<summary>
Ghre_ExamRecordDetail (Model)
@ -6946,16 +7136,6 @@
员工ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetail.QuestionAnswerId">
<summary>
题目答案ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetail.AnswerContent">
<summary>
答案内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetail.Score">
<summary>
得分
@ -9602,6 +9782,21 @@
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerDto">
<summary>
Ghre_ExamRecordAnswer(Dto.View)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailDto">
<summary>
Ghre_ExamRecordDetail(Dto.View)

@ -771,6 +771,11 @@
试卷题目(Controller)
</summary>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordAnswerController">
<summary>
Ghre_ExamRecordAnswer(Controller)
</summary>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController">
<summary>
考试记录(Controller)

@ -5,35 +5,29 @@ namespace Tiobon.Core.Common.Helper;
public class ExamHelper
{
public static async Task SystemMarkAsync(ISqlSugarClient Db, Ghre_ExamRecord record, List<Ghre_ExamRecordDetail> details)
public static async Task SystemMarkAsync(ISqlSugarClient Db, Ghre_ExamRecord record, List<Ghre_ExamRecordDetail> details, List<Ghre_ExamRecordAnswer> recordAnswers)
{
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 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).ToListAsync();
var answers = await Db.Queryable<Ghre_QuestionAnswer>()
.Where(x => x.QuestionId != null && questionIds.Contains(x.QuestionId.Value) && x.IsCorrect == true)
.ToListAsync();
decimal? score = 0;
var detailGroups = details.GroupBy(m => m.QuestionId)
.Select(m => new
{
m.FirstOrDefault()?.QuestionId,
List = m.OrderBy(x => x.TaxisNo).ToList()
})
.ToList();
detailGroups.ForEach(group =>
details.ForEach(detail =>
{
var question = questions.FirstOrDefault(x => x.Id == group.QuestionId);
var detail = details.Where(x => x.QuestionId == group.QuestionId).First();
var question = questions.FirstOrDefault(x => x.Id == detail.QuestionId);
detail.IsCorrect = false;
detail.Score = 0;
var exampaperQuestion = exampaperQuestions.FirstOrDefault(x => x.QuestionId == detail.QuestionId);
switch (question.QuestionType)
{
case "Completion":
var completionAnswers = answers.OrderBy(x => x.TaxisNo).Where(x => x.QuestionId == group.QuestionId).ToList();
var contents = group.List.Select(x => x.AnswerContent).ToList();
var completionAnswers = answers.OrderBy(x => x.TaxisNo).Where(x => x.QuestionId == detail.QuestionId).ToList();
var contents = recordAnswers.Where(x => x.ExamRecordDetailId == detail.Id).Select(x => x.AnswerContent).ToList();
var count = completionAnswers.Count;
if (contents.Count == count)
{
@ -43,18 +37,17 @@ public class ExamHelper
if (count == 0)
{
var exampaperQuestion = exampaperQuestions.FirstOrDefault(x => x.QuestionId == group.QuestionId);
score += exampaperQuestion.Score;
detail.Score = exampaperQuestion.Score;
score += exampaperQuestion?.Score;
detail.Score = exampaperQuestion?.Score;
detail.IsCorrect = true;
}
}
break;
case "ShortAnswer":
if (!string.IsNullOrWhiteSpace(group.List.First().AnswerContent))
if (recordAnswers.Where(x => x.ExamRecordDetailId == detail.Id).Any())
{
var completionAnswers1 = answers.OrderBy(x => x.TaxisNo).Where(x => x.QuestionId == group.QuestionId).ToList();
var content = group.List.First().AnswerContent;
var completionAnswers1 = answers.OrderBy(x => x.TaxisNo).Where(x => x.QuestionId == detail.QuestionId).ToList();
var content = recordAnswers.Where(x => x.ExamRecordDetailId == detail.Id).First().AnswerContent;
var count1 = completionAnswers1.Count;
for (int i = 0; i < completionAnswers1.Count; i++)
@ -63,22 +56,20 @@ public class ExamHelper
if (count1 == 0)
{
var exampaperQuestion = exampaperQuestions.FirstOrDefault(x => x.QuestionId == group.QuestionId);
score += exampaperQuestion.Score;
detail.Score = exampaperQuestion.Score;
score += exampaperQuestion?.Score;
detail.Score = exampaperQuestion?.Score;
detail.IsCorrect = true;
}
}
break;
default:
var questionAnswerIds = group.List.Where(x => x.QuestionId != null).Select(m => m.QuestionAnswerId).ToList();
var questionAnswerIds = recordAnswers.Where(x => x.ExamRecordDetailId == detail.Id && x.QuestionAnswerId != null).Select(m => m.QuestionAnswerId).ToList();
if (questionAnswerIds.Count == answers.Where(x => questionAnswerIds.Contains(x.Id)).Count())
if (questionAnswerIds.Count == answers.Where(x => x.QuestionId == detail.QuestionId).Count())
{
var exampaperQuestion = exampaperQuestions.FirstOrDefault(x => x.QuestionId == group.QuestionId);
score += exampaperQuestion.Score;
detail.Score = exampaperQuestion.Score;
score += exampaperQuestion?.Score;
detail.Score = exampaperQuestion?.Score;
detail.IsCorrect = true;
}
break;

@ -0,0 +1,12 @@
using Tiobon.Core.IServices.BASE;
using Tiobon.Core.Model.Models;
namespace Tiobon.Core.IServices
{
/// <summary>
/// Ghre_ExamRecordAnswer(自定义服务接口)
/// </summary>
public interface IGhre_ExamRecordAnswerServices :IBaseServices<Ghre_ExamRecordAnswer, Ghre_ExamRecordAnswerDto, InsertGhre_ExamRecordAnswerInput, EditGhre_ExamRecordAnswerInput>
{
}
}

@ -0,0 +1,131 @@
/* ,
* Ghre_ExamRecordAnswer.cs
*
* N / A
* Ghre_ExamRecordAnswer
*
* Ver
*
*V0.01 2024/7/9 13:45:26 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
*  
* SimonHsiao
*
*/
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Tiobon.Core.Model.Models
{
/// <summary>
/// Ghre_ExamRecordAnswer (Dto.Base)
/// </summary>
public class Ghre_ExamRecordAnswerBase
{
/// <summary>
/// 答题记录明细ID
/// </summary>
public long? ExamRecordDetailId { get; set; }
/// <summary>
/// 题目答案ID
/// </summary>
public long? QuestionAnswerId { get; set; }
/// <summary>
/// 答案内容
/// </summary>
[Display(Name = "AnswerContent"), Description("答案内容"), MaxLength(2000, ErrorMessage = "答案内容 不能超过 2000 个字符")]
public string AnswerContent { get; set; }
/// <summary>
/// 排序号
/// </summary>
public int? TaxisNo { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "RemarkSz"), Description("备注"), MaxLength(2000, ErrorMessage = "备注 不能超过 2000 个字符")]
public string RemarkSz { get; set; }
/// <summary>
/// 默认标志
/// </summary>
public int? IsDefault { get; set; }
/// <summary>
/// 预留字段1
/// </summary>
[Display(Name = "Reverse1"), Description("预留字段1"), MaxLength(1000, ErrorMessage = "预留字段1 不能超过 1000 个字符")]
public string Reverse1 { get; set; }
/// <summary>
/// 预留字段2
/// </summary>
[Display(Name = "Reverse2"), Description("预留字段2"), MaxLength(1000, ErrorMessage = "预留字段2 不能超过 1000 个字符")]
public string Reverse2 { get; set; }
/// <summary>
/// 预留字段3
/// </summary>
[Display(Name = "Reverse3"), Description("预留字段3"), MaxLength(1000, ErrorMessage = "预留字段3 不能超过 1000 个字符")]
public string Reverse3 { get; set; }
/// <summary>
/// 预留字段4
/// </summary>
[Display(Name = "Reverse4"), Description("预留字段4"), MaxLength(1000, ErrorMessage = "预留字段4 不能超过 1000 个字符")]
public string Reverse4 { get; set; }
/// <summary>
/// 预留字段5
/// </summary>
[Display(Name = "Reverse5"), Description("预留字段5"), MaxLength(1000, ErrorMessage = "预留字段5 不能超过 1000 个字符")]
public string Reverse5 { get; set; }
/// <summary>
/// 预留字段6
/// </summary>
[Display(Name = "Reverse6"), Description("预留字段6"), MaxLength(1000, ErrorMessage = "预留字段6 不能超过 1000 个字符")]
public string Reverse6 { get; set; }
/// <summary>
/// 预留字段7
/// </summary>
[Display(Name = "Reverse7"), Description("预留字段7"), MaxLength(1000, ErrorMessage = "预留字段7 不能超过 1000 个字符")]
public string Reverse7 { get; set; }
/// <summary>
/// 预留字段8
/// </summary>
[Display(Name = "Reverse8"), Description("预留字段8"), MaxLength(1000, ErrorMessage = "预留字段8 不能超过 1000 个字符")]
public string Reverse8 { get; set; }
/// <summary>
/// 预留字段9
/// </summary>
[Display(Name = "Reverse9"), Description("预留字段9"), MaxLength(1000, ErrorMessage = "预留字段9 不能超过 1000 个字符")]
public string Reverse9 { get; set; }
/// <summary>
/// 预留字段10
/// </summary>
[Display(Name = "Reverse10"), Description("预留字段10"), MaxLength(1000, ErrorMessage = "预留字段10 不能超过 1000 个字符")]
public string Reverse10 { get; set; }
/// <summary>
/// 预留字段11
/// </summary>
public int? ReverseI1 { get; set; }
/// <summary>
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
}
}

@ -6,7 +6,7 @@
*
* Ver
*
*V0.01 2024/5/31 17:42:51 SimonHsiao
*V0.01 2024/7/9 13:45:10 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
@ -52,17 +52,6 @@ namespace Tiobon.Core.Model.Models
/// </summary>
public long? StaffId { get; set; }
/// <summary>
/// 题目答案ID
/// </summary>
public long? QuestionAnswerId { get; set; }
/// <summary>
/// 答案内容
/// </summary>
[Display(Name = "AnswerContent"), Description("答案内容"), MaxLength(256, ErrorMessage = "答案内容 不能超过 256 个字符")]
public string AnswerContent { get; set; }
/// <summary>
/// 得分
/// </summary>
@ -83,7 +72,7 @@ namespace Tiobon.Core.Model.Models
/// <summary>
/// 排序号
/// </summary>
public bool? TaxisNo { get; set; }
public int? TaxisNo { get; set; }
/// <summary>
/// 备注

@ -0,0 +1,27 @@
/* ,
* Ghre_ExamRecordAnswer.cs
*
* N / A
* Ghre_ExamRecordAnswer
*
* Ver
*
*V0.01 2024/7/9 13:45:26 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
*  
* SimonHsiao
*
*/
namespace Tiobon.Core.Model.Models
{
/// <summary>
/// Ghre_ExamRecordAnswer (Dto.EditInput)
/// </summary>
public class EditGhre_ExamRecordAnswerInput : Ghre_ExamRecordAnswerBase
{
}
}

@ -6,7 +6,7 @@
*
* Ver
*
*V0.01 2024/5/31 17:42:51 SimonHsiao
*V0.01 2024/7/9 13:45:10 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*

@ -0,0 +1,27 @@
/* ,
* Ghre_ExamRecordAnswer.cs
*
* N / A
* Ghre_ExamRecordAnswer
*
* Ver
*
*V0.01 2024/7/9 13:45:26 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
*  
* SimonHsiao
*
*/
namespace Tiobon.Core.Model.Models
{
/// <summary>
/// Ghre_ExamRecordAnswer (Dto.InsertInput)
/// </summary>
public class InsertGhre_ExamRecordAnswerInput : Ghre_ExamRecordAnswerBase
{
}
}

@ -6,7 +6,7 @@
*
* Ver
*
*V0.01 2024/5/31 17:42:51 SimonHsiao
*V0.01 2024/7/9 13:45:10 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*

@ -0,0 +1,133 @@
/* ,
* Ghre_ExamRecordAnswer.cs
*
* N / A
* Ghre_ExamRecordAnswer
*
* Ver
*
*V0.01 2024/7/9 13:45:26 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
*  
* SimonHsiao
*
*/
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using SqlSugar;
namespace Tiobon.Core.Model.Models
{
/// <summary>
/// Ghre_ExamRecordAnswer (Model)
/// </summary>
[SugarTable("Ghre_ExamRecordAnswer", "Ghre_ExamRecordAnswer"), Entity(TableCnName = "Ghre_ExamRecordAnswer", TableName = "Ghre_ExamRecordAnswer")]
public class Ghre_ExamRecordAnswer : BasePoco
{
/// <summary>
/// 答题记录明细ID
/// </summary>
public long? ExamRecordDetailId { get; set; }
/// <summary>
/// 题目答案ID
/// </summary>
public long? QuestionAnswerId { get; set; }
/// <summary>
/// 答案内容
/// </summary>
[Display(Name = "AnswerContent"), Description("答案内容"), MaxLength(2000, ErrorMessage = "答案内容 不能超过 2000 个字符")]
public string AnswerContent { get; set; }
/// <summary>
/// 排序号
/// </summary>
public int? TaxisNo { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "RemarkSz"), Description("备注"), MaxLength(2000, ErrorMessage = "备注 不能超过 2000 个字符")]
public string RemarkSz { get; set; }
/// <summary>
/// 默认标志
/// </summary>
public int? IsDefault { get; set; }
/// <summary>
/// 预留字段1
/// </summary>
[Display(Name = "Reverse1"), Description("预留字段1"), MaxLength(1000, ErrorMessage = "预留字段1 不能超过 1000 个字符")]
public string Reverse1 { get; set; }
/// <summary>
/// 预留字段2
/// </summary>
[Display(Name = "Reverse2"), Description("预留字段2"), MaxLength(1000, ErrorMessage = "预留字段2 不能超过 1000 个字符")]
public string Reverse2 { get; set; }
/// <summary>
/// 预留字段3
/// </summary>
[Display(Name = "Reverse3"), Description("预留字段3"), MaxLength(1000, ErrorMessage = "预留字段3 不能超过 1000 个字符")]
public string Reverse3 { get; set; }
/// <summary>
/// 预留字段4
/// </summary>
[Display(Name = "Reverse4"), Description("预留字段4"), MaxLength(1000, ErrorMessage = "预留字段4 不能超过 1000 个字符")]
public string Reverse4 { get; set; }
/// <summary>
/// 预留字段5
/// </summary>
[Display(Name = "Reverse5"), Description("预留字段5"), MaxLength(1000, ErrorMessage = "预留字段5 不能超过 1000 个字符")]
public string Reverse5 { get; set; }
/// <summary>
/// 预留字段6
/// </summary>
[Display(Name = "Reverse6"), Description("预留字段6"), MaxLength(1000, ErrorMessage = "预留字段6 不能超过 1000 个字符")]
public string Reverse6 { get; set; }
/// <summary>
/// 预留字段7
/// </summary>
[Display(Name = "Reverse7"), Description("预留字段7"), MaxLength(1000, ErrorMessage = "预留字段7 不能超过 1000 个字符")]
public string Reverse7 { get; set; }
/// <summary>
/// 预留字段8
/// </summary>
[Display(Name = "Reverse8"), Description("预留字段8"), MaxLength(1000, ErrorMessage = "预留字段8 不能超过 1000 个字符")]
public string Reverse8 { get; set; }
/// <summary>
/// 预留字段9
/// </summary>
[Display(Name = "Reverse9"), Description("预留字段9"), MaxLength(1000, ErrorMessage = "预留字段9 不能超过 1000 个字符")]
public string Reverse9 { get; set; }
/// <summary>
/// 预留字段10
/// </summary>
[Display(Name = "Reverse10"), Description("预留字段10"), MaxLength(1000, ErrorMessage = "预留字段10 不能超过 1000 个字符")]
public string Reverse10 { get; set; }
/// <summary>
/// 预留字段11
/// </summary>
public int? ReverseI1 { get; set; }
/// <summary>
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
}
}

@ -6,7 +6,7 @@
*
* Ver
*
*V0.01 2024/5/31 17:42:51 SimonHsiao
*V0.01 2024/7/9 13:45:10 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
@ -54,17 +54,6 @@ namespace Tiobon.Core.Model.Models
/// </summary>
public long? StaffId { get; set; }
/// <summary>
/// 题目答案ID
/// </summary>
public long? QuestionAnswerId { get; set; }
/// <summary>
/// 答案内容
/// </summary>
[Display(Name = "AnswerContent"), Description("答案内容"), MaxLength(256, ErrorMessage = "答案内容 不能超过 256 个字符")]
public string AnswerContent { get; set; }
/// <summary>
/// 得分
/// </summary>
@ -85,7 +74,7 @@ namespace Tiobon.Core.Model.Models
/// <summary>
/// 排序号
/// </summary>
public bool? TaxisNo { get; set; }
public int? TaxisNo { get; set; }
/// <summary>
/// 备注

@ -0,0 +1,34 @@
/* ,
* Ghre_ExamRecordAnswer.cs
*
* N / A
* Ghre_ExamRecordAnswer
*
* Ver
*
*V0.01 2024/7/9 13:45:26 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
*  
* SimonHsiao
*
*/
namespace Tiobon.Core.Model.Models;
/// <summary>
/// Ghre_ExamRecordAnswer(Dto.View)
/// </summary>
public class Ghre_ExamRecordAnswerDto : Ghre_ExamRecordAnswer
{
/// <summary>
/// 创建信息
/// </summary>
public string CreateDataInfo { get; set; }
/// <summary>
/// 修改信息
/// </summary>
public string UpdateDataInfo { get; set; }
}

@ -6,7 +6,7 @@
*
* Ver
*
*V0.01 2024/5/31 17:42:51 SimonHsiao
*V0.01 2024/7/9 13:45:10 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
@ -22,13 +22,13 @@ namespace Tiobon.Core.Model.Models;
/// </summary>
public class Ghre_ExamRecordDetailDto : Ghre_ExamRecordDetail
{
/// <summary>
/// 创建信息
/// </summary>
public string CreateDataInfo { get; set; }
/// <summary>
/// 创建信息
/// </summary>
public string CreateDataInfo { get; set; }
/// <summary>
/// 修改信息
/// </summary>
public string UpdateDataInfo { get; set; }
/// <summary>
/// 修改信息
/// </summary>
public string UpdateDataInfo { get; set; }
}

@ -19,6 +19,7 @@ public class LogBatchingSink : IBatchedLogEventSink
}
public Task OnEmptyBatchAsync()
{
return Task.CompletedTask;
}

@ -0,0 +1,23 @@

using Tiobon.Core.IServices;
using Tiobon.Core.Model.Models;
using Tiobon.Core.Services.BASE;
using Tiobon.Core.IRepository.Base;
using Tiobon.Core.Common.Caches;
namespace Tiobon.Core.Services
{
/// <summary>
/// Ghre_ExamRecordAnswer (服务)
/// </summary>
public class Ghre_ExamRecordAnswerServices : BaseServices<Ghre_ExamRecordAnswer, Ghre_ExamRecordAnswerDto, InsertGhre_ExamRecordAnswerInput, EditGhre_ExamRecordAnswerInput>, IGhre_ExamRecordAnswerServices
{
private readonly IBaseRepository<Ghre_ExamRecordAnswer> _dal;
public Ghre_ExamRecordAnswerServices(ICaching caching, IBaseRepository<Ghre_ExamRecordAnswer> dal)
{
this._dal = dal;
base.BaseDal = dal;
base._caching = caching;
}
}
}

@ -162,9 +162,14 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
var extend = new Ghre_ExamRecordExtend();
var record = await QuerySingle(x => x.Id == examRecordId);
var details = await Db.Queryable<Ghre_ExamRecordDetail>().OrderBy(x => x.TaxisNo).Where(x => x.ExamRecordId == record.Id).ToListAsync();
await ExamHelper.SystemMarkAsync(Db, record, details);
var details = await Db.Queryable<Ghre_ExamRecordDetail>().Where(x => x.ExamRecordId == record.Id).ToListAsync();
var detailIds = details.Select(x => x.Id).ToList();
var recordAnswers = await Db.Queryable<Ghre_ExamRecordAnswer>()
.OrderBy(x => x.TaxisNo)
.Where(x => x.ExamRecordDetailId != null && detailIds.Contains(x.ExamRecordDetailId.Value))
.ToListAsync();
await ExamHelper.SystemMarkAsync(Db, record, details, recordAnswers);
var exampaper = await Db.Queryable<Ghre_ExamPaper>().FirstAsync(x => x.Id == record.ExamPaperId);
var baseData = new DefaultGhre_ExamPaperBaseData();
@ -186,7 +191,7 @@ 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).OrderBy(x => x.TaxisNo).ToListAsync();
var questions = await Db.Queryable<Ghre_ExamPaperQuestion>().Where(x => x.ExamPaperId == exampaper.Id).ToListAsync();
var previews = questions.Where(x => x.QuestionId != null).Select(x => new DefaultGhre_ExamPaperPreview()
{
Id = x.Id,
@ -226,28 +231,30 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
x.detail = detail;
var recordDetail = details.FirstOrDefault(m => m.ExamPaperQuestionId == x.Id);
switch (x.QuestionType)
{
case "Completion":
case "ShortAnswer":
var answerIds1 = details.Where(m => m.QuestionId == x.QuestionId && m.QuestionAnswerId == null).Select(m => m.AnswerContent).ToList();
var answerIds1 = recordAnswers.Where(m => m.ExamRecordDetailId == recordDetail?.Id && m.QuestionAnswerId == null).Select(m => m.AnswerContent).ToList();
answerIds1.ForEach(m =>
{
x.value1.Add(m);
});
x.value = x.value1.First();
if (x.value1.Any())
x.value = x.value1.First();
break;
default:
var answerIds = details.Where(m => m.QuestionId == x.QuestionId && m.QuestionAnswerId != null).Select(m => m.QuestionAnswerId).ToList();
var answerIds = recordAnswers.Where(m => m.ExamRecordDetailId == recordDetail?.Id && m.QuestionAnswerId != null).Select(m => m.QuestionAnswerId).ToList();
answers1.Where(m => answerIds.Contains(m.Id)).ForEach(m =>
{
x.value1.Add(m.QuestionNo);
});
x.value = x.value1.First();
if (x.value1.Any())
x.value = x.value1.First();
break;
}

@ -1382,7 +1382,12 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
if (examPaper != null)
{
var details = await Db.Queryable<Ghre_ExamRecordDetail>().Where(x => x.ExamRecordId == record.Id).ToListAsync();
await ExamHelper.SystemMarkAsync(Db, record, details);
var detailIds = details.Select(x => x.Id).ToList();
var recordAnswers = await Db.Queryable<Ghre_ExamRecordAnswer>()
.OrderBy(x => x.TaxisNo)
.Where(x => x.ExamRecordDetailId != null && detailIds.Contains(x.ExamRecordDetailId.Value))
.ToListAsync();
await ExamHelper.SystemMarkAsync(Db, record, details, recordAnswers);
await Db.Updateable(details).UpdateColumns(it => new { it.Score }).ExecuteCommandAsync();
await Db.Updateable(record).UpdateColumns(it => new { it.Score }).ExecuteCommandAsync();

@ -2420,6 +2420,101 @@
预留字段12
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase">
<summary>
Ghre_ExamRecordAnswer (Dto.Base)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.ExamRecordDetailId">
<summary>
答题记录明细ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.QuestionAnswerId">
<summary>
题目答案ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.AnswerContent">
<summary>
答案内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.TaxisNo">
<summary>
排序号
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.RemarkSz">
<summary>
备注
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.IsDefault">
<summary>
默认标志
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse1">
<summary>
预留字段1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse2">
<summary>
预留字段2
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse3">
<summary>
预留字段3
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse4">
<summary>
预留字段4
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse5">
<summary>
预留字段5
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse6">
<summary>
预留字段6
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse7">
<summary>
预留字段7
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse8">
<summary>
预留字段8
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse9">
<summary>
预留字段9
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.Reverse10">
<summary>
预留字段10
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.ReverseI1">
<summary>
预留字段11
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase.ReverseI2">
<summary>
预留字段12
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailBase">
<summary>
Ghre_ExamRecordDetail (Dto.Base)
@ -2450,16 +2545,6 @@
员工ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailBase.QuestionAnswerId">
<summary>
题目答案ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailBase.AnswerContent">
<summary>
答案内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailBase.Score">
<summary>
得分
@ -4112,6 +4197,11 @@
考试记录 (Dto.EditInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordAnswerInput">
<summary>
Ghre_ExamRecordAnswer (Dto.EditInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordDetailInput">
<summary>
Ghre_ExamRecordDetail (Dto.EditInput)
@ -4257,6 +4347,11 @@
考试记录 (Dto.InsertInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordAnswerInput">
<summary>
Ghre_ExamRecordAnswer (Dto.InsertInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordDetailInput">
<summary>
Ghre_ExamRecordDetail (Dto.InsertInput)
@ -6916,6 +7011,101 @@
预留字段12
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer">
<summary>
Ghre_ExamRecordAnswer (Model)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.ExamRecordDetailId">
<summary>
答题记录明细ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.QuestionAnswerId">
<summary>
题目答案ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.AnswerContent">
<summary>
答案内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.TaxisNo">
<summary>
排序号
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.RemarkSz">
<summary>
备注
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.IsDefault">
<summary>
默认标志
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse1">
<summary>
预留字段1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse2">
<summary>
预留字段2
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse3">
<summary>
预留字段3
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse4">
<summary>
预留字段4
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse5">
<summary>
预留字段5
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse6">
<summary>
预留字段6
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse7">
<summary>
预留字段7
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse8">
<summary>
预留字段8
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse9">
<summary>
预留字段9
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.Reverse10">
<summary>
预留字段10
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.ReverseI1">
<summary>
预留字段11
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer.ReverseI2">
<summary>
预留字段12
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDetail">
<summary>
Ghre_ExamRecordDetail (Model)
@ -6946,16 +7136,6 @@
员工ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetail.QuestionAnswerId">
<summary>
题目答案ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetail.AnswerContent">
<summary>
答案内容
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDetail.Score">
<summary>
得分
@ -9602,6 +9782,21 @@
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerDto">
<summary>
Ghre_ExamRecordAnswer(Dto.View)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDetailDto">
<summary>
Ghre_ExamRecordDetail(Dto.View)

@ -771,6 +771,11 @@
试卷题目(Controller)
</summary>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordAnswerController">
<summary>
Ghre_ExamRecordAnswer(Controller)
</summary>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController">
<summary>
考试记录(Controller)

Loading…
Cancel
Save