完善考试记录,考试交卷

This commit is contained in:
flower 2019-01-27 22:45:23 +08:00
parent 3bc8c3518c
commit 05b007dc6a
9 changed files with 215 additions and 49 deletions

View File

@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo;
import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.exam.domain.*;
import com.ruoyi.exam.service.*;
import com.ruoyi.exam.service.impl.ExamExaminationServiceImpl;
import com.ruoyi.framework.jwt.JwtUtil;
import com.ruoyi.framework.web.exception.base.BaseException;
import com.ruoyi.framework.web.util.ShiroUtils;
@ -12,10 +13,7 @@ import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@ -145,5 +143,18 @@ public class CmsExaminationController {
return prefix+"detail";
}
@RequestMapping("/examination/finish/{examUserExaminationId}/{examinationId}/{paperId}")
@ResponseBody
public AjaxResult finish(@RequestBody List<ExamUserExaminationQuestion> examUserExaminationQuestion,
@PathVariable Integer examUserExaminationId, @PathVariable Integer examinationId, @PathVariable Integer paperId,ModelMap map) {
SysUser sysUser = ShiroUtils.getSysUser();
//交卷然后返回考试记录id
Integer id = examExaminationService.finshExamination(examUserExaminationQuestion,sysUser,examUserExaminationId,examinationId,paperId);
ExamUserExaminationVO data = examUserExaminationService.selectDetailById( id );
AjaxResult success = AjaxResult.success( "报名成功" );
success.put("id",id);
return success;
}
}

View File

