From 247cb86585a1d1894596ed18a6c93efecb992946 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期四, 14 十一月 2024 10:34:27 +0800
Subject: [PATCH] 班级成绩图表分析

---
 src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java
index 5295872..58608cf 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperScoreServiceImpl.java
@@ -1,16 +1,22 @@
 package com.ycl.jxkg.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.ycl.jxkg.base.Result;
 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;
 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.domain.vo.student.exampaper.UserAnswerPageResponseVO;
 import com.ycl.jxkg.enums.ExamPaperTypeEnum;
 import com.ycl.jxkg.enums.QuestionTypeEnum;
 import com.ycl.jxkg.mapper.ExamPaperMapper;
@@ -27,6 +33,8 @@
 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;
 import java.util.stream.Collectors;
@@ -284,4 +292,49 @@
         return PageHelper.startPage(model.getPageIndex(), model.getPageSize()).doSelectPageInfo(() ->
                 examPaperScoreMapper.pageExamPaper(model));
     }
+
+    @Override
+    public PageInfo<UserAnswerPageResponseVO> pageUser(UserAnswerPageRequestVO model) {
+        return PageHelper.startPage(model.getPageIndex(), model.getPageSize()).doSelectPageInfo(() ->
+                examPaperScoreMapper.pageUser(model));
+    }
+
+
+
+    @Override
+    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"));
+        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"));
+            // 鍒ゆ柇max鍜宮in鏄惁涓哄悓涓�鏉℃暟鎹�
+            if (null != min && !max.getId().equals(min.getId())) {
+                result.setLowestScore(min.getTotalScore());
+            }else {
+                result.setLowestScore(BigDecimal.valueOf(0));
+            }
+        }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);
+    }
 }

--
Gitblit v1.8.0