diff --git a/src/main/java/com/project/appeal/domain/service/Impl/SearchAppealDomainServiceImpl.java b/src/main/java/com/project/appeal/domain/service/Impl/SearchAppealDomainServiceImpl.java index e02233b..6da3986 100644 --- a/src/main/java/com/project/appeal/domain/service/Impl/SearchAppealDomainServiceImpl.java +++ b/src/main/java/com/project/appeal/domain/service/Impl/SearchAppealDomainServiceImpl.java @@ -1,5 +1,7 @@ package com.project.appeal.domain.service.Impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -89,7 +91,7 @@ public class SearchAppealDomainServiceImpl implements SearchAppealDomainService Map questionEntityMap = questionBaseService.listByIds(questionIdList).stream() .collect(Collectors.toMap(questionEntity -> questionEntity.getId(), questionEntity -> questionEntity)); - //知识点拼接 + //知识点拼接和填充题目相关信息 Set kpIdSet = new HashSet<>(); appealDTOList.forEach(appealDTO -> { if (questionEntityMap.containsKey(appealDTO.getQuestionId())){ @@ -98,9 +100,28 @@ public class SearchAppealDomainServiceImpl implements SearchAppealDomainService appealDTO.setSubLineName(taskIdToSubLineNameMap.get(appealDTO.getTaskId())); appealDTO.setQuestionContent(questionDetail.getQuestionContent()); - appealDTO.setRightAnswer(questionDetail.getRightAnswer()); appealDTO.setKpIdList(questionEntity.getKpIdList()); kpIdSet.addAll(questionEntity.getKpIdList()); + + //构建参考答案 + String rightAnswer = questionDetail.getRightAnswer(); + List rightAnswerList = new ArrayList<>(); + + if (StrUtil.isNotBlank(rightAnswer)) { + rightAnswerList = rightAnswer.contains(",") + ? new ArrayList<>(Arrays.asList(rightAnswer.split(","))) + : rightAnswer.chars().mapToObj(c -> String.valueOf((char) c)).collect(Collectors.toCollection(ArrayList::new)); + } + // 按 ABCD 顺序提取完整答案 + Map options = questionDetail.getOptions(); + List optionOrder = new ArrayList<>(Arrays.asList("A", "B", "C", "D")); + final List finalRightAnswerList = rightAnswerList; + String fullRightAnswer = optionOrder.stream() + .filter(finalRightAnswerList::contains) + .map(opt -> opt + "." + options.get(opt)).filter(StrUtil::isNotBlank) + .collect(Collectors.joining(",")); + appealDTO.setRightAnswer(fullRightAnswer); + } }); diff --git a/src/main/java/com/project/task/domain/service/impl/CandidateSearchTaskDomainServiceImpl.java b/src/main/java/com/project/task/domain/service/impl/CandidateSearchTaskDomainServiceImpl.java index 3701935..3dc75a5 100644 --- a/src/main/java/com/project/task/domain/service/impl/CandidateSearchTaskDomainServiceImpl.java +++ b/src/main/java/com/project/task/domain/service/impl/CandidateSearchTaskDomainServiceImpl.java @@ -49,9 +49,9 @@ public class CandidateSearchTaskDomainServiceImpl implements CandidateSearchTask "SELECT 1 FROM evaluator_task_user tu WHERE tu.task_id = evaluator_task.id AND tu.user_id = '%s' and tu.deleted = 0 ", SecurityUtils.getUserId() )); - - if (StrUtil.isNotBlank(param.getName())) { - queryWrapper.like(TaskEntity::getName , param.getName()); + String name = param.getName(); + if (name != null && StrUtil.isNotBlank(name.trim())) { + queryWrapper.like(TaskEntity::getName , name.trim()); } if (Objects.nonNull(param.getLineId())) { queryWrapper.eq(TaskEntity::getLineId , param.getLineId()); diff --git a/src/main/java/com/project/task/domain/service/impl/SearchTaskDomainServiceImpl.java b/src/main/java/com/project/task/domain/service/impl/SearchTaskDomainServiceImpl.java index af5e35e..17a329f 100644 --- a/src/main/java/com/project/task/domain/service/impl/SearchTaskDomainServiceImpl.java +++ b/src/main/java/com/project/task/domain/service/impl/SearchTaskDomainServiceImpl.java @@ -34,7 +34,7 @@ public class SearchTaskDomainServiceImpl implements SearchTaskDomainService { @Override public Result> search(TaskParam param) throws Exception { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (StrUtil.isNotBlank(param.getName().trim())) { + if (param.getName() != null && StrUtil.isNotBlank(param.getName().trim())) { queryWrapper.like(TaskEntity::getName , param.getName().trim()); } if (Objects.nonNull(param.getLineId())) {