@ -1,14 +1,13 @@
package com.ruoyi.cms.controller;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.exam.domain.*;
import cn.hutool.extra.servlet.ServletUtil;
import com.ruoyi.exam.domain.ExamPractice;
import com.ruoyi.exam.domain.ExamUserErrorQuestion;
import com.ruoyi.exam.domain.ExamUserErrorQuestionVO;
import com.ruoyi.exam.service.IExamPracticeService;
import com.ruoyi.exam.service.IExamUserCollectionQuestionService;
import com.ruoyi.exam.service.IExamUserErrorQuestionService;
import com.ruoyi.exam.service.*;
import com.ruoyi.framework.jwt.JwtUtil;
import com.ruoyi.framework.web.util.ServletUtils;
import com.ruoyi.framework.web.util.ShiroUtils;
@ -31,6 +30,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import sun.awt.image.IntegerComponentRaster;
import javax.servlet.http.Cookie;
import java.util.List;
@ -56,6 +56,9 @@ public class CmsUserController {
@Autowired
private IExamUserCollectionQuestionService examUserCollectionQuestionService;
@Autowired
private IExamUserExaminationService examUserExaminationService;
@RequestMapping("/user/login.html")
@ -75,7 +78,7 @@ public class CmsUserController {
@RequestMapping("/user/index.html")
public String webUserIndex(ModelMap map) {
map.put( "user", ShiroUtils.getSysUser() );
return prefix + "/user/index";
return prefix + "/user/set";
}
@RequestMapping("/user/home.html")
public String webUserHome(ModelMap map) {
@ -159,4 +162,39 @@ public class CmsUserController {
AjaxResult success = AjaxResult.success("删除成功");
return success;
}
@RequestMapping("/user/userexamination.html")
public String userExamquestion(ModelMap map) {
map.put( "user", ShiroUtils.getSysUser() );
return prefix + "/user/userexamination";
}
/**
* 我的考试记录
* @return
*/
@RequestMapping("/user/myuserexamination/list")
@ResponseBody
public AjaxResult userExamquestionList() {
ExamUserExaminationVO examUserExamination = new ExamUserExaminationVO();
examUserExamination.setVipUserId(ShiroUtils.getUserId().intValue());
List<ExamUserExaminationVO> list = examUserExaminationService.selectMyExamUserExamination(examUserExamination);
AjaxResult success = AjaxResult.success("查询成功");
success.put("total",new PageInfo(list).getTotal());
success.put( "data", list );
return success;
}
@RequestMapping("/user/myuserexamination/detail/{id}")
public String userExamquestion(@PathVariable Integer id, ModelMap map) {
map.put( "user", ShiroUtils.getSysUser() );
ExamUserExaminationVO data = examUserExaminationService.selectDetailById( id );
map.put( "data", data );
return prefix + "/user/userexamination_detail";
}
}

View File

@ -14,12 +14,14 @@
<div class="layui-col-md12">
<div class="fly-panel">
<div class="layui-col-md9">
<div class="layui-col-md12">
<div class="layui-col-md12">
<div class="layui-card" style="text-align: center;">
<span style="font-size: 30px;line-height: 60px">[[${examExamination.name}]]</span>
<span style="font-size: 30px;line-height: 60px">[[${examExamination.name}]]</span><br>
<button style="width: 100px;margin-bottom: 20px" class="layui-btn layui-btn-warm" onclick="endPaper()" >交卷</button>
</div>
<div class="layui-card question" th:each="question:${data}">
<input type="hidden" class="questionId" th:value="${question.id}">
<div class="layui-card-header">[[${questionStat.index+1}]]:<span
th:text="${question.title}"></span>
<span th:if="${question.type=='1'}">(单选)</span>
@ -47,15 +49,14 @@
<!--</div>-->
</div>
<div class="layui-card">
<button class="layui-btn layui-btn-warm" onclick="endPaper()" >交卷</button>
</div>
</div>
</div>
</div>
</div>
</div>
@ -84,18 +85,29 @@ document.write(unescape("%3Cspan id='cnzz_stat_icon_30088308'%3E%3C/span%3E%3Csc
function endPaper() {
var data = [];
$(".question").each(function(){
var examQuestionId = $(this).find(".questionId").eq(0).val()
var userAnswer = "";
$(this).find("."+examQuestionId+"useranswer:checked").each(function(){
userAnswer+=$(this).val()+",";
})
userAnswer = userAnswer.substring(0,userAnswer.length-1)
data.push({examQuestionId:examQuestionId,userAnswer:userAnswer})
})
$.ajax({
type: 'post',
url: "/api/v1/examination/finish/"+[[${examUserExaminationId}]]+"/"+[[${examExamination.id}]]+"/"+[[${paperId}]],
url: "/web/examination/finish/"+[[${examUserExaminationId}]]+"/"+[[${examExamination.id}]]+"/"+[[${paperId}]],
contentType: "application/json",
data: JSON.stringify(data),
success: function (result) {
if (result.code != web_status.SUCCESS) {
$.modal.msgError(result.msg);
layer.msg(result.msg, {icon: 2})
}else{
layer.msg("已交卷", {icon: 1})
location.href="/web/user/myuserexamination/detail/"+result.id;
}
}
});
}

View File

@ -40,6 +40,14 @@
</a>
</script>
<script type="text/html" id="type">
{{# if (d.type == "2"){ }}
正式考试
{{# }else { }}
模拟考试
{{# } }}
</script>
</div>
</div>
@ -84,6 +92,7 @@ document.write(unescape("%3Cspan id='cnzz_stat_icon_30088308'%3E%3C/span%3E%3Csc
{checkbox: true}
, {field: 'name', title: '考试名称'}
, {field: 'trainCourseName', title: '课程名称'}
,{field: 'type', title: '考试类型',templet: '#type'}
, {field: 'timeLength', title: '考试时长'}
, {field: 'passMark', title: '及格分数'}
, {title: '操作', toolbar: '#barDemo'}
@ -162,6 +171,7 @@ document.write(unescape("%3Cspan id='cnzz_stat_icon_30088308'%3E%3C/span%3E%3Csc
{checkbox: true}
, {field: 'name', title: '考试名称'}
, {field: 'trainCourseName', title: '课程名称'}
,{field: 'type', title: '考试类型',templet: '#type'}
, {field: 'timeLength', title: '考试时长'}
, {field: 'passMark', title: '及格分数'}
, {title: '操作', toolbar: '#signup'}

View File

@ -46,6 +46,12 @@
我的收藏
</a>
</li>
<li class="layui-nav-item" id="userexamination">
<a th:href="@{/web/user/userexamination.html}">
<i class="layui-icon">&#xe600;</i>
考试记录
</a>
</li>
</ul>
<div class="site-tree-mobile layui-hide">

View File

@ -261,13 +261,13 @@ public class ApiExaminationController extends BaseController {
//如果是模拟考试考试记录新增数据
if (examUserExaminationId == -1) {
ExamUserExamination insert = new ExamUserExamination();
insert.setExamExaminationId( examinationId );
insert.setVipUserId( Integer.parseInt( userId.toString() ) );
insert.setCreateDate( new Date() );
insert.setExamPaperId( paperId );
insert.setDelFlag( "0" );
insert.setScore( 0 );
examUserExaminationService.insertOne( insert );
insert.setExamExaminationId(examinationId);
insert.setVipUserId(Integer.parseInt(userId.toString()));
insert.setCreateDate(new Date());
insert.setExamPaperId(paperId);
insert.setDelFlag("0");
insert.setScore(0);
examUserExaminationService.insertOne(insert);
examUserExaminationId = insert.getId();
}
@ -276,39 +276,39 @@ public class ApiExaminationController extends BaseController {
HashMap<String, String> returnItem = new HashMap<>();
String userAnswer = item.getUserAnswer();
//存入用户回答
if (StrUtil.isNotBlank( userAnswer )) {
returnItem.put( "userAnswer", userAnswer );
if (StrUtil.isNotBlank(userAnswer)) {
returnItem.put("userAnswer", userAnswer);
}
Integer examQuestionId = item.getExamQuestionId();
ExamQuestion examQuestion = examQuestionService.selectById( examQuestionId );
ExamQuestion examQuestion = examQuestionService.selectById(examQuestionId);
//存入正确答案
if (StrUtil.isNotBlank( examQuestion.getAnswer() )) {
returnItem.put( "answer", examQuestion.getAnswer() );
if (StrUtil.isNotBlank(examQuestion.getAnswer())) {
returnItem.put("answer", examQuestion.getAnswer());
}
returnItem.put( "title", examQuestion.getTitle() );
returnItem.put( "rightWrong", "错误" );
if (examQuestion.getAnswer().equals( userAnswer )) {
returnItem.put("title", examQuestion.getTitle());
returnItem.put("rightWrong", "错误");
if (examQuestion.getAnswer().equals(userAnswer)) {
ExamPaperQuestion examPaperQuestion = new ExamPaperQuestion();
examPaperQuestion.setExamPaperId( paperId );
examPaperQuestion.setExamQuestionId( examQuestionId );
score += examPaperQuestionService.selectExamPaperQuestionList( examPaperQuestion ).get( 0 ).getScore();
returnItem.put( "rightWrong", "正确" );
examPaperQuestion.setExamPaperId(paperId);
examPaperQuestion.setExamQuestionId(examQuestionId);
score += examPaperQuestionService.selectExamPaperQuestionList(examPaperQuestion).get(0).getScore();
returnItem.put("rightWrong", "正确");
}
item.setExamUserExaminationId( examUserExaminationId );
item.setCreateDate( new Date() );
item.setCreateBy( user.getLoginName() );
item.setDelFlag( "0" );
item.setId( null );
examUserExaminationQuestionService.insertOne( item );
data.add( returnItem );
item.setExamUserExaminationId(examUserExaminationId);
item.setCreateDate(new Date());
item.setCreateBy(user.getLoginName());
item.setDelFlag("0");
item.setId(null);
examUserExaminationQuestionService.insertOne(item);
data.add(returnItem);
}
ExamUserExamination examUserExamination = examUserExaminationService.selectById( examUserExaminationId );
examUserExamination.setScore( score );
examUserExamination.setUpdateDate( new Date() );
examUserExamination.setCreateBy( user.getLoginName() );
examUserExaminationService.updateOneSelectiveById( examUserExamination );
ExamUserExamination examUserExamination = examUserExaminationService.selectById(examUserExaminationId);
examUserExamination.setScore(score);
examUserExamination.setUpdateDate(new Date());
examUserExamination.setCreateBy(user.getLoginName());
examUserExaminationService.updateOneSelectiveById(examUserExamination);
ExamExamination examExamination = examExaminationService.selectById( examinationId );
ExamExamination examExamination = examExaminationService.selectById(examinationId);
String finishedPaper = examExamination.getFinishedPaper();

View File

@ -5,7 +5,10 @@ import java.util.List;
import java.util.Map;
import com.ruoyi.exam.domain.ExamQuestionVO;
import com.ruoyi.exam.domain.ExamUserExaminationQuestion;
import com.ruoyi.framework.web.base.AbstractBaseService;
import com.ruoyi.system.domain.SysUser;
/**
* 考试 服务层
*
@ -44,4 +47,6 @@ public interface IExamExaminationService extends AbstractBaseService<ExamExamina
List<ExamExamination> selectEnterNameListFromWeb(Map<String, Object> map);
List<ExamQuestionVO> queryExaminationQuestion(ExamExamination examExamination,Integer examUserExaminationId);
Integer finshExamination(List<ExamUserExaminationQuestion> examUserExaminationQuestion, SysUser user, Integer examUserExaminationId, Integer examinationId, Integer paperId);
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.exam.service.impl;
import java.util.*;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.exam.domain.*;
import com.ruoyi.exam.service.*;
import com.ruoyi.framework.web.exception.base.BaseException;
@ -9,6 +10,7 @@ import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.system.domain.SysUser;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.stereotype.Service;
import com.ruoyi.exam.mapper.ExamExaminationMapper;
import com.ruoyi.common.support.Convert;
@ -25,6 +27,9 @@ public class ExamExaminationServiceImpl extends AbstractBaseServiceImpl<ExamExam
@Autowired
private ExamExaminationMapper examExaminationMapper;
@Autowired
private IExamExaminationService examExaminationService;
@Autowired
private IExamPaperService examPaperService;
@ -34,6 +39,18 @@ public class ExamExaminationServiceImpl extends AbstractBaseServiceImpl<ExamExam
@Autowired
private ISysUserService sysUserService;
@Autowired
private IExamExaminationUserService examExaminationUserService;
@Autowired
private IExamUserExaminationQuestionService examUserExaminationQuestionService;
@Autowired
private IExamQuestionService examQuestionService;
@Autowired
private IExamPaperQuestionService examPaperQuestionService;
@Autowired
private IExamPaperTypeNumberService examPaperTypeNumberService;
@ -168,6 +185,64 @@ public class ExamExaminationServiceImpl extends AbstractBaseServiceImpl<ExamExam
return data;
}
@Override
public Integer finshExamination(List<ExamUserExaminationQuestion> examUserExaminationQuestion,SysUser user ,Integer examUserExaminationId, Integer examinationId, Integer paperId) {
ArrayList<Map<String, String>> data = new ArrayList<>();
Integer userId = user.getUserId().intValue();
//如果是模拟考试考试记录新增数据
if (examUserExaminationId == -1) {
ExamUserExamination insert = new ExamUserExamination();
insert.setExamExaminationId(examinationId);
insert.setVipUserId(Integer.parseInt(userId.toString()));
insert.setCreateDate(new Date());
insert.setExamPaperId(paperId);
insert.setDelFlag("0");
insert.setScore(0);
examUserExaminationService.insertOne(insert);
examUserExaminationId = insert.getId();
}
Integer score = 0;
for (ExamUserExaminationQuestion item : examUserExaminationQuestion) {
HashMap<String, String> returnItem = new HashMap<>();
String userAnswer = item.getUserAnswer();
//存入用户回答
if (StrUtil.isNotBlank(userAnswer)) {
returnItem.put("userAnswer", userAnswer);
}
Integer examQuestionId = item.getExamQuestionId();
ExamQuestion examQuestion = examQuestionService.selectById(examQuestionId);
//存入正确答案
if (StrUtil.isNotBlank(examQuestion.getAnswer())) {
returnItem.put("answer", examQuestion.getAnswer());
}
returnItem.put("title", examQuestion.getTitle());
returnItem.put("rightWrong", "错误");
if (examQuestion.getAnswer().equals(userAnswer)) {
ExamPaperQuestion examPaperQuestion = new ExamPaperQuestion();
examPaperQuestion.setExamPaperId(paperId);
examPaperQuestion.setExamQuestionId(examQuestionId);
score += examPaperQuestionService.selectExamPaperQuestionList(examPaperQuestion).get(0).getScore();
returnItem.put("rightWrong", "正确");
}
item.setExamUserExaminationId(examUserExaminationId);
item.setCreateDate(new Date());
item.setCreateBy(user.getLoginName());
item.setDelFlag("0");
item.setId(null);
examUserExaminationQuestionService.insertOne(item);
data.add(returnItem);
}
ExamUserExamination examUserExamination = examUserExaminationService.selectById(examUserExaminationId);
examUserExamination.setScore(score);
examUserExamination.setUpdateDate(new Date());
examUserExamination.setCreateBy(user.getLoginName());
examUserExaminationService.updateOneSelectiveById(examUserExamination);
return examUserExaminationId;
}
/**
* 查询考试分页列表
*
@ -180,4 +255,7 @@ public class ExamExaminationServiceImpl extends AbstractBaseServiceImpl<ExamExam
return examExaminationMapper.selectExamExaminationList(examExamination);
}
}

View File

@ -159,9 +159,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
eqi.number,
eqi.id as eqi_id,
eueq.id as eueq_id,
eq.id as eq_id
eq.id as eq_id,
ee.exam_end as ee_exam_end,
ee.finished_paper as ee_finished_paper
FROM exam_user_examination exam_user_examination
LEFT JOIN exam_user_examination_question eueq ON exam_user_examination.id = eueq.exam_user_examination_id
INNER JOIN exam_examination ee on exam_user_examination.exam_examination_id = ee.id
INNER JOIN exam_question eq on eueq.exam_question_id = eq.id
INNER JOIN exam_question_item eqi ON eq.id =eqi.exam_question_id
WHERE exam_user_examination.id = #{id}
@ -182,7 +185,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateDate" column="update_date" />
<result property="remarks" column="remarks" />
<result property="delFlag" column="del_flag" />
<association property="examExaminationVO" javaType="com.ruoyi.exam.domain.ExamExaminationVO">
<result property="examEnd" column="ee_exam_End" />
<result property="finishedPaper" column="ee_finished_paper" />
</association>
<collection property="examUserExaminationQuestions" ofType="com.ruoyi.exam.domain.ExamUserExaminationQuestionVO">
<result property="id" column="eueq_id" />