瀏覽代碼

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

simonlll 2 月之前
父節點
當前提交
c519234a2a

+ 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
 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,10 +149,42 @@ 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
+                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
         AjaxResult result = AjaxResult.success();
184
         AjaxResult result = AjaxResult.success();
149
         result.put("task", task);
185
         result.put("task", task);
150
         result.put("details", details);
186
         result.put("details", details);
187
+        result.put("optionsMap", optionsMap);
151
         return result;
188
         return result;
152
     }
189
     }
153
 
190