pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/utils/ExcelUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> 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); src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java
New file @@ -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("正确题数") private Integer questionCorrect; @ExcelProperty("题目总数") private Integer questionCount; @ExcelProperty("答题时间") private String doTime; @ExcelProperty("提交时间") private String createTime; } 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 数据 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)); src/main/java/com/ycl/jxkg/utils/ExcelUtils.java
New file @@ -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转换成List<targetClass>,再导出 * * @param response response * @param fileName 文件名 * @param sheetName sheetName * @param sourceList 原数据List * @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); } }