diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java index f66882b8d..b3e5024bd 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java @@ -5,6 +5,8 @@ import org.dromara.workflow.domain.bo.FlowCategoryBo; import org.dromara.workflow.domain.vo.FlowCategoryVo; import java.util.List; +import java.util.Map; +import java.util.Set; /** * 流程分类Service接口 @@ -29,6 +31,14 @@ public interface IFlwCategoryService { */ String selectCategoryNameById(Long categoryId); + /** + * 根据流程分类ID查询流程分类名称 + * + * @param categoryIds 流程分类ID + * @return 流程分类名称 + */ + Map selectCategoryNameByIds(Set categoryIds); + /** * 查询符合条件的流程分类列表 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java index 27f265fce..212f2baeb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java @@ -3,6 +3,7 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.convert.Convert; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; import org.dromara.common.translation.annotation.TranslationType; import org.dromara.common.translation.core.TranslationInterface; import org.dromara.workflow.common.ConditionalOnEnable; @@ -10,6 +11,10 @@ import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.service.IFlwCategoryService; import org.springframework.stereotype.Service; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + /** * 流程分类名称翻译实现 * @@ -24,15 +29,30 @@ public class CategoryNameTranslationImpl implements TranslationInterface private final IFlwCategoryService flwCategoryService; - /** - * 将流程分类 ID 翻译为分类名称。 - * - * @param key 分类 ID - * @param other 额外参数 - * @return 分类名称 - */ @Override public String translation(Object key, String other) { return flwCategoryService.selectCategoryNameById(Convert.toLong(key)); } + + @Override + public Map translationBatch(Set keys, String other) { + Set categoryIds = collectLongIds(keys); + if (categoryIds.isEmpty()) { + return Map.of(); + } + Map categoryNames = flwCategoryService.selectCategoryNameByIds(categoryIds); + Map result = new LinkedHashMap<>(keys.size()); + for (Object key : keys) { + result.put(key, buildValue(key, categoryNames)); + } + return result; + } + + private String buildValue(Object source, Map categoryNames) { + if (source instanceof String ids) { + return joinMappedValues(ids, categoryNames::get); + } + return source == null ? null : categoryNames.get(Convert.toLong(source)); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java index 8d066ccaa..719ec0057 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java @@ -26,8 +26,7 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** * 流程分类Service业务层处理 @@ -70,6 +69,22 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService, CategoryServ return ObjectUtils.notNullGetter(category, FlowCategory::getCategoryName); } + /** + * 根据流程分类ID查询流程分类名称 + * + * @param categoryIds 流程分类ID + * @return 流程分类名称 + */ + @Override + public Map selectCategoryNameByIds(Set categoryIds) { + if (CollUtil.isEmpty(categoryIds)) { + return Collections.emptyMap(); + } + List list = baseMapper.selectList(new LambdaQueryWrapper() + .select(FlowCategory::getCategoryName).in(FlowCategory::getCategoryId, categoryIds)); + return StreamUtils.toMap(list, FlowCategory::getCategoryId, FlowCategory::getCategoryName); + } + /** * 查询符合条件的流程分类列表 *