龚焕茏
2024-05-24 4002dcb5e86b8cfb319a820b6a9d1a8fdf85d8d8
feat:分数统计新增导出
5个文件已修改
1个文件已添加
91 ■■■■ 已修改文件
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/vo/ExamPaperDataExportVO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperAnswerMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
@@ -8,6 +8,7 @@
import com.mindskip.xzs.domain.ExamPaperSubject;
import com.mindskip.xzs.domain.Subject;
import com.mindskip.xzs.domain.exam.ExamPaperAnswerObject;
import com.mindskip.xzs.domain.vo.ExamPaperDataExportVO;
import com.mindskip.xzs.domain.vo.ExamPaperDataVO;
import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
import com.mindskip.xzs.service.ExamPaperAnswerService;
@@ -17,6 +18,7 @@
import com.mindskip.xzs.utility.DateTimeUtil;
import com.mindskip.xzs.utility.ExamUtil;
import com.mindskip.xzs.utility.PageInfoHelper;
import com.mindskip.xzs.utility.excel.ExcelUtils;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperAnswerPageRequestVM;
import com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageResponseVM;
import org.apache.commons.lang3.ObjectUtils;
@@ -26,6 +28,7 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -134,4 +137,11 @@
    public RestResponse<Map<String, Object>> data(@RequestBody ExamPaperDataVO examPaperDataVO) {
        return RestResponse.ok(examPaperAnswerService.data(examPaperDataVO));
    }
    @RequestMapping(value = "/export", method = RequestMethod.GET)
    public void export(Integer id, Integer type, HttpServletResponse response) {
        List<ExamPaperDataExportVO> list =  examPaperAnswerService.dataExport(new ExamPaperDataVO().setId(id).setType(type));
        ExcelUtils.export(response, "分数统计", list, ExamPaperDataExportVO.class);
    }
}
src/main/java/com/mindskip/xzs/domain/vo/ExamPaperDataExportVO.java
New file
@@ -0,0 +1,36 @@
package com.mindskip.xzs.domain.vo;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.mindskip.xzs.utility.excel.ExcelExport;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
 * @author gonghl
 * @since 2024/5/24
 */
