xuhy
2025-11-13 7c7f8be238c9ac65dffa44bc19b4a08868859ec4
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) {
            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,10 +242,12 @@
            for (TQuestionnaireStem questionnaireStem : questionnaireStems) {
                List<TQuestionnaireStemOption> options = questionnaireStemOptions.stream().filter(questionnaireStemOption -> questionnaireStemOption.getStemId().equals(questionnaireStem.getId())).collect(Collectors.toList());
                // 匹配作答人数
                if(!CollectionUtils.isEmpty(options)){
                for (TQuestionnaireStemOption option : options) {
                    String answerValue = option.getAnswerValue();
                    option.setAnswerNum(StringUtils.hasLength(answerValue)?answerValue.split(",").length:0);
                }
                }
                questionnaireStem.setOptions(options);
                // 匹配解答题答案
                List<TQuestionnaireStemBriefAnswer> answers = questionnaireStemBriefAnswers.stream().filter(questionnaireStemBriefAnswer -> questionnaireStemBriefAnswer.getStemId().equals(questionnaireStem.getId())).collect(Collectors.toList());