ソースを参照

抽问抽答返回题目的选项列表

simonlll 2 ヶ月 前
コミット
c519234a2a
共有1 個のファイルを変更した37 個の追加0 個の削除を含む
  1. 37 0
      airport-exam/src/main/java/com/sundot/airport/exam/controller/DailyTaskAdminController.java

+ 37 - 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 11
 import com.sundot.airport.exam.domain.DailyTaskDetail;
12 12
 import com.sundot.airport.exam.dto.DailyTaskAdminQueryDTO;
13 13
 import com.sundot.airport.exam.enums.DailyTaskStatusEnum;
14
+import com.sundot.airport.exam.domain.QuesOpt;
14 15
 import com.sundot.airport.exam.mapper.DailyTaskDetailMapper;
15 16
 import com.sundot.airport.exam.mapper.DailyTaskMapper;
17
+import com.sundot.airport.exam.mapper.QuesOptMapper;
16 18
 import org.springframework.beans.factory.annotation.Autowired;
17 19
 import org.springframework.security.access.prepost.PreAuthorize;
18 20
 import org.springframework.web.bind.annotation.*;
@@ -38,6 +40,9 @@ public class DailyTaskAdminController extends BaseController {
38 40
     @Autowired
39 41
     private DailyTaskDetailMapper dailyTaskDetailMapper;
40 42
 
43
+    @Autowired
44
+    private QuesOptMapper quesOptMapper;
45
+
41 46
     /**
42 47
      * 查询任务列表(管理员)
43 48
      * 支持多条件筛选
@@ -144,10 +149,42 @@ public class DailyTaskAdminController extends BaseController {
144 149
         wrapper.orderByAsc(DailyTaskDetail::getDtdQuestionNo);
145 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
+                LambdaQueryWrapper<QuesOpt> optWrapper = new LambdaQueryWrapper<>();
165
+                optWrapper.in(QuesOpt::getQuId, quesIds);
166
+                optWrapper.eq(QuesOpt::getDelStatus, 0);
167
+                optWrapper.orderByAsc(QuesOpt::getSort);
168
+                List<QuesOpt> allOptions = quesOptMapper.selectList(optWrapper);
169
+
170
+                // 按题目ID分组
171
+                for (QuesOpt opt : allOptions) {
172
+                    String quId = opt.getQuId();
173
+                    optionsMap.computeIfAbsent(quId, k -> new ArrayList<>());
174
+                    Map<String, Object> optInfo = new HashMap<>();
175
+                    optInfo.put("sort", opt.getSort());
176
+                    optInfo.put("content", opt.getQoOption());
177
+                    optInfo.put("isCorrect", opt.getQoCorrect());
178
+                    optionsMap.get(quId).add(optInfo);
179
+                }
180
+            }
181
+        }
182
+
147 183
         // 组装返回结果
148 184
         AjaxResult result = AjaxResult.success();
149 185
         result.put("task", task);
150 186
         result.put("details", details);
187
+        result.put("optionsMap", optionsMap);
151 188
         return result;
152 189
     }
153 190