Commit 61d8a6d4 authored by 黄奎's avatar 黄奎

页面修改

parent d3fe5023
...@@ -45,22 +45,16 @@ namespace Edu.Model.Entity.Exam ...@@ -45,22 +45,16 @@ namespace Edu.Model.Entity.Exam
/// </summary> /// </summary>
public DateTime CreateTime { get; set; } public DateTime CreateTime { get; set; }
/// <summary> /// <summary>
/// 删除状态 /// 删除状态
/// </summary> /// </summary>
public DateStateEnum Status { get; set; } public DateStateEnum Status { get; set; }
/// <summary> /// <summary>
/// 问题答案【JSON字符串】 /// 学生答案
/// </summary> /// </summary>
public string StundetAnswer { get; set; } public string StundetAnswer { get; set; }
/// <summary> /// <summary>
/// 题目得分 /// 题目得分
/// </summary> /// </summary>
...@@ -71,6 +65,9 @@ namespace Edu.Model.Entity.Exam ...@@ -71,6 +65,9 @@ namespace Edu.Model.Entity.Exam
/// </summary> /// </summary>
public int IsMarking { get; set; } public int IsMarking { get; set; }
/// <summary>
/// 学生选项内容
/// </summary>
public string StudentContent { get; set; }
} }
} }
...@@ -59,5 +59,10 @@ namespace Edu.Model.ViewModel.Exam ...@@ -59,5 +59,10 @@ namespace Edu.Model.ViewModel.Exam
/// 审核状态【0-草稿,1-审核中,2-正常,3-驳回,4-作废】 /// 审核状态【0-草稿,1-审核中,2-正常,3-驳回,4-作废】
/// </summary> /// </summary>
public int QExamineStatus { get; set; } public int QExamineStatus { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int QCreateBy { get; set; }
} }
} }
...@@ -45,6 +45,11 @@ namespace Edu.Model.ViewModel.Question ...@@ -45,6 +45,11 @@ namespace Edu.Model.ViewModel.Question
/// 是否是选项答案 /// 是否是选项答案
/// </summary> /// </summary>
public bool IsAnswer { get; set; } public bool IsAnswer { get; set; }
/// <summary>
/// 显示选项
/// </summary>
public string ShowName { get; set; }
} }
/// <summary> /// <summary>
......
...@@ -627,13 +627,138 @@ namespace Edu.Module.Exam ...@@ -627,13 +627,138 @@ namespace Edu.Module.Exam
return flag; return flag;
} }
/// <summary>
/// App小程序获取试卷详情
/// </summary>
/// <param name="PaperId"></param>
/// <param name="GuestId"></param>
/// <param name="PublishId"></param>
/// <returns></returns>
public object AppGetExamPaperInfoModule(object PaperId, bool isShowAnswer = true, int GuestId = 0, int PublishId = 0)
{
var examPublish = GetExaminationPublishModule(PublishId);
var extModel = GetExaminationPaperModule(PaperId);
var paperObj = new object();
if (extModel != null && extModel.PaperId > 0)
{
List<RB_Examination_StudentDetails_ViewModel> studentDetailsList = new List<RB_Examination_StudentDetails_ViewModel>();
if (GuestId > 0 && PublishId > 0)
{
studentDetailsList = examination_StudentDetailsRepository.GetExaminationStudentListRepository(new RB_Examination_StudentDetails_ViewModel { PaperId = extModel.PaperId, PublishId = PublishId, GuestId = GuestId });
}
List<object> paperTypeList = new List<object>();
if (extModel.GroupList != null && extModel.GroupList.Count > 0)
{
foreach (var gItem in extModel.GroupList)
{
List<object> questionList = new List<object>();
//学生答题详问题列表
if (studentDetailsList != null && studentDetailsList.Count>0)
{
}
else if (gItem.DetailsList != null && gItem.DetailsList.Count > 0)
{
var tempDetailsList = new List<RB_Examination_Details_ViewModel>();
//题目乱序
if (examPublish.IsQuestionRandom == 1)
{
tempDetailsList = gItem.DetailsList.OrderBy(qitem => Guid.NewGuid()).ToList();
}
else
{
tempDetailsList = gItem.DetailsList;
}
List<RB_Examination_StudentDetails_ViewModel> tempStudentList = new List<RB_Examination_StudentDetails_ViewModel>();
foreach (var sItem in tempDetailsList)
{
sItem.QuestionContentObj = analysisQuestion.ParsingQuestion(sItem.QuestionTypeKey, sItem.QuestionContent, isNoAnswer: true,isOptionRandom: examPublish.IsOptionRandom);
RB_Examination_StudentDetails_ViewModel stuDetailsModel = new RB_Examination_StudentDetails_ViewModel()
{
Id=0,
PublishId=PublishId,
PaperId=extModel.PaperId,
DetailsId=sItem.Id,
GuestId=GuestId,
CreateTime=DateTime.Now,
Status=0,
StundetAnswer="",
StundetScore=0,
IsMarking=0,
StudentContent=Common.Plugin.JsonHelper.Serialize(sItem.QuestionContentObj)
};
examination_StudentDetailsRepository.Insert(stuDetailsModel);
var qObj = new
{
sItem.Id,
sItem.PaperId,
sItem.Title,
sItem.ShowTitle,
sItem.QuestionContentObj,
sItem.QuestionTypeId,
sItem.QuestionTypeKey,
sItem.DifficultyType,
sItem.Score,
Answer = "",
StundetAnswer = "",
AnswerParse = sItem.AnswerParse,
StundetScore = 0,
};
questionList.Add(qObj);
}
}
paperTypeList.Add(new
{
gItem.GroupName,
gItem.GScore,
DetailsList= questionList
});
}
}
paperObj = new
{
extModel.PaperId,
extModel.PaperName,
GroupList = paperTypeList,
};
}
examPublish.GuestId = GuestId;
extModel.GuestId = GuestId;
return new
{
Publish = new
{
examPublish.PicList,
examPublish.GuestId,
ExamStartTime = Common.ConvertHelper.FormatTime(examPublish.ExamStartTime),
ExamEndTime = Common.ConvertHelper.FormatTime(examPublish.ExamEndTime),
examPublish.ExamTimes,
examPublish.SubmitTimes,
examPublish.EnterTimes,
examPublish.IsQuestionRandom,
examPublish.IsOptionRandom,
examPublish.IsLeaveAnswer,
examPublish.LeaveTimes,
examPublish.IsDisableMultiTerminal,
examPublish.IsExamType,
examPublish.ExamTypeValue,
examPublish.ExamNotice,
examPublish.IsAutoSubmit
},
Paper = paperObj
};
}
/// <summary> /// <summary>
/// 根据试卷编号获取试卷实体 /// 根据试卷编号获取试卷实体
/// </summary> /// </summary>
/// <param name="PaperId"></param> /// <param name="PaperId"></param>
/// <param name="isShowAnswer">是否查询答案</param> /// <param name="isShowAnswer">是否查询答案</param>
/// <returns></returns> /// <returns></returns>
public RB_Examination_Paper_ViewModel GetExaminationPaperModule(object PaperId, bool isShowAnswer = true, int GuestId = 0, int PublishId = 0) public RB_Examination_Paper_ViewModel GetExaminationPaperModule(object PaperId)
{ {
// 定义正则表达式用来匹配 img 标签 // 定义正则表达式用来匹配 img 标签
string str = @"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>"; string str = @"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>";
...@@ -649,12 +774,6 @@ namespace Edu.Module.Exam ...@@ -649,12 +774,6 @@ namespace Edu.Module.Exam
{ {
PaperId = extModel.PaperId PaperId = extModel.PaperId
}); });
List<RB_Examination_StudentDetails_ViewModel> studentDetailsList = new List<RB_Examination_StudentDetails_ViewModel>();
if (GuestId > 0 && PublishId > 0)
{
studentDetailsList = examination_StudentDetailsRepository.GetExaminationStudentListRepository(new RB_Examination_StudentDetails_ViewModel { PaperId = extModel.PaperId, PublishId = PublishId, GuestId = GuestId });
}
if (extModel.GroupList != null && extModel.GroupList.Count > 0 && detailsList != null && detailsList.Count > 0) if (extModel.GroupList != null && extModel.GroupList.Count > 0 && detailsList != null && detailsList.Count > 0)
{ {
List<int> pointsList = new List<int>(); List<int> pointsList = new List<int>();
...@@ -679,28 +798,6 @@ namespace Edu.Module.Exam ...@@ -679,28 +798,6 @@ namespace Edu.Module.Exam
gItem.GScore = gItem?.DetailsList?.Sum(qitem => qitem.Score) ?? 0; gItem.GScore = gItem?.DetailsList?.Sum(qitem => qitem.Score) ?? 0;
foreach (var sItem in gItem.DetailsList) foreach (var sItem in gItem.DetailsList)
{ {
if (!isShowAnswer)
{
sItem.Answer = "";
sItem.AnswerParse = "";
}
if (studentDetailsList != null && studentDetailsList.Any())
{
var studentDetailsModel = studentDetailsList.Where(x => x.DetailsId == sItem.Id).FirstOrDefault();
if (studentDetailsModel != null && studentDetailsModel.Id > 0)
{
sItem.StundetAnswer = studentDetailsModel.StundetAnswer ?? "";
sItem.StundetDetailsId = studentDetailsModel.Id;
sItem.StundetScore = studentDetailsModel.StundetScore;
}
else
{
sItem.StundetAnswer = "";
sItem.StundetDetailsId = 0;
sItem.StundetScore = 0;
}
}
sItem.QuestionPointList = pointList?.Where(qitem => sItem.Knowledge.Contains(qitem.PointId.ToString()))?.ToList() ?? new List<RB_Question_Point_ViewModel>(); sItem.QuestionPointList = pointList?.Where(qitem => sItem.Knowledge.Contains(qitem.PointId.ToString()))?.ToList() ?? new List<RB_Question_Point_ViewModel>();
sItem.QuestionContentObj = analysisQuestion.ParsingQuestion(sItem.QuestionTypeKey, sItem.QuestionContent); sItem.QuestionContentObj = analysisQuestion.ParsingQuestion(sItem.QuestionTypeKey, sItem.QuestionContent);
string newTitle = sItem.Title; string newTitle = sItem.Title;
......
...@@ -14,17 +14,27 @@ namespace Edu.Module.Question ...@@ -14,17 +14,27 @@ namespace Edu.Module.Question
/// <summary> /// <summary>
/// 问题解析 /// 问题解析
/// </summary> /// </summary>
/// <param name="key"></param> /// <param name="key">问题Key</param>
/// <param name="data"></param> /// <param name="data">选项内容</param>
/// <param name="isNoAnswer">是否去掉答案</param>
/// <param name="isOptionRandom">是否选项随机</param>
/// <returns></returns> /// <returns></returns>
public object ParsingQuestion(string key, string data) public object ParsingQuestion(string key, string data,bool isNoAnswer=false,int isOptionRandom=0)
{ {
var obj = new object(); var obj = new object();
switch (key) switch (key)
{ {
//单选题 //单选题
case "single": case "single":
obj = Common.Plugin.JsonHelper.DeserializeObject<List<optionItem>>(data); var singleList = Common.Plugin.JsonHelper.DeserializeObject<List<optionItem>>(data);
if (isNoAnswer && singleList != null && singleList.Count > 0)
{
singleList.ForEach(item =>
{
//item.IsAnswer = false;
});
}
obj = singleList;
break; break;
//多选题 //多选题
case "multiple": case "multiple":
......
...@@ -24,6 +24,7 @@ namespace Edu.Repository.Exam ...@@ -24,6 +24,7 @@ namespace Edu.Repository.Exam
/// <returns></returns> /// <returns></returns>
public List<RB_Examination_Paper_ViewModel> GetExaminationPaperPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Examination_Paper_ViewModel query) public List<RB_Examination_Paper_ViewModel> GetExaminationPaperPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Examination_Paper_ViewModel query)
{ {
string tempSql = string.Format(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.ParentId), 0);
var parameters = new DynamicParameters(); var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
...@@ -31,93 +32,76 @@ SELECT A.* ...@@ -31,93 +32,76 @@ SELECT A.*
FROM RB_Examination_Paper AS A FROM RB_Examination_Paper AS A
WHERE 1=1 WHERE 1=1
"); ");
if (query != null) if (query != null)
{ {
if (query.Group_Id > 0) if (query.Group_Id > 0)
{ {
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.Group_Id), query.Group_Id); builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.Group_Id), query.Group_Id);
} }
if (!string.IsNullOrEmpty(query.PaperName))
{
builder.AppendFormat(" AND A.{0} LIKE @PaperName ", nameof(RB_Examination_Paper_ViewModel.PaperName));
parameters.Add("PaperName", "%" + query.PaperName.Trim() + "%");
}
if (query.PaperId > 0) if (query.PaperId > 0)
{ {
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.PaperId), query.PaperId); builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.PaperId), query.PaperId);
} }
if (!string.IsNullOrEmpty(query.QPaperIds)) else if (!string.IsNullOrEmpty(query.QPaperIds))
{ {
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Examination_Paper_ViewModel.PaperId), query.QPaperIds); builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Examination_Paper_ViewModel.PaperId), query.QPaperIds);
} }
if (!string.IsNullOrEmpty(query.QStartTime)) else
{
builder.AppendFormat(@" AND A.{0}>='{1}' ", nameof(RB_Examination_Paper_ViewModel.CreateTime), query.QStartTime);
}
if (!string.IsNullOrEmpty(query.QEndTime))
{
builder.AppendFormat(@" AND A.{0}>='{1} 23:59:59' ", nameof(RB_Examination_Paper_ViewModel.CreateTime), query.QEndTime);
}
if (query.QExamineStatus > -1)
{ {
//正常 if (!string.IsNullOrEmpty(query.QStartTime))
if (query.QExamineStatus == 2)
{ {
builder.AppendFormat(@" AND A.{0} IN(2,5) AND A.PaperType=2 ", nameof(RB_Examination_Paper_ViewModel.ExamineStatus)); builder.AppendFormat(@" AND A.{0}>='{1}' ", nameof(RB_Examination_Paper_ViewModel.CreateTime), query.QStartTime);
} }
//驳回 if (!string.IsNullOrEmpty(query.QEndTime))
else if (query.QExamineStatus == 3)
{ {
builder.AppendFormat(@" AND A.{0} IN(3,4) AND A.PaperType=2 ", nameof(RB_Examination_Paper_ViewModel.ExamineStatus)); builder.AppendFormat(@" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Examination_Paper_ViewModel.CreateTime), query.QEndTime);
} }
else if (!string.IsNullOrEmpty(query.PaperName))
{ {
builder.AppendFormat(@" AND A.{0}={1} AND A.PaperType=2 ", nameof(RB_Examination_Paper_ViewModel.ExamineStatus), query.QExamineStatus); builder.AppendFormat(" AND A.{0} LIKE @PaperName ", nameof(RB_Examination_Paper_ViewModel.PaperName));
parameters.Add("PaperName", "%" + query.PaperName.Trim() + "%");
tempSql = "";
} }
if (query.ParentId > 0) if (query.ParentId > 0)
{ {
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.ParentId), query.ParentId); builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.ParentId), query.ParentId);
tempSql = "";
} }
//没有权限的时候查询
if (query.CreateBy > 0) if (query.CreateBy > 0)
{ {
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.CreateBy), query.CreateBy); builder.AppendFormat(@" AND
(
(A.{0}={1} AND A.ParentId=0)
OR (A.{0}<>{1} AND A.IsOpen=2 )
) ", nameof(RB_Examination_Paper_ViewModel.CreateBy), query.CreateBy);
tempSql = "";
} }
} //查询条件中的创建人
else if (query.QCreateBy > 0)
{
//试卷管理员
if (query.IsPaperManager == 1)
{ {
if (query.ParentId > 0) builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.CreateBy), query.QCreateBy);
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.ParentId), query.ParentId);
}
else
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.ParentId), 0);
}
} }
else if (query.QExamineStatus > -1)
{ {
if (query.ParentId > 0) tempSql = "";
//正常
if (query.QExamineStatus == 2)
{ {
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.ParentId), query.ParentId); builder.AppendFormat(@" AND A.{0} IN(2,5) AND A.PaperType=2 ", nameof(RB_Examination_Paper_ViewModel.ExamineStatus));
}
//驳回
else if (query.QExamineStatus == 3)
{
builder.AppendFormat(@" AND A.{0} IN(3,4) AND A.PaperType=2 ", nameof(RB_Examination_Paper_ViewModel.ExamineStatus));
} }
else else
{ {
if (query.CreateBy > 0) builder.AppendFormat(@" AND A.{0}={1} AND A.PaperType=2 ", nameof(RB_Examination_Paper_ViewModel.ExamineStatus), query.QExamineStatus);
{
builder.AppendFormat(@" AND
(
(A.{0}={1} AND A.ParentId=0)
OR (A.{0}<>{1} AND A.IsOpen=2 )
) ", nameof(RB_Examination_Paper_ViewModel.CreateBy), query.CreateBy);
}
} }
} }
builder.AppendFormat(tempSql);
} }
} }
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Examination_Paper_ViewModel.PaperId)); builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Examination_Paper_ViewModel.PaperId));
return GetPage<RB_Examination_Paper_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList(); return GetPage<RB_Examination_Paper_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
......
...@@ -23,16 +23,14 @@ namespace Edu.Repository.Exam ...@@ -23,16 +23,14 @@ namespace Edu.Repository.Exam
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName SELECT A.*,IFNULL(B.GuestName,'') AS GuestName
FROM RB_Examination_StudentDetails AS A FROM RB_Examination_StudentDetails AS A
LEFT JOIN RB_Examination_Student AS c ON C.GuestId=a.GuestId LEFT JOIN RB_Examination_Student AS c ON C.GuestId=a.GuestId
LEFT JOIN rb_order_guest AS B ON c.GuestId=B.Id LEFT JOIN rb_order_guest AS B ON c.GuestId=B.Id
WHERE 1=1 WHERE 1=1
"); ");
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_StudentDetails_ViewModel.Status), 0); builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_StudentDetails_ViewModel.Status), 0);
if (query != null) if (query != null)
{ {
if (query.GuestId > 0) if (query.GuestId > 0)
{ {
builder.AppendFormat(" AND c.{0}={1} ", nameof(RB_Examination_Student.GuestId), query.GuestId); builder.AppendFormat(" AND c.{0}={1} ", nameof(RB_Examination_Student.GuestId), query.GuestId);
......
...@@ -554,11 +554,8 @@ namespace Edu.WebApi.Controllers.Applet ...@@ -554,11 +554,8 @@ namespace Edu.WebApi.Controllers.Applet
var PaperId = base.ParmJObj.GetInt("PaperId"); var PaperId = base.ParmJObj.GetInt("PaperId");
var Id = base.ParmJObj.GetInt("Id"); var Id = base.ParmJObj.GetInt("Id");
var GuestId = base.ParmJObj.GetInt("GuestId", 0); var GuestId = base.ParmJObj.GetInt("GuestId", 0);
var modelPublish = paperModule.GetExaminationPublishModule(Id); var data = paperModule.AppGetExamPaperInfoModule(PaperId, isShowAnswer: false, GuestId: GuestId, PublishId: Id);
var modelPaper = paperModule.GetExaminationPaperModule(PaperId, isShowAnswer: false, GuestId: GuestId, PublishId: Id); return ApiResult.Success(data: data);
modelPublish.GuestId = GuestId;
modelPaper.GuestId = GuestId;
return ApiResult.Success(data: new { Publish = modelPublish, Paper = modelPaper });
} }
......
...@@ -60,6 +60,7 @@ namespace Edu.WebApi.Controllers.Exam ...@@ -60,6 +60,7 @@ namespace Edu.WebApi.Controllers.Exam
QStartTime = base.ParmJObj.GetStringValue("QStartTime"), QStartTime = base.ParmJObj.GetStringValue("QStartTime"),
QEndTime=base.ParmJObj.GetStringValue("QEndTime"), QEndTime=base.ParmJObj.GetStringValue("QEndTime"),
QExamineStatus=-1, QExamineStatus=-1,
QCreateBy=base.ParmJObj.GetInt("QCreateBy"),
}; };
if (!string.IsNullOrEmpty(base.ParmJObj.GetStringValue("QExamineStatus"))) if (!string.IsNullOrEmpty(base.ParmJObj.GetStringValue("QExamineStatus")))
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment