龚焕茏
2024-06-07 6350331c30648b1d2cec4715f24dca12068c961b
feat:成绩导出
4个文件已修改
2个文件已添加
133 ■■■■■ 已修改文件
pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerExportVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/utils/ExcelUtils.java 61 ●●●●● 补丁 | 查看 | 原始文档 | 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);
    }
}