From 71b15a5c69dcc421bad71d558e191e12cb7bae3e Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 13 八月 2026 10:18:54 +0800
Subject: [PATCH] 其他模块引用供应商时,限制不能删除,给出提示

---
 yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java |   36 ++++++++++++++++++++++++++----------
 1 files changed, 26 insertions(+), 10 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..3242dec 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;
@@ -38,7 +40,7 @@
 /**
  * Flowable 鐩稿叧鐨勫伐鍏锋柟娉�
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 public class FlowableUtils {
 
@@ -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