From 90e2fa776f8a69055bddd159f9e84e7f70a11c8d Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 02 三月 2026 09:54:39 +0800
Subject: [PATCH] bug处理

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java |   56 ++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 46 insertions(+), 10 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java
index bd3a3f8..49ac9d5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TQuestionnaireController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.ImmutableMap;
 import com.ruoyi.common.annotation.Log;
@@ -93,9 +94,12 @@
         for (TQuestionnaireStem questionnaireStem : questionnaireStems) {
             questionnaireStem.setQuestionnaireId(dto.getId());
             questionnaireStemService.save(questionnaireStem);
-            options = questionnaireStem.getOptions();
-            for (TQuestionnaireStemOption option : options) {
-                option.setStemId(questionnaireStem.getId());
+            List<TQuestionnaireStemOption> optionList = questionnaireStem.getOptions();
+            if(!CollectionUtils.isEmpty(optionList)){
+                for (TQuestionnaireStemOption option : optionList) {
+                    option.setStemId(questionnaireStem.getId());
+                    options.add(option);
+                }
             }
         }
         if(!CollectionUtils.isEmpty(options)){
@@ -146,6 +150,40 @@
         LocalDateTime startTime = dto.getStartTime();
         LocalDateTime endTime = dto.getEndTime();
         LocalDateTime now = LocalDateTime.now();
+        if(now.isAfter(endTime)){
+            dto.setStatus(3);
+        }
+        questionnaireService.updateById(dto);
+        // 查询题干
+        List<TQuestionnaireStem> questionnaireStemList = questionnaireStemService.list(Wrappers.lambdaQuery(TQuestionnaireStem.class)
+                .eq(TQuestionnaireStem::getQuestionnaireId, dto.getId()));
+
+        if(!CollectionUtils.isEmpty(questionnaireStemList)){
+            List<String> stemIds = questionnaireStemList.stream().map(TQuestionnaireStem::getId).collect(Collectors.toList());
+            // 删除题干选项
+            questionnaireStemOptionService.remove(Wrappers.lambdaQuery(TQuestionnaireStemOption.class)
+                    .in(TQuestionnaireStemOption::getStemId, stemIds));
+        }
+        // 删除题干
+        questionnaireStemService.remove(Wrappers.lambdaQuery(TQuestionnaireStem.class)
+                .eq(TQuestionnaireStem::getQuestionnaireId, dto.getId()));
+        // 添加题干
+        List<TQuestionnaireStemOption> options = new ArrayList<>();
+        List<TQuestionnaireStem> questionnaireStems = dto.getQuestionnaireStems();
+        for (TQuestionnaireStem questionnaireStem : questionnaireStems) {
+            questionnaireStem.setQuestionnaireId(dto.getId());
+            questionnaireStemService.save(questionnaireStem);
+            List<TQuestionnaireStemOption> optionList = questionnaireStem.getOptions();
+            if(!CollectionUtils.isEmpty(optionList)){
+                for (TQuestionnaireStemOption option : optionList) {
+                    option.setStemId(questionnaireStem.getId());
+                    options.add(option);
+                }
+            }
+        }
+        if(!CollectionUtils.isEmpty(options)){
+            questionnaireStemOptionService.saveBatch(options);
+        }
         if(now.isBefore(startTime)){
             dto.setStatus(1);
             // 添加定时任务
@@ -176,10 +214,6 @@
                     maps
             );
         }
-        if(now.isAfter(endTime)){
-            dto.setStatus(3);
-        }
-        questionnaireService.updateById(dto);
         return R.ok();
     }
 
@@ -208,9 +242,11 @@
             for (TQuestionnaireStem questionnaireStem : questionnaireStems) {
                 List<TQuestionnaireStemOption> options = questionnaireStemOptions.stream().filter(questionnaireStemOption -> questionnaireStemOption.getStemId().equals(questionnaireStem.getId())).collect(Collectors.toList());
                 // 匹配作答人数
-                for (TQuestionnaireStemOption option : options) {
-                    String answerValue = option.getAnswerValue();
-                    option.setAnswerNum(StringUtils.hasLength(answerValue)?answerValue.split(",").length:0);
+                if(!CollectionUtils.isEmpty(options)){
+                    for (TQuestionnaireStemOption option : options) {
+                        String answerValue = option.getAnswerValue();
+                        option.setAnswerNum(StringUtils.hasLength(answerValue)?answerValue.split(",").length:0);
+                    }
                 }
                 questionnaireStem.setOptions(options);
                 // 匹配解答题答案

--
Gitblit v1.7.1