From d73e4f8d7f0d46eb2d4164d98b85e809eb841cec Mon Sep 17 00:00:00 2001 From: yz <3614508250@qq.com> Date: Wed, 24 Apr 2024 16:55:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9E=E6=88=98=E8=80=83?= =?UTF-8?q?=E6=A0=B8=E5=BC=80=E5=A7=8B=E8=80=83=E8=AF=95=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/common/CourseController.java | 4 + .../controller/stu/ExamController.java | 44 ++++-- .../stu/ExerciseExperimentalTraining.java | 51 ++++--- .../controller/stu/PythonController.java | 6 + .../controller/stu/TheoryTestController.java | 3 - .../entity/StuStudentExam.java | 23 +++ .../entity/StuStudentExamExample.java | 131 ++++++++++++++++++ .../entity/StuTrainingStepRecord.java | 11 ++ .../entity/StuTrainingStepRecordExample.java | 70 ++++++++++ .../service/stu/impl/ExamServiceImpl.java | 57 ++++++++ .../service/tea/ITeaCaseStepService.java | 3 +- .../service/tea/ITeaResourceDataService.java | 2 + .../tea/impl/TeaCaseStepServiceImpl.java | 87 ++++++++++-- .../tea/impl/TeaResourceDataServiceImpl.java | 13 ++ .../resources/mapper/StuStudentExamMapper.xml | 46 +++++- .../mapper/StuTrainingStepRecordMapper.xml | 29 +++- 16 files changed, 525 insertions(+), 55 deletions(-) create mode 100644 src/main/java/com/sztzjy/financial_bigdata/service/stu/impl/ExamServiceImpl.java diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/common/CourseController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/common/CourseController.java index 1ed9a3d..3e561d2 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/controller/common/CourseController.java +++ b/src/main/java/com/sztzjy/financial_bigdata/controller/common/CourseController.java @@ -1,6 +1,7 @@ package com.sztzjy.financial_bigdata.controller.common; import com.github.pagehelper.PageInfo; +import com.sztzjy.financial_bigdata.annotation.AnonymousAccess; import com.sztzjy.financial_bigdata.entity.SysCourse; import com.sztzjy.financial_bigdata.service.common.ICourseService; import com.sztzjy.financial_bigdata.util.ResultEntity; @@ -21,6 +22,7 @@ public class CourseController { //查看课程 @GetMapping("selectCourse") @ApiOperation("查看课程") + @AnonymousAccess public ResultEntity> selectCourse(@RequestParam String schoolId, @RequestParam Integer index, @RequestParam Integer size) { @@ -31,6 +33,7 @@ public class CourseController { //增加课程 @PostMapping("insertCourse") @ApiOperation("增加课程") + @AnonymousAccess public ResultEntity insertCourse(@ApiParam("新增课程对象") @RequestBody SysCourse course) { Boolean flag = courseService.insertCourse(course); if (flag){ @@ -43,6 +46,7 @@ public class CourseController { //删除课程 @GetMapping("deleteCourse") @ApiOperation("删除课程") + @AnonymousAccess public ResultEntity deleteCourse(@ApiParam("删除课程Id") @RequestParam String courseId, @RequestParam String schoolId){ Boolean flag = courseService.deleteCourse(courseId,schoolId); diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExamController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExamController.java index 65c335f..73a148b 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExamController.java +++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExamController.java @@ -2,13 +2,16 @@ package com.sztzjy.financial_bigdata.controller.stu; import com.sztzjy.financial_bigdata.annotation.AnonymousAccess; import com.sztzjy.financial_bigdata.entity.SysObjectiveQuestion; +import com.sztzjy.financial_bigdata.entity.stu_dto.StuTheoryTestDto; +import com.sztzjy.financial_bigdata.mapper.SysObjectiveQuestionMapper; +import com.sztzjy.financial_bigdata.service.stu.IExamService; import com.sztzjy.financial_bigdata.util.ResultEntity; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -16,16 +19,35 @@ import java.util.List; @Api(tags = "实战考核") @RequestMapping("api/stu/examController") public class ExamController { + @Autowired + IExamService examService; - //基础知识题目展示 -// @GetMapping("basicKnowledge") -// @ApiOperation("基础知识") -// @AnonymousAccess -// public ResultEntity> basicKnowledge(@RequestParam String userId) { -// -// } + + //实战考核基础知识题目展示(开始考试) + @GetMapping("basicKnowledge") + @ApiOperation("基础知识(开始考试)") + @AnonymousAccess + public ResultEntity> basicKnowledge(@ApiParam("考试管理id") @RequestParam String examManageId, + @RequestParam String userId) { + List list=examService.basicKnowledge(examManageId,userId); + for (int i = 0; i < list.size(); i++) { + list.get(i).setSchoolId(String.valueOf(i+1)); + } + return new ResultEntity<>(HttpStatus.OK, "基础知识(开始考试)、客观题列表查询成功",list); + } //交卷 + @GetMapping("commitExam") + @ApiOperation("考试交卷") + @AnonymousAccess + public ResultEntity commitExam(@RequestBody StuTheoryTestDto theoryTestDto){ + int flag=examService.commitExam(theoryTestDto); + if(flag==1){ + return new ResultEntity<>(HttpStatus.OK, "提交试卷成功"); + }else { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "提交试卷失败"); + } + } //案例考核 } diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExerciseExperimentalTraining.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExerciseExperimentalTraining.java index 2a0d58b..c6a1b3e 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExerciseExperimentalTraining.java +++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/ExerciseExperimentalTraining.java @@ -2,19 +2,17 @@ package com.sztzjy.financial_bigdata.controller.stu; import com.sztzjy.financial_bigdata.annotation.AnonymousAccess; import com.sztzjy.financial_bigdata.entity.*; +import com.sztzjy.financial_bigdata.entity.stu_dto.StuCommitCaseDto; import com.sztzjy.financial_bigdata.entity.sys_dto.SysCourseChapterDto; import com.sztzjy.financial_bigdata.entity.sys_dto.SysCourseDto; -import com.sztzjy.financial_bigdata.mapper.StuTrainingMapper; -import com.sztzjy.financial_bigdata.mapper.SysCourseChapterMapper; -import com.sztzjy.financial_bigdata.mapper.SysCourseMapper; +import com.sztzjy.financial_bigdata.mapper.*; +import com.sztzjy.financial_bigdata.service.tea.ITeaResourceDataService; import com.sztzjy.financial_bigdata.util.ResultEntity; import com.sztzjy.financial_bigdata.annotation.AnonymousAccess; import com.sztzjy.financial_bigdata.entity.SysCaseQuestion; import com.sztzjy.financial_bigdata.entity.SysCaseQuestionExample; import com.sztzjy.financial_bigdata.entity.SysCaseQuestionStep; import com.sztzjy.financial_bigdata.entity.SysCaseQuestionStepExample; -import com.sztzjy.financial_bigdata.mapper.SysCaseQuestionMapper; -import com.sztzjy.financial_bigdata.mapper.SysCaseQuestionStepMapper; import com.sztzjy.financial_bigdata.service.tea.ITeaCaseStepService; import com.sztzjy.financial_bigdata.util.ResultEntity; import io.swagger.annotations.Api; @@ -31,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.ArrayList; @@ -54,6 +53,10 @@ public class ExerciseExperimentalTraining { SysCaseQuestionStepMapper caseQuestionStepMapper; @Autowired ITeaCaseStepService stepService; + @Autowired + ITeaResourceDataService resourceDataService; + @Autowired + SysResourceDataMapper resourceDataMapper; //获取案例题基础信息 @GetMapping("getCaseInfo") @@ -86,17 +89,17 @@ public class ExerciseExperimentalTraining { @PostMapping("commitCase") @ApiOperation("提交案例题") @AnonymousAccess - public ResultEntity getCaseStepInfo(@ApiParam("将学生答案传递到answer中") @RequestParam SysCaseQuestionStep caseQuestionStep) { + public ResultEntity getCaseStepInfo(@RequestParam StuCommitCaseDto commitCaseDto) { //执行记录操作 - Boolean flag = stepService.commitCase(caseQuestionStep); - return new ResultEntity<>(HttpStatus.OK, "回答正确、该步骤提交成功"); - + Boolean flag = stepService.commitCase(commitCaseDto); + if (flag){ + return new ResultEntity<>(HttpStatus.OK, "该步骤提交成功"); + }else { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该步骤重复提交"); + } } - //python在线运行 - - @AnonymousAccess @ApiOperation("实训演练页面查询") @PostMapping("getCourseChapter") @@ -130,11 +133,27 @@ public class ExerciseExperimentalTraining { return new ResultEntity>(dtoList); } + //数据集下载 + @GetMapping("downloadResourceDataByCaseId") + @ApiOperation("数据集下载") @AnonymousAccess - @ApiOperation("点击某个章节跳转到知识测评") - @PostMapping("/skipKnowledge") - public ResultEntity> skipKnowledge(@RequestParam String schoolId, @RequestParam String userId) { - return null; + public void downloadResourceDataByCaseId(@ApiParam("案例题id") @RequestParam String caseId, HttpServletResponse response) { + resourceDataService.downloadResourceDataByCaseId(caseId, response); + } + //判断案例是否有数据集 + @GetMapping("haveResourceData") + @ApiOperation("判断案例是否有数据集") + @AnonymousAccess + public Boolean haveResourceData(@ApiParam("案例题id") @RequestParam String caseId){ + SysResourceDataExample example = new SysResourceDataExample(); + example.createCriteria().andCaseIdEqualTo(caseId); + List resourceDataList = resourceDataMapper.selectByExample(example); + if(resourceDataList!=null){ + return true; + }else { + return false; + } } + } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/PythonController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/PythonController.java index 5b03195..3f640ae 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/PythonController.java +++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/PythonController.java @@ -1,6 +1,9 @@ package com.sztzjy.financial_bigdata.controller.stu;// 后端代码 +import com.sztzjy.financial_bigdata.annotation.AnonymousAccess; import com.sztzjy.financial_bigdata.util.ResultEntity; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.python.core.CompileMode; import org.python.core.Py; import org.python.core.PyCode; @@ -12,10 +15,13 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; @RestController +@Api(tags = "python接口") @RequestMapping("/api/python") public class PythonController { @PostMapping("/validate") + @ApiOperation("代码检验") + @AnonymousAccess public ResultEntity validatePythonCode(@RequestBody String code) { // 对 Python 代码进行检验 PythonInterpreter interpreter = new PythonInterpreter(); diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/TheoryTestController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/TheoryTestController.java index bd98c4f..2c7acf9 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/controller/stu/TheoryTestController.java +++ b/src/main/java/com/sztzjy/financial_bigdata/controller/stu/TheoryTestController.java @@ -60,9 +60,6 @@ public class TheoryTestController { @AnonymousAccess public ResultEntity endTheoryTest(@RequestBody StuTheoryTestDto theoryTestDto) { int flag=theoryTestService.endTheoryTest(theoryTestDto); - if(theoryTestDto.getExamDuration()>120){ - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "提交试卷超时"); - } if(flag==1){ return new ResultEntity<>(HttpStatus.OK, "提交试卷成功"); }else { diff --git a/src/main/java/com/sztzjy/financial_bigdata/entity/StuStudentExam.java b/src/main/java/com/sztzjy/financial_bigdata/entity/StuStudentExam.java index ee022a0..a4000ae 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/entity/StuStudentExam.java +++ b/src/main/java/com/sztzjy/financial_bigdata/entity/StuStudentExam.java @@ -1,6 +1,7 @@ package com.sztzjy.financial_bigdata.entity; import java.math.BigDecimal; +import java.util.Date; import io.swagger.annotations.ApiModelProperty; /** @@ -31,6 +32,12 @@ public class StuStudentExam { @ApiModelProperty("班级id") private String classId; + @ApiModelProperty("考试结束状态 true为已经交卷") + private String examEndStatus; + + @ApiModelProperty("开始考试时间") + private Date startTime; + public String getStudentExamId() { return studentExamId; } @@ -86,4 +93,20 @@ public class StuStudentExam { public void setClassId(String classId) { this.classId = classId == null ? null : classId.trim(); } + + public String getExamEndStatus() { + return examEndStatus; + } + + public void setExamEndStatus(String examEndStatus) { + this.examEndStatus = examEndStatus == null ? null : examEndStatus.trim(); + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/financial_bigdata/entity/StuStudentExamExample.java b/src/main/java/com/sztzjy/financial_bigdata/entity/StuStudentExamExample.java index 0c4dbf1..97f101b 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/entity/StuStudentExamExample.java +++ b/src/main/java/com/sztzjy/financial_bigdata/entity/StuStudentExamExample.java @@ -2,6 +2,7 @@ package com.sztzjy.financial_bigdata.entity; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; public class StuStudentExamExample { @@ -564,6 +565,136 @@ public class StuStudentExamExample { addCriterion("class_id not between", value1, value2, "classId"); return (Criteria) this; } + + public Criteria andExamEndStatusIsNull() { + addCriterion("exam_end_status is null"); + return (Criteria) this; + } + + public Criteria andExamEndStatusIsNotNull() { + addCriterion("exam_end_status is not null"); + return (Criteria) this; + } + + public Criteria andExamEndStatusEqualTo(String value) { + addCriterion("exam_end_status =", value, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusNotEqualTo(String value) { + addCriterion("exam_end_status <>", value, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusGreaterThan(String value) { + addCriterion("exam_end_status >", value, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusGreaterThanOrEqualTo(String value) { + addCriterion("exam_end_status >=", value, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusLessThan(String value) { + addCriterion("exam_end_status <", value, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusLessThanOrEqualTo(String value) { + addCriterion("exam_end_status <=", value, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusLike(String value) { + addCriterion("exam_end_status like", value, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusNotLike(String value) { + addCriterion("exam_end_status not like", value, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusIn(List values) { + addCriterion("exam_end_status in", values, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusNotIn(List values) { + addCriterion("exam_end_status not in", values, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusBetween(String value1, String value2) { + addCriterion("exam_end_status between", value1, value2, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andExamEndStatusNotBetween(String value1, String value2) { + addCriterion("exam_end_status not between", value1, value2, "examEndStatus"); + return (Criteria) this; + } + + public Criteria andStartTimeIsNull() { + addCriterion("start_time is null"); + return (Criteria) this; + } + + public Criteria andStartTimeIsNotNull() { + addCriterion("start_time is not null"); + return (Criteria) this; + } + + public Criteria andStartTimeEqualTo(Date value) { + addCriterion("start_time =", value, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeNotEqualTo(Date value) { + addCriterion("start_time <>", value, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeGreaterThan(Date value) { + addCriterion("start_time >", value, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeGreaterThanOrEqualTo(Date value) { + addCriterion("start_time >=", value, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeLessThan(Date value) { + addCriterion("start_time <", value, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeLessThanOrEqualTo(Date value) { + addCriterion("start_time <=", value, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeIn(List values) { + addCriterion("start_time in", values, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeNotIn(List values) { + addCriterion("start_time not in", values, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeBetween(Date value1, Date value2) { + addCriterion("start_time between", value1, value2, "startTime"); + return (Criteria) this; + } + + public Criteria andStartTimeNotBetween(Date value1, Date value2) { + addCriterion("start_time not between", value1, value2, "startTime"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/sztzjy/financial_bigdata/entity/StuTrainingStepRecord.java b/src/main/java/com/sztzjy/financial_bigdata/entity/StuTrainingStepRecord.java index 3504c54..02a57b1 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/entity/StuTrainingStepRecord.java +++ b/src/main/java/com/sztzjy/financial_bigdata/entity/StuTrainingStepRecord.java @@ -19,6 +19,9 @@ public class StuTrainingStepRecord { @ApiModelProperty("案例题步骤id") private String caseStepId; + @ApiModelProperty("获得分数") + private String score; + @ApiModelProperty("学生答案") private String stuAnswer; @@ -54,6 +57,14 @@ public class StuTrainingStepRecord { this.caseStepId = caseStepId == null ? null : caseStepId.trim(); } + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score == null ? null : score.trim(); + } + public String getStuAnswer() { return stuAnswer; } diff --git a/src/main/java/com/sztzjy/financial_bigdata/entity/StuTrainingStepRecordExample.java b/src/main/java/com/sztzjy/financial_bigdata/entity/StuTrainingStepRecordExample.java index 821ee14..22e9083 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/entity/StuTrainingStepRecordExample.java +++ b/src/main/java/com/sztzjy/financial_bigdata/entity/StuTrainingStepRecordExample.java @@ -383,6 +383,76 @@ public class StuTrainingStepRecordExample { addCriterion("case_step_id not between", value1, value2, "caseStepId"); return (Criteria) this; } + + public Criteria andScoreIsNull() { + addCriterion("score is null"); + return (Criteria) this; + } + + public Criteria andScoreIsNotNull() { + addCriterion("score is not null"); + return (Criteria) this; + } + + public Criteria andScoreEqualTo(String value) { + addCriterion("score =", value, "score"); + return (Criteria) this; + } + + public Criteria andScoreNotEqualTo(String value) { + addCriterion("score <>", value, "score"); + return (Criteria) this; + } + + public Criteria andScoreGreaterThan(String value) { + addCriterion("score >", value, "score"); + return (Criteria) this; + } + + public Criteria andScoreGreaterThanOrEqualTo(String value) { + addCriterion("score >=", value, "score"); + return (Criteria) this; + } + + public Criteria andScoreLessThan(String value) { + addCriterion("score <", value, "score"); + return (Criteria) this; + } + + public Criteria andScoreLessThanOrEqualTo(String value) { + addCriterion("score <=", value, "score"); + return (Criteria) this; + } + + public Criteria andScoreLike(String value) { + addCriterion("score like", value, "score"); + return (Criteria) this; + } + + public Criteria andScoreNotLike(String value) { + addCriterion("score not like", value, "score"); + return (Criteria) this; + } + + public Criteria andScoreIn(List values) { + addCriterion("score in", values, "score"); + return (Criteria) this; + } + + public Criteria andScoreNotIn(List values) { + addCriterion("score not in", values, "score"); + return (Criteria) this; + } + + public Criteria andScoreBetween(String value1, String value2) { + addCriterion("score between", value1, value2, "score"); + return (Criteria) this; + } + + public Criteria andScoreNotBetween(String value1, String value2) { + addCriterion("score not between", value1, value2, "score"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/stu/impl/ExamServiceImpl.java b/src/main/java/com/sztzjy/financial_bigdata/service/stu/impl/ExamServiceImpl.java new file mode 100644 index 0000000..4fe56b5 --- /dev/null +++ b/src/main/java/com/sztzjy/financial_bigdata/service/stu/impl/ExamServiceImpl.java @@ -0,0 +1,57 @@ +package com.sztzjy.financial_bigdata.service.stu.impl; + +import com.sztzjy.financial_bigdata.entity.SysObjectiveQuestion; +import com.sztzjy.financial_bigdata.entity.TeaExamManageWithBLOBs; +import com.sztzjy.financial_bigdata.entity.stu_dto.StuTheoryTestDto; +import com.sztzjy.financial_bigdata.mapper.SysObjectiveQuestionMapper; +import com.sztzjy.financial_bigdata.mapper.TeaExamManageMapper; +import com.sztzjy.financial_bigdata.service.stu.IExamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Service +public class ExamServiceImpl implements IExamService { + @Autowired + TeaExamManageMapper examManageMapper; + @Autowired + SysObjectiveQuestionMapper objectiveQuestionMapper; + //如果学生考试表查询不到 则新增一条数据 + //根据examManageId 查询该考试的题目idlist 再通过idlist查询题目信息进行返回 + //先判断是否考试过 如果结束考试状态不为true 判断考试时间是否超过答题时间 超过时间则不允许答题、并回显考试内容\没超过时间 则重新答题 + // 如果结束考试状态为true,则直接回显题目和考生的答题记录 + @Override + public List basicKnowledge(String examManageId, String userId) { + //查询 + + TeaExamManageWithBLOBs teaExamManageWithBLOBs = examManageMapper.selectByPrimaryKey(examManageId); + String singleIds = teaExamManageWithBLOBs.getSingleIdlist(); + String manyIds = teaExamManageWithBLOBs.getManyIdlist(); + String judgeIds = teaExamManageWithBLOBs.getJudgeIdlist(); + List singleIdList = Arrays.asList(singleIds.substring(1, singleIds.length() - 1).split(", ")); + List manyIdList = Arrays.asList(manyIds.substring(1, manyIds.length() - 1).split(", ")); + List judgeIdList = Arrays.asList(judgeIds.substring(1, judgeIds.length() - 1).split(", ")); + List objectiveQuestionList=new ArrayList<>(); + for (int i = 0; i < singleIdList.size(); i++) { + SysObjectiveQuestion objectiveQuestion = objectiveQuestionMapper.selectByPrimaryKey(singleIdList.get(i)); + objectiveQuestionList.add(objectiveQuestion); + } + for (int i = 0; i < manyIdList.size(); i++) { + SysObjectiveQuestion objectiveQuestion = objectiveQuestionMapper.selectByPrimaryKey(manyIdList.get(i)); + objectiveQuestionList.add(objectiveQuestion); + } + for (int i = 0; i < judgeIdList.size(); i++) { + SysObjectiveQuestion objectiveQuestion = objectiveQuestionMapper.selectByPrimaryKey(judgeIdList.get(i)); + objectiveQuestionList.add(objectiveQuestion); + } + return objectiveQuestionList; + } + + @Override + public int commitExam(StuTheoryTestDto theoryTestDto) { + return 0; + } +} diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaCaseStepService.java b/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaCaseStepService.java index 6775b9b..e1fa648 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaCaseStepService.java +++ b/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaCaseStepService.java @@ -1,6 +1,7 @@ package com.sztzjy.financial_bigdata.service.tea; import com.sztzjy.financial_bigdata.entity.SysCaseQuestionStep; +import com.sztzjy.financial_bigdata.entity.stu_dto.StuCommitCaseDto; import java.util.List; @@ -15,5 +16,5 @@ public interface ITeaCaseStepService { SysCaseQuestionStep selectCaseStepDetails(String caseStepId); - Boolean commitCase(SysCaseQuestionStep caseQuestionStep); + Boolean commitCase(StuCommitCaseDto commitCaseDto); } diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaResourceDataService.java b/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaResourceDataService.java index 68163d7..57925c9 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaResourceDataService.java +++ b/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaResourceDataService.java @@ -14,4 +14,6 @@ public interface ITeaResourceDataService { Boolean deleteResourceData(String schoolId, String resourceDataId); void downloadResourceData(String resourceDataId, HttpServletResponse response); + + void downloadResourceDataByCaseId(String caseId, HttpServletResponse response); } diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaCaseStepServiceImpl.java b/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaCaseStepServiceImpl.java index e5afcd3..7f40683 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaCaseStepServiceImpl.java +++ b/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaCaseStepServiceImpl.java @@ -1,15 +1,18 @@ package com.sztzjy.financial_bigdata.service.tea.impl; import com.sztzjy.financial_bigdata.config.Constant; -import com.sztzjy.financial_bigdata.entity.SysCaseQuestion; -import com.sztzjy.financial_bigdata.entity.SysCaseQuestionStep; -import com.sztzjy.financial_bigdata.entity.SysCaseQuestionStepExample; +import com.sztzjy.financial_bigdata.entity.*; +import com.sztzjy.financial_bigdata.entity.stu_dto.StuCommitCaseDto; +import com.sztzjy.financial_bigdata.mapper.StuTrainingMapper; +import com.sztzjy.financial_bigdata.mapper.StuTrainingStepRecordMapper; import com.sztzjy.financial_bigdata.mapper.SysCaseQuestionMapper; import com.sztzjy.financial_bigdata.mapper.SysCaseQuestionStepMapper; import com.sztzjy.financial_bigdata.service.tea.ITeaCaseStepService; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; import java.util.UUID; @@ -19,6 +22,10 @@ public class TeaCaseStepServiceImpl implements ITeaCaseStepService { SysCaseQuestionStepMapper caseQuestionStepMapper; @Autowired SysCaseQuestionMapper caseQuestionMapper; + @Autowired + StuTrainingStepRecordMapper trainingStepRecordMapper; + @Autowired + StuTrainingMapper trainingMapper; @Override public Boolean insertCase(SysCaseQuestionStep caseQuestionStep,String schoolId) { @@ -77,18 +84,70 @@ public class TeaCaseStepServiceImpl implements ITeaCaseStepService { return sysCaseQuestionStep; } - //************ @Override - public Boolean commitCase(SysCaseQuestionStep caseQuestionStep) { -// SysCaseQuestionStep dbCaseQuestionStep = selectCaseStepDetails(caseQuestionStep.getCaseStepId()); -// if(dbCaseQuestionStep.getAnswer().equals(caseQuestionStep.getAnswer())){ -// //答案正确 将答案存储到学生实训表中,并设置得分,更新实验实训得分 如果所有步骤的案例题分数都已存在、修改实验实训完成状态并修改进度 -// Integer sort = caseQuestionStep.getSort(); -// caseQuestionStep.getAnswer() -// }else { -// -// } - return null; + public Boolean commitCase(StuCommitCaseDto commitCaseDto) { + //先判断该步骤是否上传过 + StuTrainingStepRecordExample example = new StuTrainingStepRecordExample(); + example.createCriteria().andUserIdEqualTo(commitCaseDto.getUserId()).andCaseStepIdEqualTo(commitCaseDto.getCaseStepId()); + List stuTrainingStepRecords = trainingStepRecordMapper.selectByExample(example); + if(stuTrainingStepRecords==null){ //未答过该步骤题目 新增数据到stepRecord表中 + SysCaseQuestionStep dbCaseQuestionStep = selectCaseStepDetails(commitCaseDto.getCaseStepId()); + StuTrainingStepRecord stepRecord = new StuTrainingStepRecord(); + stepRecord.setRecordId(String.valueOf(UUID.randomUUID())); + stepRecord.setUserId(commitCaseDto.getUserId()); + stepRecord.setCaseId(commitCaseDto.getCaseId()); + stepRecord.setCaseStepId(commitCaseDto.getCaseStepId()); + stepRecord.setStuAnswer(commitCaseDto.getStuAnswer()); + SysCaseQuestionStep sysCaseQuestionStep = caseQuestionStepMapper.selectByPrimaryKey(commitCaseDto.getCaseStepId()); + if(dbCaseQuestionStep.getAnswer().equals(commitCaseDto.getStuAnswer())){ + //答案正确 记录到案例步骤记录表中 + stepRecord.setScore(String.valueOf(sysCaseQuestionStep.getScore())); + + //再修改学生实训表中的部分参数 先获取学生实训表中的数据 + StuTrainingWithBLOBs training = trainingMapper.selectByPrimaryKey(commitCaseDto.getStuTrainingId()); + //如果案例题学生的实验实训完成情况=0 则实训进度+1否则 实训进度不加 并累加案例题学生得分 修改实验实训完成状态 + if(training.getExpTrainingCompleteStatus()==null){ + if(training.getProgress()==null){ + training.setProgress(BigDecimal.ONE); + }else { + training.setProgress(training.getProgress().add(BigDecimal.valueOf(1))); + } + training.setExpTrainingCompleteStatus(1); + } + if(training.getCaseStuScore()==null){ + training.setCaseStuScore(sysCaseQuestionStep.getScore()); + }else { + training.setCaseStuScore(training.getCaseStuScore().add(sysCaseQuestionStep.getScore())); + } + trainingMapper.updateByPrimaryKeyWithBLOBs(training); + }else { //回答错误 记录到案例步骤记录表中 + stepRecord.setScore("0"); + //再修改学生实训表中的部分参数 先获取学生实训表中的数据 + StuTrainingWithBLOBs training = trainingMapper.selectByPrimaryKey(commitCaseDto.getStuTrainingId()); + //如果案例题学生的实验实训完成情况=0 则实训进度+1否则 实训进度不加 并累加案例题学生得分 修改实验实训完成状态 + if(training.getExpTrainingCompleteStatus()==null){ + if(training.getProgress()==null){ + training.setProgress(BigDecimal.ONE); + }else { + training.setProgress(training.getProgress().add(BigDecimal.valueOf(1))); + } + training.setExpTrainingCompleteStatus(1); + } + if(training.getCaseStuScore()==null){ + training.setCaseStuScore(sysCaseQuestionStep.getScore()); + }else { + training.setCaseStuScore(training.getCaseStuScore().add(sysCaseQuestionStep.getScore())); + } + trainingMapper.updateByPrimaryKeyWithBLOBs(training); + } + trainingStepRecordMapper.insert(stepRecord); + return true; + }else { //回答过该题 + StuTrainingStepRecord stepRecord = stuTrainingStepRecords.get(0); + stepRecord.setStuAnswer(commitCaseDto.getStuAnswer()); + trainingStepRecordMapper.updateByPrimaryKeyWithBLOBs(stepRecord); + return false; + } } } diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaResourceDataServiceImpl.java b/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaResourceDataServiceImpl.java index a4c657a..9d0f845 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaResourceDataServiceImpl.java +++ b/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaResourceDataServiceImpl.java @@ -73,4 +73,17 @@ public class TeaResourceDataServiceImpl implements ITeaResourceDataService { SysResourceData sysResourceData = resourceDataMapper.selectByPrimaryKey(resourceDataId); fileUtil.download(response, sysResourceData.getResourceName(), sysResourceData.getUrl()); } + + @Override + public void downloadResourceDataByCaseId(String caseId, HttpServletResponse response) { + SysResourceDataExample example = new SysResourceDataExample(); + example.createCriteria().andCaseIdEqualTo(caseId); + List resourceDataList = resourceDataMapper.selectByExample(example); + if(resourceDataList!=null){ + for (int i = 0; i < resourceDataList.size(); i++) { + SysResourceData sysResourceData = resourceDataList.get(i); + fileUtil.download(response,sysResourceData.getResourceName(), sysResourceData.getUrl()); + } + } + } } diff --git a/src/main/resources/mapper/StuStudentExamMapper.xml b/src/main/resources/mapper/StuStudentExamMapper.xml index c165448..b01b577 100644 --- a/src/main/resources/mapper/StuStudentExamMapper.xml +++ b/src/main/resources/mapper/StuStudentExamMapper.xml @@ -9,6 +9,8 @@ + + @@ -75,7 +77,7 @@ student_exam_id, exam_manage_id, userid, Objective_score, case_score, total_score, - class_id + class_id, exam_end_status, start_time single_stu_answer_ids, many_stu_answer_ids, judge_stu_answer_ids @@ -131,11 +133,13 @@ insert into stu_student_exam (student_exam_id, exam_manage_id, userid, Objective_score, case_score, total_score, - class_id, single_stu_answer_ids, many_stu_answer_ids, + class_id, exam_end_status, start_time, + single_stu_answer_ids, many_stu_answer_ids, judge_stu_answer_ids) values (#{studentExamId,jdbcType=VARCHAR}, #{examManageId,jdbcType=VARCHAR}, #{userid,jdbcType=VARCHAR}, #{objectiveScore,jdbcType=DECIMAL}, #{caseScore,jdbcType=DECIMAL}, #{totalScore,jdbcType=DECIMAL}, - #{classId,jdbcType=VARCHAR}, #{singleStuAnswerIds,jdbcType=LONGVARCHAR}, #{manyStuAnswerIds,jdbcType=LONGVARCHAR}, + #{classId,jdbcType=VARCHAR}, #{examEndStatus,jdbcType=VARCHAR}, #{startTime,jdbcType=TIMESTAMP}, + #{singleStuAnswerIds,jdbcType=LONGVARCHAR}, #{manyStuAnswerIds,jdbcType=LONGVARCHAR}, #{judgeStuAnswerIds,jdbcType=LONGVARCHAR}) @@ -162,6 +166,12 @@ class_id, + + exam_end_status, + + + start_time, + single_stu_answer_ids, @@ -194,6 +204,12 @@ #{classId,jdbcType=VARCHAR}, + + #{examEndStatus,jdbcType=VARCHAR}, + + + #{startTime,jdbcType=TIMESTAMP}, + #{singleStuAnswerIds,jdbcType=LONGVARCHAR}, @@ -235,6 +251,12 @@ class_id = #{record.classId,jdbcType=VARCHAR}, + + exam_end_status = #{record.examEndStatus,jdbcType=VARCHAR}, + + + start_time = #{record.startTime,jdbcType=TIMESTAMP}, + single_stu_answer_ids = #{record.singleStuAnswerIds,jdbcType=LONGVARCHAR}, @@ -258,6 +280,8 @@ case_score = #{record.caseScore,jdbcType=DECIMAL}, total_score = #{record.totalScore,jdbcType=DECIMAL}, class_id = #{record.classId,jdbcType=VARCHAR}, + exam_end_status = #{record.examEndStatus,jdbcType=VARCHAR}, + start_time = #{record.startTime,jdbcType=TIMESTAMP}, single_stu_answer_ids = #{record.singleStuAnswerIds,jdbcType=LONGVARCHAR}, many_stu_answer_ids = #{record.manyStuAnswerIds,jdbcType=LONGVARCHAR}, judge_stu_answer_ids = #{record.judgeStuAnswerIds,jdbcType=LONGVARCHAR} @@ -273,7 +297,9 @@ Objective_score = #{record.objectiveScore,jdbcType=DECIMAL}, case_score = #{record.caseScore,jdbcType=DECIMAL}, total_score = #{record.totalScore,jdbcType=DECIMAL}, - class_id = #{record.classId,jdbcType=VARCHAR} + class_id = #{record.classId,jdbcType=VARCHAR}, + exam_end_status = #{record.examEndStatus,jdbcType=VARCHAR}, + start_time = #{record.startTime,jdbcType=TIMESTAMP} @@ -299,6 +325,12 @@ class_id = #{classId,jdbcType=VARCHAR}, + + exam_end_status = #{examEndStatus,jdbcType=VARCHAR}, + + + start_time = #{startTime,jdbcType=TIMESTAMP}, + single_stu_answer_ids = #{singleStuAnswerIds,jdbcType=LONGVARCHAR}, @@ -319,6 +351,8 @@ case_score = #{caseScore,jdbcType=DECIMAL}, total_score = #{totalScore,jdbcType=DECIMAL}, class_id = #{classId,jdbcType=VARCHAR}, + exam_end_status = #{examEndStatus,jdbcType=VARCHAR}, + start_time = #{startTime,jdbcType=TIMESTAMP}, single_stu_answer_ids = #{singleStuAnswerIds,jdbcType=LONGVARCHAR}, many_stu_answer_ids = #{manyStuAnswerIds,jdbcType=LONGVARCHAR}, judge_stu_answer_ids = #{judgeStuAnswerIds,jdbcType=LONGVARCHAR} @@ -331,7 +365,9 @@ Objective_score = #{objectiveScore,jdbcType=DECIMAL}, case_score = #{caseScore,jdbcType=DECIMAL}, total_score = #{totalScore,jdbcType=DECIMAL}, - class_id = #{classId,jdbcType=VARCHAR} + class_id = #{classId,jdbcType=VARCHAR}, + exam_end_status = #{examEndStatus,jdbcType=VARCHAR}, + start_time = #{startTime,jdbcType=TIMESTAMP} where student_exam_id = #{studentExamId,jdbcType=VARCHAR} \ No newline at end of file diff --git a/src/main/resources/mapper/StuTrainingStepRecordMapper.xml b/src/main/resources/mapper/StuTrainingStepRecordMapper.xml index f282450..a3be83f 100644 --- a/src/main/resources/mapper/StuTrainingStepRecordMapper.xml +++ b/src/main/resources/mapper/StuTrainingStepRecordMapper.xml @@ -6,6 +6,7 @@ + @@ -69,7 +70,7 @@ - record_id, user_id, case_id, case_step_id + record_id, user_id, case_id, case_step_id, score stu_answer @@ -124,9 +125,11 @@ insert into stu_training_step_record (record_id, user_id, case_id, - case_step_id, stu_answer) + case_step_id, score, stu_answer + ) values (#{recordId,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{caseId,jdbcType=VARCHAR}, - #{caseStepId,jdbcType=VARCHAR}, #{stuAnswer,jdbcType=LONGVARCHAR}) + #{caseStepId,jdbcType=VARCHAR}, #{score,jdbcType=VARCHAR}, #{stuAnswer,jdbcType=LONGVARCHAR} + ) insert into stu_training_step_record @@ -143,6 +146,9 @@ case_step_id, + + score, + stu_answer, @@ -160,6 +166,9 @@ #{caseStepId,jdbcType=VARCHAR}, + + #{score,jdbcType=VARCHAR}, + #{stuAnswer,jdbcType=LONGVARCHAR}, @@ -186,6 +195,9 @@ case_step_id = #{record.caseStepId,jdbcType=VARCHAR}, + + score = #{record.score,jdbcType=VARCHAR}, + stu_answer = #{record.stuAnswer,jdbcType=LONGVARCHAR}, @@ -200,6 +212,7 @@ user_id = #{record.userId,jdbcType=VARCHAR}, case_id = #{record.caseId,jdbcType=VARCHAR}, case_step_id = #{record.caseStepId,jdbcType=VARCHAR}, + score = #{record.score,jdbcType=VARCHAR}, stu_answer = #{record.stuAnswer,jdbcType=LONGVARCHAR} @@ -210,7 +223,8 @@ set record_id = #{record.recordId,jdbcType=VARCHAR}, user_id = #{record.userId,jdbcType=VARCHAR}, case_id = #{record.caseId,jdbcType=VARCHAR}, - case_step_id = #{record.caseStepId,jdbcType=VARCHAR} + case_step_id = #{record.caseStepId,jdbcType=VARCHAR}, + score = #{record.score,jdbcType=VARCHAR} @@ -227,6 +241,9 @@ case_step_id = #{caseStepId,jdbcType=VARCHAR}, + + score = #{score,jdbcType=VARCHAR}, + stu_answer = #{stuAnswer,jdbcType=LONGVARCHAR}, @@ -238,6 +255,7 @@ set user_id = #{userId,jdbcType=VARCHAR}, case_id = #{caseId,jdbcType=VARCHAR}, case_step_id = #{caseStepId,jdbcType=VARCHAR}, + score = #{score,jdbcType=VARCHAR}, stu_answer = #{stuAnswer,jdbcType=LONGVARCHAR} where record_id = #{recordId,jdbcType=VARCHAR} @@ -245,7 +263,8 @@ update stu_training_step_record set user_id = #{userId,jdbcType=VARCHAR}, case_id = #{caseId,jdbcType=VARCHAR}, - case_step_id = #{caseStepId,jdbcType=VARCHAR} + case_step_id = #{caseStepId,jdbcType=VARCHAR}, + score = #{score,jdbcType=VARCHAR} where record_id = #{recordId,jdbcType=VARCHAR} \ No newline at end of file