From b9456d139422ea00fa736c1313aad597be36bdf0 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 16 七月 2024 13:58:56 +0800
Subject: [PATCH] 导出bug修改完善

---
 src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java                 |    8 ++++
 src/main/resources/mapper/ExamPaperMapper.xml                                  |    9 ++++
 src/main/resources/mapper/UserDepartmentMapper.xml                             |    7 +++
 src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java            |    3 +
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java          |   17 ++++++++
 src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java |    3 -
 src/main/resources/mapper/ExamPaperAnswerMapper.xml                            |    2 
 src/main/java/com/mindskip/xzs/service/ExamPaperService.java                   |   14 +++++++
 8 files changed, 60 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
index dc7628d..cd5e1cf 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
@@ -141,7 +141,6 @@
     @RequestMapping(value = "/export", method = RequestMethod.GET)
     public void export(Integer id, Integer type, HttpServletResponse response) {
 
-
         try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build()) {
             // 閮ㄩ棬鑰冭瘯缁熻sheet
             List<ExamPaperDataExportVO> list =  examPaperAnswerService.dataExport(new ExamPaperDataVO().setId(id).setType(type));
@@ -149,7 +148,7 @@
             excelWriter.write(list, writeSheet);
 
             // 鑰冭瘯璇︽儏sheet锛屼竴涓崟浣嶄竴涓猻heet
-            List<PaperExcelVO> paperDetailList = examPaperService.getPaperExcelById(id);
+            List<PaperExcelVO> paperDetailList = examPaperService.getRandomPaperExcelById(id);
             List<Integer> deptIds = paperDetailList.stream().map(PaperExcelVO::getDeptId).collect(Collectors.toList());
             Map<Integer, List<Department>> deptMap = departmentService.gets(deptIds).stream().collect(Collectors.groupingBy(Department::getId));
             Map<Integer, List<PaperExcelVO>> deptDataMap = paperDetailList.stream().collect(Collectors.groupingBy(PaperExcelVO::getDeptId));
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
index 36aabe1..4f730ea 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
@@ -51,4 +51,12 @@
     List<ExamPaper> getExamPaper();
 
     List<ExamPaper> getTemplate();
+
+    /**
+     * 鑾峰彇闅忔満璇曞嵎鐨別xampaper
+     *
+     * @param id
+     * @return
+     */
+    List<PaperExcelVO> getRandomPaperExcelById(Integer id);
 }
diff --git a/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java
index 7dd92cc..4d87d81 100644
--- a/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java
@@ -1,5 +1,6 @@
 package com.mindskip.xzs.repository;
 
+import com.mindskip.xzs.domain.Department;
 import com.mindskip.xzs.domain.UserDepartment;
 import com.mindskip.xzs.domain.vo.BaseSelect;
 import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
@@ -13,6 +14,8 @@
 
     List<UserDepartment> selectByUserId(@Param("userId") Integer userId);
 
+    List<Department> selectDeptByUserId(@Param("userId") Integer userId);
+
     List<UserDepartment> selectByDepartmentId(@Param("departmentId") Integer departmentId);
 
     Integer removeByUserId(@Param("userId") Integer userId);
diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
index 11b0a05..0eba9e6 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
@@ -37,8 +37,22 @@
 
     List<ExamPaper> gets(Integer[] ids);
 
+    /**
+     * 鏅�氳瘯鍗风瓟棰樿褰�
+     *
+     * @param id
+     * @return
+     */
     List<PaperExcelVO> getPaperExcelById(Integer id);
 
+    /**
+     * 闅忔満璇曞嵎绛旈璁板綍
+     *
+     * @param id
+     * @return
+     */
+    List<PaperExcelVO> getRandomPaperExcelById(Integer id);
+
     void missExam(ExamPaperEditRequestVM model);
 
     List<ExamPaper> list(List<Integer> deptIds);
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
index f0145f1..aa48ad1 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -278,6 +278,23 @@
         return paperExcel;
     }
 
+    @Override
+    public List<PaperExcelVO> getRandomPaperExcelById(Integer id) {
+        List<PaperExcelVO> paperExcel = examPaperMapper.getRandomPaperExcelById(id);
+        paperExcel = paperExcel.stream().map(e->{
+            e.setPaperScore(ExamUtil.scoreToVM(Integer.parseInt(e.getPaperScore())));
+            e.setUserScore(ExamUtil.scoreToVM(Integer.parseInt(e.getUserScore())));
+            List<Department> userDepartments = userDepartmentMapper.selectDeptByUserId(Integer.parseInt(e.getUserId()));
+            if(userDepartments.size() != 0) {
+                Department department = userDepartments.get(0);
+                e.setDepartmentName(department.getName());
+                e.setDeptId(department.getId());
+            }
+            return e;
+        }).collect(Collectors.toList());
+        return paperExcel;
+    }
+
     private void examPaperFromVM(ExamPaperEditRequestVM examPaperEditRequestVM, ExamPaper examPaper, List<ExamPaperTitleItemVM> titleItemsVM) {
 //        Integer gradeLevel = subjectService.levelBySubjectId(examPaperEditRequestVM.getSubjectId());
         Integer questionCount = titleItemsVM.stream()
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index 9103800..a9cbdfd 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -407,7 +407,7 @@
   </select>
 
   <select id="getResult" resultMap="BaseResultMap" parameterType="list">
-    select * from t_exam_paper_answer  where (exam_paper_id) in
+    select * from t_exam_paper_answer  where invalid = 0 and (exam_paper_id) in
     <foreach collection="list" item="item" open="(" close=")" separator=",">
       (#{item})
     </foreach>
diff --git a/src/main/resources/mapper/ExamPaperMapper.xml b/src/main/resources/mapper/ExamPaperMapper.xml
index 587632c..e558a7c 100644
--- a/src/main/resources/mapper/ExamPaperMapper.xml
+++ b/src/main/resources/mapper/ExamPaperMapper.xml
@@ -441,6 +441,15 @@
     where a.exam_paper_id = #{id}
   </select>
 
+  <select id="getRandomPaperExcelById" resultType="com.mindskip.xzs.domain.vo.PaperExcelVO" parameterType="java.lang.Integer">
+    select u.real_name as name,a.create_user as userId,a.user_score as userScore,a.paper_score as paperScore
+    from t_exam_paper_answer a
+           inner join t_user u on u.id = a.create_user
+           inner join t_exam_templates_user_count uc ON a.exam_paper_id = uc.exam_paper_id AND uc.exam_templates_id = #{id}
+    where a.invalid = 0
+  </select>
+
+
     <select id="list" resultType="com.mindskip.xzs.domain.ExamPaper">
     select id, name, paper_type, create_time from t_exam_paper
     where paper_type != 7
diff --git a/src/main/resources/mapper/UserDepartmentMapper.xml b/src/main/resources/mapper/UserDepartmentMapper.xml
index 9b9b637..3fb4a0d 100644
--- a/src/main/resources/mapper/UserDepartmentMapper.xml
+++ b/src/main/resources/mapper/UserDepartmentMapper.xml
@@ -32,6 +32,13 @@
         where user_id = #{userId,jdbcType=INTEGER}
     </select>
 
+    <select id="selectDeptByUserId" resultType="com.mindskip.xzs.domain.Department">
+        SELECT
+        d.id,d.name
+        FROM t_user_department ud INNER JOIN t_department d ON ud.department_id = d.id
+        WHERE ud.user_id = #{userId} AND d.deleted = 0
+    </select>
+
     <select id="selectByDepartmentId" parameterType="java.lang.Integer" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List" />

--
Gitblit v1.8.0