src/main/java/com/ycl/jxkg/controller/admin/ExamPaperScoreController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ClassExamScoreInfoVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperInfoVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/ExamPaperScoreService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/ExamPaperScoreMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ycl/jxkg/controller/admin/ExamPaperScoreController.java
@@ -7,6 +7,7 @@ import com.ycl.jxkg.domain.entity.ExamPaperScore; import com.ycl.jxkg.domain.entity.User; import com.ycl.jxkg.domain.vo.PaperFixQuestionVO; import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperInfoVO; 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; @@ -71,9 +72,9 @@ return Result.ok(examPaperScoreVO); } @PostMapping("/queryMaxAndMinScore/{id}") public Result queryMaxAndMinScore(@PathVariable Integer id) { return examPaperScoreService.queryMaxAndMinScore(id); @PostMapping("/getExamPaperInfo/{id}") public Result<ExamPaperInfoVO> getExamPaperInfo(@PathVariable Integer id) { return examPaperScoreService.getExamPaperInfo(id); } } src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ClassExamScoreInfoVO.java
New file @@ -0,0 +1,18 @@ package com.ycl.jxkg.domain.vo.admin.exam; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; @Data @AllArgsConstructor @NoArgsConstructor public class ClassExamScoreInfoVO { private Integer userId; private String realName; private String examName; private BigDecimal totalScore; private Integer lackUserCount; } src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperInfoVO.java
New file @@ -0,0 +1,38 @@ package com.ycl.jxkg.domain.vo.admin.exam; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor public class ExamPaperInfoVO { /** * 应考人数 */ private Integer totalUserCount; /** * 缺考人数 */ private Integer lackUserCount; /** * 最高分 */ private BigDecimal highestScore; /** * 最低分 */ private BigDecimal lowestScore; /** * 班级学员名称 */ private List<String> userNames; /** * 学员考试成绩 */ private List<BigDecimal> userScores; } src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.jxkg.domain.entity.ExamPaperScore; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.vo.admin.exam.ClassExamScoreInfoVO; import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO; import com.ycl.jxkg.domain.vo.admin.paper.UserAnswerPageRequestVO; import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO; @@ -41,4 +42,6 @@ ExamPaperScore checkWrong(@Valid CheckWrongVO model); List<ClassExamScoreInfoVO> getClassExamScoreInfo(Integer id); } src/main/java/com/ycl/jxkg/service/ExamPaperScoreService.java
@@ -6,6 +6,7 @@ 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.ExamPaperInfoVO; import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO; import com.ycl.jxkg.domain.vo.admin.paper.UserAnswerPageRequestVO; import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO; @@ -79,10 +80,11 @@ */ PageInfo<UserAnswerPageResponseVO> pageUser(UserAnswerPageRequestVO model); /** * 最高最低分 * 考试详情 * @param id 查询条件 * @return */ Result queryMaxAndMinScore(Integer id); Result<ExamPaperInfoVO> getExamPaperInfo(Integer id); } src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java
@@ -8,6 +8,8 @@ import com.ycl.jxkg.domain.ExamPaperAnswerInfo; import com.ycl.jxkg.domain.entity.*; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.vo.admin.exam.ClassExamScoreInfoVO; import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperInfoVO; import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO; import com.ycl.jxkg.domain.vo.admin.paper.UserAnswerPageRequestVO; import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitItemVO; @@ -31,6 +33,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -296,21 +299,42 @@ examPaperScoreMapper.pageUser(model)); } @Override public Result queryMaxAndMinScore(Integer id) { List<ExamPaperScore> list = new ArrayList<>(); public Result<ExamPaperInfoVO> getExamPaperInfo(Integer id) { ExamPaperInfoVO result = new ExamPaperInfoVO(); // 查询考试信息 ExamPaperAnswerPageRequestVO model = new ExamPaperAnswerPageRequestVO(); model.setExamId(id); // 最高分、最低分 ExamPaperScore max = examPaperScoreMapper.selectOne(new LambdaQueryWrapper<>(ExamPaperScore.class) .eq(ExamPaperScore::getExamId, id) .orderByDesc(ExamPaperScore::getTotalScore) .last("limit 1")); list.add(max); if (null != max) { result.setHighestScore(max.getTotalScore()); ExamPaperScore min = examPaperScoreMapper.selectOne(new LambdaQueryWrapper<>(ExamPaperScore.class) .eq(ExamPaperScore::getExamId, id) .orderByAsc(ExamPaperScore::getTotalScore) .last("limit 1")); list.add(min); // 判断max和min是否为同一条数据 if (null != min && !max.getId().equals(min.getId())) { result.setLowestScore(min.getTotalScore()); }else { result.setLowestScore(BigDecimal.valueOf(0)); } return Result.ok(list); }else { result.setHighestScore(BigDecimal.valueOf(0)); result.setLowestScore(BigDecimal.valueOf(0)); } // 查询班级学员名称及考试成绩 List<ClassExamScoreInfoVO> info = examPaperScoreMapper.getClassExamScoreInfo(id); result.setTotalUserCount(info.size()); ClassExamScoreInfoVO classExamScoreInfoVO = info.get(0); result.setLackUserCount(classExamScoreInfoVO.getLackUserCount()); result.setUserNames(info.stream().map(item -> item.getRealName()).collect(Collectors.toList())); result.setUserScores(info.stream().map(item -> item.getTotalScore()).collect(Collectors.toList())); return Result.ok(result); } } src/main/resources/mapper/ExamPaperScoreMapper.xml
@@ -21,6 +21,7 @@ <result column="paper_content" property="paperContent"/> <result column="navbar" property="navbar"/> </resultMap> <sql id="Base_Column_List"> id, exam_id, @@ -191,4 +192,20 @@ AND pc.questionId = #{questionId} </where> </select> <select id="getClassExamScoreInfo" resultType="com.ycl.jxkg.domain.vo.admin.exam.ClassExamScoreInfoVO"> SELECT u.id AS user_id, u.real_name, (select exam_name from t_exam e WHERE e.id = #{id}) AS exam_name, COALESCE(eps.total_score,0.00) AS total_score, COUNT(CASE WHEN eps.id IS NULL THEN 1 END) OVER () AS lackUserCount FROM t_user u LEFT JOIN t_classes_user cu ON cu.user_id = u.id LEFT JOIN t_exam_paper_score eps ON eps.user_id = u.id and eps.exam_id = #{id} WHERE cu.deleted = 0 and teacher = 0 and cu.classes_id = (select classes_id from t_exam e WHERE e.id = #{id}) </select> </mapper>