From 8cc9559b0a1509e655acf8f939318368a1fe95d6 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期二, 02 七月 2024 10:58:34 +0800 Subject: [PATCH] feat:新增考试记录题目查看 --- src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperScoreVO.java | 42 +++++++++++++++++++++ src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java | 6 +- src/main/resources/mapper/ExamPaperScoreMapper.xml | 13 +++--- src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java | 26 ++++++++----- src/main/java/com/ycl/jxkg/controller/admin/ExamPaperScoreController.java | 29 ++++++++------ 5 files changed, 84 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperScoreController.java b/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperScoreController.java index 8a31e74..e7462d0 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperScoreController.java +++ b/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperScoreController.java @@ -1,24 +1,28 @@ package com.ycl.jxkg.controller.admin; +import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; import com.ycl.jxkg.domain.entity.ExamPaperScore; -import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperEditRequestVO; +import com.ycl.jxkg.domain.entity.User; +import com.ycl.jxkg.domain.vo.PaperFixQuestionVO; +import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperMarkNavbarVO; +import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperScoreVO; import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO; -import com.ycl.jxkg.domain.vo.student.exam.ExamPaperReadVO; -import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerExportVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO; import com.ycl.jxkg.service.ExamPaperScoreService; -import com.ycl.jxkg.service.ExamPaperService; +import com.ycl.jxkg.service.UserService; import com.ycl.jxkg.utils.ExcelUtils; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; +import java.util.Objects; @RequiredArgsConstructor @RestController("AdminExamPaperAnswerController") @@ -26,7 +30,7 @@ public class ExamPaperScoreController extends BaseApiController { private final ExamPaperScoreService examPaperScoreService; - private final ExamPaperService examPaperService; + private final UserService userService; @PostMapping("/pageExamPaper") public Result<PageInfo<ExamPaperAnswerPageResponseVO>> pageExamPaper(@RequestBody ExamPaperAnswerPageRequestVO model) { @@ -46,14 +50,15 @@ } @PostMapping("/read/{id}") - public Result<ExamPaperReadVO> read(@PathVariable Integer id) { + public Result<ExamPaperScoreVO> read(@PathVariable Integer id) { ExamPaperScore examPaperScore = examPaperScoreService.getById(id); - ExamPaperReadVO vm = new ExamPaperReadVO(); - ExamPaperEditRequestVO paper = examPaperService.examPaperToVM(examPaperScore.getPaperId()); - ExamPaperSubmitVO answer = examPaperScoreService.examPaperAnswerToVM(examPaperScore.getId()); - vm.setPaper(paper); - vm.setAnswer(answer); - return Result.ok(vm); + ExamPaperScoreVO examPaperScoreVO = new ExamPaperScoreVO(); + BeanUtils.copyProperties(examPaperScore, examPaperScoreVO); + User user = userService.getById(examPaperScore.getUserId()); + examPaperScoreVO.setUserName(Objects.nonNull(user) ? user.getRealName() : "鐢ㄦ埛宸叉敞閿�"); + examPaperScoreVO.setNavbar(JSON.parseArray(examPaperScore.getNavbar(), ExamPaperMarkNavbarVO.class)); + examPaperScoreVO.setTitleItems(JSON.parseArray(examPaperScore.getPaperContent(), PaperFixQuestionVO.class)); + return Result.ok(examPaperScoreVO); } } diff --git a/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java b/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java index fe52355..acbdaf4 100644 --- a/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java +++ b/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java @@ -1,24 +1,29 @@ package com.ycl.jxkg.controller.student; +import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; import com.ycl.jxkg.domain.ExamPaperAnswerInfo; import com.ycl.jxkg.domain.entity.ExamPaperScore; import com.ycl.jxkg.domain.entity.User; -import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperEditRequestVO; -import com.ycl.jxkg.domain.vo.student.exam.ExamPaperReadVO; +import com.ycl.jxkg.domain.vo.PaperFixQuestionVO; +import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperMarkNavbarVO; +import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperScoreVO; import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO; import com.ycl.jxkg.service.ExamPaperScoreService; import com.ycl.jxkg.service.ExamPaperService; import com.ycl.jxkg.service.SubjectService; +import com.ycl.jxkg.service.UserService; import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.context.ApplicationEventPublisher; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.Objects; @RequiredArgsConstructor @RestController("StudentExamPaperAnswerController") @@ -26,6 +31,7 @@ public class ExamPaperAnswerController extends BaseApiController { private final ExamPaperScoreService examPaperScoreService; + private final UserService userService; private final ExamPaperService examPaperService; private final SubjectService subjectService; private final ApplicationEventPublisher eventPublisher; @@ -82,15 +88,15 @@ } @RequestMapping(value = "/read/{id}", method = RequestMethod.POST) - public Result<ExamPaperReadVO> read(@PathVariable Integer id) { + public Result<ExamPaperScoreVO> read(@PathVariable Integer id) { ExamPaperScore examPaperScore = examPaperScoreService.getById(id); - ExamPaperReadVO vm = new ExamPaperReadVO(); - ExamPaperEditRequestVO paper = examPaperService.examPaperToVM(examPaperScore.getPaperId()); - ExamPaperSubmitVO answer = examPaperScoreService.examPaperAnswerToVM(examPaperScore.getId()); - vm.setPaper(paper); - vm.setAnswer(answer); - return Result.ok(vm); + ExamPaperScoreVO examPaperScoreVO = new ExamPaperScoreVO(); + BeanUtils.copyProperties(examPaperScore, examPaperScoreVO); + User user = userService.getById(examPaperScore.getUserId()); + examPaperScoreVO.setUserName(Objects.nonNull(user) ? user.getRealName() : "鐢ㄦ埛宸叉敞閿�"); + examPaperScoreVO.setNavbar(JSON.parseArray(examPaperScore.getNavbar(), ExamPaperMarkNavbarVO.class)); + examPaperScoreVO.setTitleItems(JSON.parseArray(examPaperScore.getPaperContent(), PaperFixQuestionVO.class)); + return Result.ok(examPaperScoreVO); } - } diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperScoreVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperScoreVO.java new file mode 100644 index 0000000..41a8208 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperScoreVO.java @@ -0,0 +1,42 @@ +package com.ycl.jxkg.domain.vo.admin.exam; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ycl.jxkg.domain.vo.PaperFixQuestionVO; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@Data +public class ExamPaperScoreVO { + /** 鑰冭瘯id */ + private Integer examId; + /** 鑰冭瘯鍚� */ + private String examName; + /** 璇曞嵎id */ + private Integer paperId; + /** 璇曞嵎绫诲瀷 */ + private Integer paperType; + /** 绛旈瀛︾敓id */ + private Integer userId; + /** 绛旈瀛︾敓鍚� */ + private String userName; + /** 鍋氶鏃堕暱 */ + private Integer doTime; + /** 浜ゅ嵎鏃堕棿 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date submitTime; + /** 寰楀垎 */ + private BigDecimal score; + /** 璇曞嵎鎬诲垎 */ + private BigDecimal totalScore; + /** 澶氶�夋墸鍒嗙被鍨� */ + private Integer deductType; + /** 澶氶�夋墸鍒嗗弬鏁� */ + private BigDecimal deductScore; + /** 棰樼洰 */ + private List<PaperFixQuestionVO> titleItems; + /** 棰樼洰闆嗗悎(鐢ㄤ簬鍓嶇璺宠浆瀵瑰簲棰樼洰) */ + private List<ExamPaperMarkNavbarVO> navbar; +} diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java index a12009c..40f1908 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java @@ -12,7 +12,7 @@ */ @Data -@ColumnWidth(18) +@ColumnWidth(22) @ContentStyle(horizontalAlignment= HorizontalAlignmentEnum.CENTER) public class ExamPaperAnswerExportVO { @@ -31,10 +31,10 @@ @ExcelProperty("棰樼洰鎬绘暟") private Integer questionCount; - @ExcelProperty("绛旈鏃堕棿") + @ExcelProperty("绛旈鏃堕棿锛堢锛�") private String doTime; @ExcelProperty("鎻愪氦鏃堕棿") - private String createTime; + private String submitTime; } diff --git a/src/main/resources/mapper/ExamPaperScoreMapper.xml b/src/main/resources/mapper/ExamPaperScoreMapper.xml index cc85278..0c24845 100644 --- a/src/main/resources/mapper/ExamPaperScoreMapper.xml +++ b/src/main/resources/mapper/ExamPaperScoreMapper.xml @@ -45,13 +45,13 @@ <select id="studentPage" resultType="com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO"> SELECT a.*, - ep.name as paperName + ep.name AS paperName FROM t_exam_paper_score a INNER JOIN t_exam_paper ep ON ep.id = paper_id AND ep.deleted = 0 <where> - and user_id = #{createUser} + AND user_id = #{createUser} <if test="examName != null and examName != ''"> - and INSTR(exam_name, #{examName}) + AND INSTR(exam_name, #{examName}) </if> </where> </select> @@ -97,7 +97,7 @@ <select id="adminPage" resultType="com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO"> SELECT - a.*, b.real_name AS userName, c.name as paperName + a.id, a.exam_name, a.score, a.total_score, a.question_correct, a.question_count, a.do_time, a.status, a.submit_time, b.real_name AS userName, c.name as paperName FROM t_exam_paper_score a INNER JOIN t_user b ON a.user_id = b.id AND b.deleted = 0 INNER JOIN t_exam_paper c ON a.paper_id = c.id AND c.deleted = 0 @@ -121,15 +121,14 @@ b.name AS subjectName, c.real_name AS userName, IFNULL(COUNT(DISTINCT d.id), 0) AS personAnswerNum, - IFNULL(COUNT(DISTINCT f.id), 0) AS personTotalNum, + IFNULL(COUNT(DISTINCT e.id), 0) AS personTotalNum, t.exam_name FROM t_exam_paper a INNER JOIN t_exam t ON a.id = t.exam_paper_id AND t.deleted = 0 LEFT JOIN t_subject b ON a.subject_id = b.id AND b.deleted = 0 LEFT JOIN t_user c ON t.teacher_id = c.id AND c.deleted = 0 LEFT JOIN t_exam_paper_score d ON t.id = d.exam_id - LEFT JOIN t_exam_paper_classes e ON a.id = e.exam_paper_id - LEFT JOIN t_classes_user f ON e.classes_id = f.classes_id + LEFT JOIN t_classes_user e ON t.classes_id = e.classes_id <where> a.deleted = 0 <if test="subjectId != null and subjectId.size() > 0"> -- Gitblit v1.8.0