From 24681c81c09022f584a57006f2534b5f74723414 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 30 六月 2026 09:27:31 +0800
Subject: [PATCH] 初始化项目

---
 yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java |   34 +++++++++++++++++++++++++---------
 1 files changed, 25 insertions(+), 9 deletions(-)

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 4c91611..565deb8 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
@@ -25,8 +25,10 @@
 import org.flowable.engine.impl.util.CommandContextUtil;
 import org.flowable.engine.runtime.ProcessInstance;
 import org.flowable.task.api.TaskInfo;
+import tools.jackson.databind.JsonNode;
 
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -245,10 +247,10 @@
         }
 
         // 瑙f瀽琛ㄥ崟閰嶇疆
-        Map<String, BpmFormFieldVO> formFieldsMap = new HashMap<>();
+        Map<String, BpmFormFieldVO> formFieldsMap = new LinkedHashMap<>();
         processDefinitionInfo.getFormFields().forEach(formFieldStr -> {
-            BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class);
-            parseFormField(formField, formFieldsMap);
+            JsonNode formFieldNode = JsonUtils.parseObject(formFieldStr, JsonNode.class);
+            parseFormField(formFieldNode, formFieldsMap);
         });
 
         // 鎯呭喌涓�锛氬綋鑷畾涔変簡鎽樿
@@ -275,18 +277,32 @@
     /**
      * 閫掑綊瑙f瀽琛ㄥ崟瀛楁
      */
-    private static void parseFormField(BpmFormFieldVO formField, Map<String, BpmFormFieldVO> formFieldsMap) {
-        if (formField == null) {
+    private static void parseFormField(JsonNode formFieldNode, Map<String, BpmFormFieldVO> formFieldsMap) {
+        if (formFieldNode == null || !formFieldNode.isObject()) {
             return;
         }
-        // 濡傛灉瀛樺湪 children -> 璇存槑鏄竷灞�缁勪欢
-        if (formField.getChildren() != null && !formField.getChildren().isEmpty()) {
-            for (BpmFormFieldVO child : formField.getChildren()) {
+
+        // 濡傛灉 children 閲屽瓨鍦ㄥ璞¤妭鐐癸紝璇存槑鏄竷灞�缁勪欢锛涘瓧绗︿覆鑺傜偣鏄垎鍓茬嚎銆佹爣绛俱�佹枃瀛楃瓑灞曠ず缁勪欢鍐呭锛岀洿鎺ヨ烦杩囥��
+        JsonNode children = formFieldNode.get("children");
+        if (children != null && children.isArray() && children.size() > 0) {
+            boolean hasObjectChild = false;
+            for (JsonNode child : children) {
+                if (!child.isObject()) {
+                    continue;
+                }
+                hasObjectChild = true;
                 parseFormField(child, formFieldsMap);
             }
-            return;
+            if (hasObjectChild) {
+                return;
+            }
         }
+
         // 鐪熷疄瀛楁鎵嶅姞鍏� map
+        BpmFormFieldVO formField = new BpmFormFieldVO()
+                .setType(JsonUtils.getText(formFieldNode, "type"))
+                .setField(JsonUtils.getText(formFieldNode, "field"))
+                .setTitle(JsonUtils.getText(formFieldNode, "title"));
         if (StrUtil.isNotBlank(formField.getField())) {
             formFieldsMap.put(formField.getField(), formField);
         }

--
Gitblit v1.9.3