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

页面修改

parent d3fe5023
......@@ -45,22 +45,16 @@ namespace Edu.Model.Entity.Exam
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public DateStateEnum Status { get; set; }
/// <summary>
/// 问题答案【JSON字符串】
/// 学生答案
/// </summary>
public string StundetAnswer { get; set; }
/// <summary>
/// 题目得分
/// </summary>
......@@ -71,6 +65,9 @@ namespace Edu.Model.Entity.Exam
/// </summary>
public int IsMarking { get; set; }
/// <summary>
/// 学生选项内容
/// </summary>
public string StudentContent { get; set; }
}
}
......@@ -59,5 +59,10 @@ namespace Edu.Model.ViewModel.Exam
/// 审核状态【0-草稿,1-审核中,2-正常,3-驳回,4-作废】
/// </summary>
public int QExamineStatus { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int QCreateBy { get; set; }
}
}
......@@ -45,6 +45,11 @@ namespace Edu.Model.ViewModel.Question
/// 是否是选项答案
/// </summary>
public bool IsAnswer { get; set; }
/// <summary>
/// 显示选项
/// </summary>
public string ShowName { get; set; }
}
/// <summary>
......
......@@ -627,13 +627,138 @@ namespace Edu.Module.Exam
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>
/// <param name="PaperId"></param>
/// <param name="isShowAnswer">是否查询答案</param>
/// <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 标签
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
{
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)
{
List<int> pointsList = new List<int>();
......@@ -679,28 +798,6 @@ namespace Edu.Module.Exam
gItem.GScore = gItem?.DetailsList?.Sum(qitem => qitem.Score) ?? 0;
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.QuestionContentObj = analysisQuestion.ParsingQuestion(sItem.QuestionTypeKey, sItem.QuestionContent);
string newTitle = sItem.Title;
......
......@@ -14,17 +14,27 @@ namespace Edu.Module.Question
/// <summary>
/// 问题解析
/// </summary>
/// <param name="key"></param>
/// <param name="data"></param>
/// <param name="key">问题Key</param>
/// <param name="data">选项内容</param>
/// <param name="isNoAnswer">是否去掉答案</param>
/// <param name="isOptionRandom">是否选项随机</param>
/// <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();
switch (key)
{
//单选题
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;
//多选题
case "multiple":
......
......@@ -24,6 +24,7 @@ namespace Edu.Repository.Exam
/// <returns></returns>
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();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
......@@ -31,93 +32,76 @@ SELECT A.*
FROM RB_Examination_Paper AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
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)
{
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);
}
if (!string.IsNullOrEmpty(query.QStartTime))
{
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)
else
{
//正常
if (query.QExamineStatus == 2)
if (!string.IsNullOrEmpty(query.QStartTime))
{
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);
}
//驳回
else if (query.QExamineStatus == 3)
if (!string.IsNullOrEmpty(query.QEndTime))
{
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)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.ParentId), query.ParentId);
tempSql = "";
}
//没有权限的时候查询
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.IsPaperManager == 1)
//查询条件中的创建人
if (query.QCreateBy > 0)
{
if (query.ParentId > 0)
{
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);
}
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.CreateBy), query.QCreateBy);
}
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
{
if (query.CreateBy > 0)
{
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(@" AND A.{0}={1} AND A.PaperType=2 ", nameof(RB_Examination_Paper_ViewModel.ExamineStatus), query.QExamineStatus);
}
}
builder.AppendFormat(tempSql);
}
}
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();
......
......@@ -23,16 +23,14 @@ namespace Edu.Repository.Exam
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName
FROM RB_Examination_StudentDetails AS A
LEFT JOIN RB_Examination_Student AS c ON C.GuestId=a.GuestId
LEFT JOIN rb_order_guest AS B ON c.GuestId=B.Id
FROM RB_Examination_StudentDetails AS A
LEFT JOIN RB_Examination_Student AS c ON C.GuestId=a.GuestId
LEFT JOIN rb_order_guest AS B ON c.GuestId=B.Id
WHERE 1=1
");
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_StudentDetails_ViewModel.Status), 0);
if (query != null)
{
if (query.GuestId > 0)
{
builder.AppendFormat(" AND c.{0}={1} ", nameof(RB_Examination_Student.GuestId), query.GuestId);
......
......@@ -554,11 +554,8 @@ namespace Edu.WebApi.Controllers.Applet
var PaperId = base.ParmJObj.GetInt("PaperId");
var Id = base.ParmJObj.GetInt("Id");
var GuestId = base.ParmJObj.GetInt("GuestId", 0);
var modelPublish = paperModule.GetExaminationPublishModule(Id);
var modelPaper = paperModule.GetExaminationPaperModule(PaperId, isShowAnswer: false, GuestId: GuestId, PublishId: Id);
modelPublish.GuestId = GuestId;
modelPaper.GuestId = GuestId;
return ApiResult.Success(data: new { Publish = modelPublish, Paper = modelPaper });
var data = paperModule.AppGetExamPaperInfoModule(PaperId, isShowAnswer: false, GuestId: GuestId, PublishId: Id);
return ApiResult.Success(data: data);
}
......
......@@ -60,6 +60,7 @@ namespace Edu.WebApi.Controllers.Exam
QStartTime = base.ParmJObj.GetStringValue("QStartTime"),
QEndTime=base.ParmJObj.GetStringValue("QEndTime"),
QExamineStatus=-1,
QCreateBy=base.ParmJObj.GetInt("QCreateBy"),
};
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