From c9e9cbf1b41fd5377ce1cef894b4ea4feb13cdd9 Mon Sep 17 00:00:00 2001 From: Mlxa0324 Date: Fri, 13 Jan 2023 00:37:54 +0800 Subject: [PATCH] =?UTF-8?q?word=E5=AF=BC=E5=85=A5=E8=AF=95=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E6=9C=AA=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibeetl/jlw/entity/ResourcesQuestion.java | 22 +++++++++++++++---- .../jlw/service/ResourcesQuestionService.java | 2 +- .../service/strategy/WordQuestionOption.java | 11 ++++++---- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/entity/ResourcesQuestion.java b/web/src/main/java/com/ibeetl/jlw/entity/ResourcesQuestion.java index 94003bf1..a9832ac4 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/ResourcesQuestion.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/ResourcesQuestion.java @@ -2,6 +2,7 @@ package com.ibeetl.jlw.entity; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.EnumUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.ReflectUtil; import cn.jlw.validate.ValidateConfig; @@ -22,6 +23,9 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import static cn.hutool.core.util.ArrayUtil.join; +import static cn.hutool.core.util.ObjectUtil.defaultIfNull; + /* * 资源管理 - 题库管理 * gen by Spring Boot2 Admin 2021-06-25 @@ -384,16 +388,26 @@ public class ResourcesQuestion extends BaseEntity{ }); } break; case FILL_QUESTION: { - // 填空题 questionOptionA 存放的是[---] 空的长度 - final String optionName = "questionOptionA"; + // 填空题 questionOptionA 存放的是空格的数量 + questionOptionList.forEach(item -> { + Integer count = NumberUtil.toInt(defaultIfNull(getQuestionOptionA(), "0").getBytes()); + setQuestionOptionA((++count).toString()); + }); } break; case ANALYSIS_QUESTION: { // 分析题 questionOptionA 存放的是[---] 空的长度 // 分析题 questionOptionB 存放的是带填空的题干 - final String optionName = "questionOptionA"; - final String questionSubStem = "questionOptionB"; + questionOptionList.forEach(item -> { + Integer count = NumberUtil.toInt(defaultIfNull(getQuestionOptionA(), "0").getBytes()); + setQuestionOptionA((++count).toString()); + String questionOptionB = defaultIfNull(getQuestionOptionB(), ""); + String[] splitArr = item.split("_{8,}"); + if (splitArr != null) { + setQuestionOptionB(questionOptionB + join(splitArr, "[---]")); + } + }); } break; default: log.error("ResourcesQuestion.putQuestionOptionList 方法,未知的题目类型!"); diff --git a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java index adeb4ada..93e919df 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java @@ -869,7 +869,7 @@ public class ResourcesQuestionService extends CoreBaseService /** 题目类型,分值,该类型的总分 */ case TYPE: { /** 题目类型作用域 */ - String[] sp = v.split(","); + String[] sp = v.split("[,,]"); typeConcatEnum.set(StrategyContext.QuestionTypeConcatEnum.matchText(sp[2])); questionScore.set(NumberUtil.toBigDecimal(sp[0]).setScale(1, RoundingMode.HALF_UP)); } diff --git a/web/src/main/java/com/ibeetl/jlw/service/strategy/WordQuestionOption.java b/web/src/main/java/com/ibeetl/jlw/service/strategy/WordQuestionOption.java index 184b1007..10c5ee56 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/strategy/WordQuestionOption.java +++ b/web/src/main/java/com/ibeetl/jlw/service/strategy/WordQuestionOption.java @@ -1,13 +1,12 @@ package com.ibeetl.jlw.service.strategy; +import cn.hutool.core.util.ReUtil; import lombok.Getter; import java.util.HashMap; import java.util.Map; import java.util.function.Consumer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** *

@@ -24,6 +23,10 @@ public class WordQuestionOption implements WordStrategy { * 举例: A. A、 A. A  A */ private final String REGEX = "^[A-Za-z][\\.\\、\\.  ]"; + /** + * 第二种类型 分析题 (1).或(1)、或(1).或(1)、 + */ + private final String REGEX2 = "^[((]\\d+[))][\\.\\、\\.  ]"; @Getter private StrategyContext.QuestionParagraphTypeEnum typeEnum = StrategyContext.QuestionParagraphTypeEnum.OPTION; @@ -35,8 +38,8 @@ public class WordQuestionOption implements WordStrategy { */ @Override public boolean support(String paragraph) { - Matcher matcher = Pattern.compile(REGEX).matcher(paragraph.trim()); - return matcher.find() && matcher.start() == 0; + String text = paragraph.trim(); + return ReUtil.contains(REGEX, text) || ReUtil.contains(REGEX2, text); }