From 6350331c30648b1d2cec4715f24dca12068c961b Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期五, 07 六月 2024 17:23:10 +0800
Subject: [PATCH] feat:成绩导出

---
 src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java |   40 +++++++++++++
 src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java          |   13 ++++
 src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java             |    5 +
 src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java                      |    7 ++
 src/main/java/com/ycl/jxkg/utils/ExcelUtils.java                                    |   61 ++++++++++++++++++++
 pom.xml                                                                             |    7 ++
 6 files changed, 133 insertions(+), 0 deletions(-)

diff --git a/pom.xml b/pom.xml
index fbd1c5a..f4960a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,6 +20,7 @@
         <mybatisplus.version>3.5.4</mybatisplus.version>
         <lombok.version>1.18.24</lombok.version>
         <knife.version>3.0.3</knife.version>
+        <easyexcel.version>3.3.2</easyexcel.version>
     </properties>
 
 
@@ -159,6 +160,12 @@
             <optional>true</optional>
         </dependency>
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>${easyexcel.version}</version>
+        </dependency>
+
     </dependencies>
 
 
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java b/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java
index c2b7566..28d7d0d 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java
@@ -8,11 +8,17 @@
 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.ExamPaperAnswerService;
 import com.ycl.jxkg.service.ExamPaperService;
+import com.ycl.jxkg.utils.ExcelUtils;
 import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 @RequiredArgsConstructor
 @RestController("AdminExamPaperAnswerController")
@@ -32,6 +38,13 @@
         return Result.ok(examPaperAnswerService.adminPage(model));
     }
 
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.POST)
+    @SneakyThrows
+    public void exportExcel(ExamPaperAnswerPageRequestVO model, HttpServletResponse response) {
+        List<ExamPaperAnswerPageResponseVO> list = examPaperAnswerService.list(model);
+        ExcelUtils.exportExcelToTarget(response, "", "鎴愮哗鍒楄〃", list, ExamPaperAnswerExportVO.class);
+    }
+
     @PostMapping("/read/{id}")
     public Result<ExamPaperReadVO> read(@PathVariable Integer id) {
         ExamPaperAnswer examPaperAnswer = examPaperAnswerService.getById(id);
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
new file mode 100644
index 0000000..d60564e
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java
@@ -0,0 +1,40 @@
+package com.ycl.jxkg.domain.vo.student.exampaper;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
+import lombok.Data;
+
+/**
+ * @author gonghl
+ * @since 2024/6/7 涓嬪崍 4:58
+ */
+
+@Data
+@ColumnWidth(18)
+@ContentStyle(horizontalAlignment= HorizontalAlignmentEnum.CENTER)
+public class ExamPaperAnswerExportVO {
+
+    @ExcelProperty("濮撳悕")
+    private String userName;
+
+    @ExcelProperty("鍒嗘暟")
+    private String userScore;
+
+    @ExcelProperty("鎬诲垎")
+    private String paperScore;
+
+    @ExcelProperty("姝g‘棰樻暟")
+    private Integer questionCorrect;
+
+    @ExcelProperty("棰樼洰鎬绘暟")
+    private Integer questionCount;
+
+    @ExcelProperty("绛旈鏃堕棿")
+    private String doTime;
+
+    @ExcelProperty("鎻愪氦鏃堕棿")
+    private String createTime;
+
+}
diff --git a/src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java b/src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java
index e3dc04f..4554736 100644
--- a/src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java
+++ b/src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java
@@ -55,6 +55,13 @@
     PageInfo<ExamPaperAnswerPageResponseVO> adminPage(ExamPaperAnswerPageRequestVO requestVM);
 
     /**
+     * 鎴愮哗鍒楄〃
+     * @param requestVM 鏌ヨ鏉′欢
+     * @return 鏁版嵁
+     */
+    List<ExamPaperAnswerPageResponseVO> list(ExamPaperAnswerPageRequestVO requestVM);
+
+    /**
      * 绛斿嵎鍒楄〃
      * @param model 鏌ヨ鏉′欢
      * @return 鏁版嵁
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
index 8c625a3..6223325 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
@@ -271,6 +271,11 @@
     }
 
     @Override
+    public List<ExamPaperAnswerPageResponseVO> list(ExamPaperAnswerPageRequestVO requestVM) {
+        return examPaperAnswerMapper.adminPage(requestVM);
+    }
+
+    @Override
     public PageInfo<ExamPaperAnswerPageResponseVO> pageExamPaper(ExamPaperAnswerPageRequestVO model) {
         return PageHelper.startPage(model.getPageIndex(), model.getPageSize()).doSelectPageInfo(() ->
                 examPaperAnswerMapper.pageExamPaper(model));
diff --git a/src/main/java/com/ycl/jxkg/utils/ExcelUtils.java b/src/main/java/com/ycl/jxkg/utils/ExcelUtils.java
new file mode 100644
index 0000000..ff034b1
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/utils/ExcelUtils.java
@@ -0,0 +1,61 @@
+package com.ycl.jxkg.utils;
+
+import com.alibaba.excel.EasyExcel;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * excel宸ュ叿绫�
+ *
+ * @author gonghl
+ */
+public class ExcelUtils {
+
+    /**
+     * Excel瀵煎嚭
+     *
+     * @param response  response
+     * @param fileName  鏂囦欢鍚�
+     * @param sheetName sheetName
+     * @param list      鏁版嵁List
+     * @param pojoClass 瀵硅薄Class
+     */
+    public static void exportExcel(HttpServletResponse response, String fileName, String sheetName, List<?> list, Class<?> pojoClass) throws IOException {
+        if (StringUtils.isBlank(fileName)) {
+            fileName = Long.toString(System.currentTimeMillis());
+        }
+
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("UTF-8");
+        fileName = URLEncoder.encode(fileName, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        EasyExcel.write(response.getOutputStream(), pojoClass).sheet(sheetName).doWrite(list);
+    }
+
+    /**
+     * Excel瀵煎嚭锛屽厛sourceList杞崲鎴怢ist<targetClass>锛屽啀瀵煎嚭
+     *
+     * @param response    response
+     * @param fileName    鏂囦欢鍚�
+     * @param sheetName   sheetName
+     * @param sourceList  鍘熸暟鎹甃ist
+     * @param targetClass 鐩爣瀵硅薄Class
+     */
+    public static void exportExcelToTarget(HttpServletResponse response, String fileName, String sheetName, List<?> sourceList, Class<?> targetClass) throws Exception {
+        List<Object> targetList = new ArrayList<>(sourceList.size());
+        for (Object source : sourceList) {
+            Object target = targetClass.newInstance();
+            BeanUtils.copyProperties(source, target);
+            targetList.add(target);
+        }
+
+        exportExcel(response, fileName, sheetName, targetList, targetClass);
+    }
+
+}

--
Gitblit v1.8.0