From 73ff2a87258203049fc8d885709273eedfacd526 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 22 五月 2024 14:29:45 +0800
Subject: [PATCH] 题目按课目导出

---
 src/main/resources/mapper/QuestionMapper.xml                            |   55 +++++++++++++--------------
 src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java |    5 +-
 src/main/java/com/mindskip/xzs/vo/QuestionExportVO.java                 |   25 +-----------
 3 files changed, 32 insertions(+), 53 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
index 5313919..1dbbad1 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
@@ -197,9 +197,8 @@
                 .doWrite(data);
     }
 
-    @GetMapping("/question/export")
-    public void importQuestion(QuestionExportVO query, HttpServletResponse response) throws IOException {
-        query.formartTime();
+    @PostMapping("/question/export")
+    public void exportQuestion(@RequestBody QuestionExportVO query, HttpServletResponse response) throws IOException {
         // 鏌ヨ瀵煎嚭鏁版嵁
         List<QuestionImportVO> exportData = questionService.export(query);
         // 鏋勫缓鏁版嵁
diff --git a/src/main/java/com/mindskip/xzs/vo/QuestionExportVO.java b/src/main/java/com/mindskip/xzs/vo/QuestionExportVO.java
index b3a8c13..0b82070 100644
--- a/src/main/java/com/mindskip/xzs/vo/QuestionExportVO.java
+++ b/src/main/java/com/mindskip/xzs/vo/QuestionExportVO.java
@@ -6,6 +6,7 @@
 import org.springframework.util.StringUtils;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author锛歺p
@@ -15,29 +16,9 @@
 public class QuestionExportVO {
 
     /**
-     * 棰樺瀷
+     * 璇剧洰
      */
-    private Integer questionType;
+    private List<Integer> subjectIds;
 
-    /**
-     * 寮�濮嬫椂闂�
-     */
-    private String startStr;
-    private Date start;
-
-    /**
-     * 缁撴潫鏃堕棿
-     */
-    private String endStr;
-    private Date end;
-
-    public void formartTime() {
-        if (StringUtils.hasText(startStr)) {
-            start = DateTimeUtil.parse(startStr, "yyyy-MM-dd HH:mm:ss");
-        }
-        if (StringUtils.hasText(endStr)) {
-            end = DateTimeUtil.parse(endStr, "yyyy-MM-dd HH:mm:ss");
-        }
-    }
 
 }
diff --git a/src/main/resources/mapper/QuestionMapper.xml b/src/main/resources/mapper/QuestionMapper.xml
index 5b3b415..4e1b47a 100644
--- a/src/main/resources/mapper/QuestionMapper.xml
+++ b/src/main/resources/mapper/QuestionMapper.xml
@@ -249,16 +249,18 @@
 
     <select id="export" resultMap="exportMap">
         SELECT
+        DISTINCT
         q.*, ttc.content
         FROM
         t_question q
         INNER JOIN t_text_content ttc on q.info_text_content_id = ttc.id AND q.deleted = 0
+        INNER JOIN t_question_subject tqs on q.id = tqs.question_id
         <where>
-            <if test="query.questionType != null">
-                q.question_type = #{query.questionType}
-            </if>
-            <if test="query.start != null and query.end != null">
-                q.create_time between #{query.start} and #{query.end}
+            <if test="query.subjectIds != null and query.subjectIds.size > 0">
+                AND tqs.subject_id IN
+                <foreach collection="query.subjectIds" open="(" separator="," close=")" item="subjectId">
+                    #{subjectId}
+                </foreach>
             </if>
         </where>
     </select>
@@ -284,20 +286,21 @@
 
     <select id="getVoByIds" resultType="com.mindskip.xzs.domain.vo.QuestionVO">
         SELECT
-            tq.id,
-            tq.question_type as questionType,
-            tq.difficult,
-            ttc.content as contentJson
+        tq.id,
+        tq.question_type as questionType,
+        tq.difficult,
+        ttc.content as contentJson
         FROM
-            t_question tq
-                INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id AND tq.deleted = 0 AND tq.id IN
+        t_question tq
+        INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id AND tq.deleted = 0 AND tq.id IN
         <foreach
                 collection="ids" open="(" separator="," close=")" item="id">
             #{id}
         </foreach>
     </select>
 
-    <select id="selectQuestion" resultType="com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM">
+    <select id="selectQuestion"
+            resultType="com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM">
         select a.id,
                a.question_type,
                JSON_VALUE(d.content, '$.titleContent') as shortTitle,
@@ -307,31 +310,27 @@
                  inner join t_subject c on b.subject_id = c.id and c.deleted = 0
                  inner join t_text_content d on a.info_text_content_id = d.id
         where a.deleted = 0
-        AND JSON_VALUE(d.content, '$.titleContent') like concat('%', #{shortTitle}, '%')
+          AND JSON_VALUE(d.content, '$.titleContent') like concat('%', #{shortTitle}, '%')
         group by a.id, question_type, a.create_time
         HAVING GROUP_CONCAT(c.name) like concat('%', #{subjectName}, '%')
         order by a.create_time
     </select>
 
     <select id="selectContentById" resultType="com.mindskip.xzs.domain.vo.QuestionVO">
-        SELECT
-            tq.id,
-            tq.question_type as questionType,
-            tq.difficult,
-            ttc.content as contentJson,
-            tq.correct
-        FROM
-            t_question tq
-            INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id AND tq.id = #{id}
+        SELECT tq.id,
+               tq.question_type as questionType,
+               tq.difficult,
+               ttc.content      as contentJson,
+               tq.correct
+        FROM t_question tq
+                 INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id AND tq.id = #{id}
     </select>
 
     <select id="getAnswer" resultType="com.mindskip.xzs.domain.vo.QuestionVO">
-        SELECT
-            tq.correct,
-            ttc.content as contentJson
-        FROM
-            t_question tq
-                INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id AND tq.id = #{id} AND tq.deleted = 0
+        SELECT tq.correct,
+               ttc.content as contentJson
+        FROM t_question tq
+                 INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id AND tq.id = #{id} AND tq.deleted = 0
     </select>
 
 </mapper>

--
Gitblit v1.8.0