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