From 07a879fd1f617c8d8c06501cd1e31016f32b8446 Mon Sep 17 00:00:00 2001 From: LesanOuO <1960681385@qq.com> Date: Sun, 15 Feb 2026 12:12:03 +0800 Subject: [PATCH] fix: 处理布局组件可能存在children导致摘要无法展示表单字段 --- yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormFieldVO.java | 6 ++++++ yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java | 29 ++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormFieldVO.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormFieldVO.java index 65fb305..eff2a2a 100644 --- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormFieldVO.java +++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormFieldVO.java @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form; import lombok.Data; +import java.util.List; + /** * 流程表单字段 VO */ @@ -20,5 +22,9 @@ public class BpmFormFieldVO { * 字段标题 */ private String title; + /** + * 子表单字段(处理布局组件) + */ + private List children; } diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java index 67c24bb..b9c3d72 100644 --- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java +++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.util; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import cn.iocoder.yudao.framework.common.core.KeyValue; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; @@ -247,9 +248,7 @@ public class FlowableUtils { Map formFieldsMap = new HashMap<>(); processDefinitionInfo.getFormFields().forEach(formFieldStr -> { BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class); - if (formField != null) { - formFieldsMap.put(formField.getField(), formField); - } + parseFormField(formField, formFieldsMap); }); // 情况一:当自定义了摘要 @@ -273,6 +272,30 @@ public class FlowableUtils { .collect(Collectors.toList()); } + /** + * 递归解析表单字段 + */ + private static void parseFormField(BpmFormFieldVO formField, + Map formFieldsMap) { + + if (formField == null) { + return; + } + + // 如果存在 children -> 说明是布局组件 + if (formField.getChildren() != null && !formField.getChildren().isEmpty()) { + for (BpmFormFieldVO child : formField.getChildren()) { + parseFormField(child, formFieldsMap); + } + return; + } + + // 真实字段才加入 map + if (StrUtil.isNotBlank(formField.getField())) { + formFieldsMap.put(formField.getField(), formField); + } + } + // ========== Task 相关的工具方法 ========== /** -- libgit2 0.21.4