|
|
@ -3,6 +3,9 @@ using Tiobon.Core.IServices; |
|
|
|
using Tiobon.Core.Model.Models; |
|
|
|
using Tiobon.Core.Model.Models; |
|
|
|
using Tiobon.Core.Services.BASE; |
|
|
|
using Tiobon.Core.Services.BASE; |
|
|
|
using Tiobon.Core.IRepository.Base; |
|
|
|
using Tiobon.Core.IRepository.Base; |
|
|
|
|
|
|
|
using Tiobon.Core.Model; |
|
|
|
|
|
|
|
using System.Dynamic; |
|
|
|
|
|
|
|
using System.ComponentModel.DataAnnotations; |
|
|
|
|
|
|
|
|
|
|
|
namespace Tiobon.Core.Services |
|
|
|
namespace Tiobon.Core.Services |
|
|
|
{ |
|
|
|
{ |
|
|
@ -11,11 +14,323 @@ namespace Tiobon.Core.Services |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
|
public class Ghre_ExamPaperServices : BaseServices<Ghre_ExamPaper, Ghre_ExamPaperDto, InsertGhre_ExamPaperInput, EditGhre_ExamPaperInput>, IGhre_ExamPaperServices |
|
|
|
public class Ghre_ExamPaperServices : BaseServices<Ghre_ExamPaper, Ghre_ExamPaperDto, InsertGhre_ExamPaperInput, EditGhre_ExamPaperInput>, IGhre_ExamPaperServices |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
private IGhre_ExamPaperConfigServices _ghre_ExamPaperConfigServices; |
|
|
|
|
|
|
|
private IGhre_ExamPaperQuestionServices _ghre_ExamPaperQuestionServices; |
|
|
|
|
|
|
|
private IGhre_QuestionServices _ghre_QuestionServices; |
|
|
|
|
|
|
|
private IGhre_QuestionAnswerServices _ghre_QuestionAnswerServices; |
|
|
|
private readonly IBaseRepository<Ghre_ExamPaper> _dal; |
|
|
|
private readonly IBaseRepository<Ghre_ExamPaper> _dal; |
|
|
|
public Ghre_ExamPaperServices(IBaseRepository<Ghre_ExamPaper> dal) |
|
|
|
|
|
|
|
|
|
|
|
public Ghre_ExamPaperServices(IBaseRepository<Ghre_ExamPaper> dal, |
|
|
|
|
|
|
|
IGhre_ExamPaperConfigServices ghre_ExamPaperConfigServices, |
|
|
|
|
|
|
|
IGhre_QuestionServices ghre_QuestionServices, |
|
|
|
|
|
|
|
IGhre_QuestionAnswerServices ghre_QuestionAnswerServices, |
|
|
|
|
|
|
|
IGhre_ExamPaperQuestionServices ghre_ExamPaperQuestionServices) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this._dal = dal; |
|
|
|
this._dal = dal; |
|
|
|
base.BaseDal = dal; |
|
|
|
base.BaseDal = dal; |
|
|
|
|
|
|
|
_ghre_ExamPaperConfigServices = ghre_ExamPaperConfigServices; |
|
|
|
|
|
|
|
_ghre_ExamPaperQuestionServices = ghre_ExamPaperQuestionServices; |
|
|
|
|
|
|
|
_ghre_QuestionServices = ghre_QuestionServices; |
|
|
|
|
|
|
|
_ghre_QuestionAnswerServices = ghre_QuestionAnswerServices; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<ServiceResult<DefaultGhre_ExamPaperInput>> QueryDefault(long Id) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var input = new DefaultGhre_ExamPaperInput(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region baseColumns |
|
|
|
|
|
|
|
var baseColumns = new List<DefaultGhre_ExamPaperColumn> |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "试卷编号", |
|
|
|
|
|
|
|
field = "PaperNo", |
|
|
|
|
|
|
|
elementType = "Input", |
|
|
|
|
|
|
|
required = false, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = false, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "试卷名称", |
|
|
|
|
|
|
|
field = "PaperName", |
|
|
|
|
|
|
|
elementType = "Input", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "答题时间", |
|
|
|
|
|
|
|
field = "AnswerTime", |
|
|
|
|
|
|
|
elementType = "InputNumber", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "评分方式", |
|
|
|
|
|
|
|
field = "ScoreMethod", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "卷面总分", |
|
|
|
|
|
|
|
field = "TotalScore", |
|
|
|
|
|
|
|
elementType = "InputNumber", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "及格分", |
|
|
|
|
|
|
|
field = "PassScore", |
|
|
|
|
|
|
|
elementType = "InputNumber", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "可重考次数", |
|
|
|
|
|
|
|
field = "RetakeTimes", |
|
|
|
|
|
|
|
elementType = "InputNumber", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "试卷说明", |
|
|
|
|
|
|
|
field = "RemarkSz", |
|
|
|
|
|
|
|
elementType = "TextArea", |
|
|
|
|
|
|
|
required = false, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "关联课程", |
|
|
|
|
|
|
|
field = "LinkType", |
|
|
|
|
|
|
|
elementType = "CourseRadioBox", |
|
|
|
|
|
|
|
required = false, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "课程名称", |
|
|
|
|
|
|
|
field = "CourseId", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = false, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "课程场景", |
|
|
|
|
|
|
|
field = "CourseSceneId", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = false, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region randomSetColumns |
|
|
|
|
|
|
|
var randomSetColumns = new List<DefaultGhre_ExamPaperColumn> |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "课程名称", |
|
|
|
|
|
|
|
field = "CourseId", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=1 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "题目类型", |
|
|
|
|
|
|
|
field = "QuestionType", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=2 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "难易程度", |
|
|
|
|
|
|
|
field = "DifficultyLevel", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=2 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "数量", |
|
|
|
|
|
|
|
field = "Quantity", |
|
|
|
|
|
|
|
elementType = "InputNumber", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=2 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "分值", |
|
|
|
|
|
|
|
field = "Score", |
|
|
|
|
|
|
|
elementType = "InputNumber", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=2 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region manualSetColumns |
|
|
|
|
|
|
|
var manualSetColumns = new List<DefaultGhre_ExamPaperColumn> |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "课程名称", |
|
|
|
|
|
|
|
field = "CourseId", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=1 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "题目类型", |
|
|
|
|
|
|
|
field = "QuestionType", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType= 2 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "题目内容", |
|
|
|
|
|
|
|
field = "QuestionContent", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=2 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "难易程度", |
|
|
|
|
|
|
|
field = "DifficultyLevel", |
|
|
|
|
|
|
|
elementType = "ApiSelect", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=2 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
new DefaultGhre_ExamPaperColumn() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label = "分值", |
|
|
|
|
|
|
|
field = "Score", |
|
|
|
|
|
|
|
elementType = "InputNumber", |
|
|
|
|
|
|
|
required = true, |
|
|
|
|
|
|
|
multipleSelect = false, |
|
|
|
|
|
|
|
editable = true, |
|
|
|
|
|
|
|
displayType=2 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region pageData |
|
|
|
|
|
|
|
if (Id != 0) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var exampaper = await base.QueryById(Id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dynamic baseData = new ExpandoObject(); |
|
|
|
|
|
|
|
baseData.PaperNo = exampaper.PaperNo; |
|
|
|
|
|
|
|
baseData.PaperName = exampaper.PaperName; |
|
|
|
|
|
|
|
baseData.AnswerTime = exampaper.AnswerTime; |
|
|
|
|
|
|
|
baseData.ScoreMethod = exampaper.ScoreMethod; |
|
|
|
|
|
|
|
baseData.TotalScore = exampaper.TotalScore; |
|
|
|
|
|
|
|
baseData.PassScore = exampaper.PassScore; |
|
|
|
|
|
|
|
baseData.RetakeTimes = exampaper.RetakeTimes; |
|
|
|
|
|
|
|
baseData.RemarkSz = exampaper.RemarkSz; |
|
|
|
|
|
|
|
baseData.LinkType = exampaper.LinkType; |
|
|
|
|
|
|
|
baseData.CourseId = exampaper.LinkId; |
|
|
|
|
|
|
|
baseData.CourseSceneId = exampaper.LinkId; |
|
|
|
|
|
|
|
input.pageData.baseData = baseData; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
input.pageData.styleInfo.coverImage = exampaper.CoverUrl; |
|
|
|
|
|
|
|
input.pageData.styleInfo.paperStyle = exampaper.Style; |
|
|
|
|
|
|
|
input.pageData.examPaperSetType = exampaper.SetMethod; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
input.pageData.examPaperSetData = await _ghre_ExamPaperConfigServices.Query(x => x.ExamPaperId == Id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var questions = await _ghre_ExamPaperQuestionServices.Query(x => x.ExamPaperId == Id); |
|
|
|
|
|
|
|
var previews = questions.Where(x => x.QuestionId != null).Select(x => new DefaultGhre_ExamPaperPreview() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Id = x.Id, |
|
|
|
|
|
|
|
ConfigId = x.ConfigId, |
|
|
|
|
|
|
|
parentId = x.ConfigId, |
|
|
|
|
|
|
|
QuestionId = x.QuestionId.Value, |
|
|
|
|
|
|
|
ExamPaperId = x.ExamPaperId, |
|
|
|
|
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var questionIds = previews.Select(x => x.QuestionId).Distinct().ToList(); |
|
|
|
|
|
|
|
var questions1 = await _ghre_QuestionServices.Query(x => questionIds.Contains(x.Id)); |
|
|
|
|
|
|
|
var answers = await _ghre_QuestionAnswerServices.Query(x => x.QuestionId != null && questionIds.Contains(x.QuestionId.Value), "TaxisNo ASC"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
previews.ForEach(x => |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var answers1 = answers.Where(y => y.QuestionId == x.QuestionId).ToList(); |
|
|
|
|
|
|
|
var detail = questions1.Select(o => |
|
|
|
|
|
|
|
new FromGhre_QuestionQuestionTypeDetail() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Id = o.Id, |
|
|
|
|
|
|
|
difficulty = o.DifficultyLevel, |
|
|
|
|
|
|
|
RemarkSz = o.QuestionAnalysis, |
|
|
|
|
|
|
|
content = o.QuestionContent, |
|
|
|
|
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
detail.ForEach(y => |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
y.answer = answers1.Where(x => x.IsCorrect == true).FirstOrDefault()?.QuestionNo; |
|
|
|
|
|
|
|
y.answer1 = answers1.Where(x => x.IsCorrect == true).Select(x => x.QuestionNo).ToList(); |
|
|
|
|
|
|
|
y.answerList = answers.Select(x => new FromGhre_QuestionQuestionAnswerList() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
No = x.QuestionNo, |
|
|
|
|
|
|
|
label = x.AnswerContent, |
|
|
|
|
|
|
|
imageUrl = x.ImageUrl, |
|
|
|
|
|
|
|
imgWidthPc = x.ImageWidthPc, |
|
|
|
|
|
|
|
imgWidthApp = x.ImageWidthApp, |
|
|
|
|
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x.detail = detail; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
input.pageData.previewList = previews; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
input.baseColumns = baseColumns; |
|
|
|
|
|
|
|
input.randomSetColumns = randomSetColumns; |
|
|
|
|
|
|
|
input.manualSetColumns = manualSetColumns; |
|
|
|
|
|
|
|
return ServiceResult<DefaultGhre_ExamPaperInput>.OprateSuccess("查询成功!", input); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |