src/main/java/com/ycl/jxkg/controller/admin/ExamPaperScoreController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperScoreVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/ExamPaperScoreMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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); } } 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); } } src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperScoreVO.java
New file @@ -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; } 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; } 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">