Przeglądaj źródła

抽问抽答如果未作答,仍返回题目的正确选项

simonlll 2 miesięcy temu
rodzic
commit
1141624ee2

+ 32 - 0
airport-exam/src/main/java/com/sundot/airport/exam/controller/DailyTaskAdminController.java

@@ -11,8 +11,10 @@ import com.sundot.airport.exam.domain.DailyTask;
11
 import com.sundot.airport.exam.domain.DailyTaskDetail;
11
 import com.sundot.airport.exam.domain.DailyTaskDetail;
12
 import com.sundot.airport.exam.dto.DailyTaskAdminQueryDTO;
12
 import com.sundot.airport.exam.dto.DailyTaskAdminQueryDTO;
13
 import com.sundot.airport.exam.enums.DailyTaskStatusEnum;
13
 import com.sundot.airport.exam.enums.DailyTaskStatusEnum;
14
+import com.sundot.airport.exam.domain.QuesOpt;
14
 import com.sundot.airport.exam.mapper.DailyTaskDetailMapper;
15
 import com.sundot.airport.exam.mapper.DailyTaskDetailMapper;
15
 import com.sundot.airport.exam.mapper.DailyTaskMapper;
16
 import com.sundot.airport.exam.mapper.DailyTaskMapper;
17
+import com.sundot.airport.exam.mapper.QuesOptMapper;
16
 import org.springframework.beans.factory.annotation.Autowired;
18
 import org.springframework.beans.factory.annotation.Autowired;
17
 import org.springframework.security.access.prepost.PreAuthorize;
19
 import org.springframework.security.access.prepost.PreAuthorize;
18
 import org.springframework.web.bind.annotation.*;
20
 import org.springframework.web.bind.annotation.*;
@@ -38,6 +40,9 @@ public class DailyTaskAdminController extends BaseController {
38
     @Autowired
40
     @Autowired
39
     private DailyTaskDetailMapper dailyTaskDetailMapper;
41
     private DailyTaskDetailMapper dailyTaskDetailMapper;
40
 
42
 
43
+    @Autowired
44
+    private QuesOptMapper quesOptMapper;
45
+
41
     /**
46
     /**
42
      * 查询任务列表(管理员)
47
      * 查询任务列表(管理员)
43
      * 支持多条件筛选
48
      * 支持多条件筛选
@@ -144,6 +149,33 @@ public class DailyTaskAdminController extends BaseController {
144
         wrapper.orderByAsc(DailyTaskDetail::getDtdQuestionNo);
149
         wrapper.orderByAsc(DailyTaskDetail::getDtdQuestionNo);
145
         List<DailyTaskDetail> details = dailyTaskDetailMapper.selectList(wrapper);
150
         List<DailyTaskDetail> details = dailyTaskDetailMapper.selectList(wrapper);
146
 
151
 
152
+        // 查询所有题目的选项
153
+        Map<String, List<Map<String, Object>>> optionsMap = new HashMap<>();
154
+        if (!details.isEmpty()) {
155
+            // 收集所有题目ID
156
+            List<String> quesIds = details.stream()
157
+                    .map(DailyTaskDetail::getDtdQuesId)
158
+                    .filter(id -> id != null && !id.isEmpty())
159
+                    .distinct()
160
+                    .collect(Collectors.toList());
161
+
162
+            if (!quesIds.isEmpty()) {
163
+                // 查询这些题目的选项(使用自定义方法,忽略逻辑删除条件)
164
+                List<QuesOpt> allOptions = quesOptMapper.selectByQuesIds(quesIds);
165
+
166
+                // 按题目ID分组
167
+                for (QuesOpt opt : allOptions) {
168
+                    String quId = opt.getQuId();
169
+                    optionsMap.computeIfAbsent(quId, k -> new ArrayList<>());
170
+                    Map<String, Object> optInfo = new HashMap<>();
171
+                    optInfo.put("sort", opt.getSort());
172
+                    optInfo.put("content", opt.getQoOption());
173
+                    optInfo.put("isCorrect", opt.getQoCorrect());
174
+                    optionsMap.get(quId).add(optInfo);
175
+                }
176
+            }
177
+        }
178
+
147
         // 组装返回结果
179
         // 组装返回结果
148
         AjaxResult result = AjaxResult.success();
180
         AjaxResult result = AjaxResult.success();
149
         result.put("task", task);
181
         result.put("task", task);

+ 16 - 0
airport-exam/src/main/java/com/sundot/airport/exam/mapper/QuesOptMapper.java

@@ -3,6 +3,10 @@ package com.sundot.airport.exam.mapper;
3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
 import com.sundot.airport.exam.domain.QuesOpt;
4
 import com.sundot.airport.exam.domain.QuesOpt;
5
 import org.apache.ibatis.annotations.Mapper;
5
 import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+import org.apache.ibatis.annotations.Select;
8
+
9
+import java.util.List;
6
 
10
 
7
 
11
 
8
 /**
12
 /**
@@ -16,4 +20,16 @@ import org.apache.ibatis.annotations.Mapper;
16
 @Mapper
20
 @Mapper
17
 public interface QuesOptMapper extends BaseMapper<QuesOpt> {
21
 public interface QuesOptMapper extends BaseMapper<QuesOpt> {
18
 
22
 
23
+    /**
24
+     * 根据题目ID列表查询选项(忽略逻辑删除)
25
+     */
26
+    @Select("<script>" +
27
+            "SELECT * FROM edu_cs_ques_opt WHERE qu_id IN " +
28
+            "<foreach collection='quesIds' item='id' open='(' separator=',' close=')'>" +
29
+            "#{id}" +
30
+            "</foreach>" +
31
+            " ORDER BY sort" +
32
+            "</script>")
33
+    List<QuesOpt> selectByQuesIds(@Param("quesIds") List<String> quesIds);
34
+
19
 }
35
 }