@Data
@Accessors(chain = true)
public class ExamPaperDataExportVO {
    private Integer id;
    @ExcelExport("部门名称")
    private String name;
    @ExcelExport("参考人数")
    private Integer factPeopleTotal;
    @ExcelExport("参考人数百分比")
    private BigDecimal referencePercentage;
    @ExcelExport("平均分")
    private BigDecimal averageScore;
    @ExcelExport("总考试次数")
    private Integer examTotal;
}
src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
@@ -4,10 +4,7 @@
import com.mindskip.xzs.domain.ExamTemplatesUserCount;
import com.mindskip.xzs.domain.ScoreTemplatesUserCount;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.vo.ExamPaperDataVO;
import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
import com.mindskip.xzs.domain.vo.TeamplatesUserExcelVO;
import com.mindskip.xzs.domain.vo.*;
import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery;
@@ -62,11 +59,11 @@
    Map<String, Object> pieChart(ExamPaperStatisticVO examPaperStatisticVO);
    List<Map<String, Object>> dataByTemplate(ExamPaperDataVO examPaperDataVO);
    List<ExamPaperDataExportVO> dataByTemplate(ExamPaperDataVO examPaperDataVO);
    Map<String, Object> totalByTemplate(ExamPaperDataVO examPaperDataVO);
    ExamPaperDataExportVO totalByTemplate(ExamPaperDataVO examPaperDataVO);
    List<Map<String, Object>> dataByPaper(ExamPaperDataVO examPaperDataVO);
    List<ExamPaperDataExportVO> dataByPaper(ExamPaperDataVO examPaperDataVO);
    Map<String, Object> totalByPaper(ExamPaperDataVO examPaperDataVO);
    ExamPaperDataExportVO totalByPaper(ExamPaperDataVO examPaperDataVO);
}
src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
@@ -2,6 +2,7 @@
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.*;
import com.mindskip.xzs.domain.vo.ExamPaperDataExportVO;
import com.mindskip.xzs.domain.vo.ExamPaperDataVO;
import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
@@ -69,4 +70,6 @@
    Map<String, Object> statistic(ExamPaperStatisticVO examPaperStatisticVO);
    Map<String, Object> data(ExamPaperDataVO examPaperDataVO);
    List<ExamPaperDataExportVO> dataExport(ExamPaperDataVO examPaperDataVO);
}
src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
@@ -10,6 +10,7 @@
import com.mindskip.xzs.domain.other.ExamPaperAnswerUpdate;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.task.TaskItemAnswerObject;
import com.mindskip.xzs.domain.vo.ExamPaperDataExportVO;
import com.mindskip.xzs.domain.vo.ExamPaperDataVO;
import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
import com.mindskip.xzs.repository.ExamPaperAnswerMapper;
@@ -358,12 +359,26 @@
        if (Objects.equals(examPaperDataVO.getType(), 7)) {
            map.put("data", examPaperAnswerMapper.dataByTemplate(examPaperDataVO));
            map.put("total", examPaperAnswerMapper.totalByTemplate(examPaperDataVO));
        }
        // 普通试卷
        else {
        } else {
            map.put("data", examPaperAnswerMapper.dataByPaper(examPaperDataVO));
            map.put("total", examPaperAnswerMapper.totalByPaper(examPaperDataVO));
        }
        return map;
    }
    @Override
    public List<ExamPaperDataExportVO> dataExport(ExamPaperDataVO examPaperDataVO) {
        // 随机试卷
        if (Objects.equals(examPaperDataVO.getType(), 7)) {
            List<ExamPaperDataExportVO > dataByTemplate = examPaperAnswerMapper.dataByTemplate(examPaperDataVO);
            ExamPaperDataExportVO  totalByTemplate = examPaperAnswerMapper.totalByTemplate(examPaperDataVO);
            dataByTemplate.add(0, totalByTemplate.setName("所有部门"));
            return dataByTemplate;
        } else {
            List<ExamPaperDataExportVO > dataByPaper = examPaperAnswerMapper.dataByPaper(examPaperDataVO);
            ExamPaperDataExportVO  totalByPaper = examPaperAnswerMapper.totalByPaper(examPaperDataVO);
            dataByPaper.add(0, totalByPaper.setName("所有部门"));
            return dataByPaper;
        }
    }
}
src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -491,7 +491,7 @@
      </foreach>
    </insert>
  <select id="dataByTemplate" resultType="java.util.Map" parameterType="com.mindskip.xzs.domain.vo.ExamPaperDataVO">
  <select id="dataByTemplate" resultType="com.mindskip.xzs.domain.vo.ExamPaperDataExportVO" parameterType="com.mindskip.xzs.domain.vo.ExamPaperDataVO">
    SELECT
      a.id,
      a.name,
@@ -508,7 +508,7 @@
      a.id, a.name
  </select>
  <select id="totalByTemplate" resultType="java.util.Map" parameterType="com.mindskip.xzs.domain.vo.ExamPaperDataVO">
  <select id="totalByTemplate" resultType="com.mindskip.xzs.domain.vo.ExamPaperDataExportVO" parameterType="com.mindskip.xzs.domain.vo.ExamPaperDataVO">
    SELECT
           (SELECT (SELECT count(*) FROM t_exam_paper) + (SELECT count(*) FROM t_exam_templates)) as examTotal, -- 总考试次数
           COUNT(DISTINCT c.create_user) as factPeopleTotal, -- 参考人数
@@ -524,7 +524,7 @@
      a.id
  </select>
  <select id="dataByPaper" resultType="java.util.Map" parameterType="com.mindskip.xzs.domain.vo.ExamPaperDataVO">
  <select id="dataByPaper" resultType="com.mindskip.xzs.domain.vo.ExamPaperDataExportVO" parameterType="com.mindskip.xzs.domain.vo.ExamPaperDataVO">
    SELECT
      a.id,
      a.name,
@@ -540,7 +540,7 @@
      a.id, a.name
  </select>
  <select id="totalByPaper" resultType="java.util.Map" parameterType="com.mindskip.xzs.domain.vo.ExamPaperDataVO">
  <select id="totalByPaper" resultType="com.mindskip.xzs.domain.vo.ExamPaperDataExportVO" parameterType="com.mindskip.xzs.domain.vo.ExamPaperDataVO">
    SELECT
        (SELECT (SELECT count(*) FROM t_exam_paper) + (SELECT count(*) FROM t_exam_templates)) as examTotal, -- 总考试次数
        count(DISTINCT b.create_user) AS factPeopleTotal, -- 参考数