From 781c5f73033ad1ae8c350210c46b4e24925d427b Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 17 九月 2026 17:29:16 +0800
Subject: [PATCH] fix:委托编号更改

---
 basic-server/src/main/java/com/ruoyi/basic/utils/StandardTreePathParser.java |   78 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/utils/StandardTreePathParser.java b/basic-server/src/main/java/com/ruoyi/basic/utils/StandardTreePathParser.java
new file mode 100644
index 0000000..ae186b1
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/utils/StandardTreePathParser.java
@@ -0,0 +1,78 @@
+package com.ruoyi.basic.utils;
+
+import com.ruoyi.common.exception.base.BaseException;
+
+import java.util.regex.Pattern;
+
+/**
+ * 鏍囧噯鏍戝浐瀹氫袱绾ц矾寰勮В鏋愬伐鍏枫��
+ *
+ * 鍏煎鍓嶇浼犻�掔殑涓ょ鍙跺瓙璺緞锛�
+ * 鏍囧噯搴撲晶锛氳涓� - null - 鏍囧噯
+ * 涓嬪崟渚э細琛屼笟 -  - 鏍囧噯
+ * 缁熶竴瑙f瀽涓� industry = 绗竴涓湁鏁堟锛宻tandard = 鏈�鍚庝竴涓湁鏁堟銆�
+ */
+public final class StandardTreePathParser {
+
+    private static final String SEPARATOR = " - ";
+
+    private static final String NULL_MARKER = "null";
+
+    private StandardTreePathParser() {
+    }
+
+    /**
+     * 瑙f瀽璺緞涓鸿涓� + 鏍囧噯銆傛爣鍑嗗彲鑳戒负 null锛堣〃绀轰粎琛屼笟鑺傜偣锛夈��
+     */
+    public static StandardTreePath parse(String tree) {
+        if (tree == null || tree.trim().isEmpty()) {
+            throw new BaseException("鏍囧噯鏍戣矾寰勬牸寮忛敊璇�");
+        }
+        String[] parts = tree.split(Pattern.quote(SEPARATOR), -1);
+        for (int i = 0; i < parts.length; i++) {
+            parts[i] = parts[i].trim();
+        }
+        if (parts.length == 1) {
+            validateSegment(parts[0]);
+            return new StandardTreePath(parts[0], null);
+        }
+        if (parts.length == 2) {
+            validateSegment(parts[0]);
+            validateSegment(parts[1]);
+            return new StandardTreePath(parts[0], parts[1]);
+        }
+        if (parts.length == 3 && (parts[1].isEmpty() || NULL_MARKER.equals(parts[1]))) {
+            validateSegment(parts[0]);
+            validateSegment(parts[2]);
+            return new StandardTreePath(parts[0], parts[2]);
+        }
+        throw new BaseException("鏍囧噯鏍戣矾寰勬牸寮忛敊璇�");
+    }
+
+    /**
+     * 鐢熸垚瑙勮寖璺緞锛氳涓� - null - 鏍囧噯
+     */
+    public static String canonical(String industry, String standard) {
+        String normalizedIndustry = trim(industry);
+        String normalizedStandard = trim(standard);
+        validateSegment(normalizedIndustry);
+        validateSegment(normalizedStandard);
+        return normalizedIndustry + SEPARATOR + NULL_MARKER + SEPARATOR + normalizedStandard;
+    }
+
+    private static String trim(String value) {
+        return value == null ? "" : value.trim();
+    }
+
+    public static String normalizeNodeName(String value) {
+        String normalized = trim(value);
+        validateSegment(normalized);
+        return normalized;
+    }
+
+    private static void validateSegment(String value) {
+        if (value == null || value.isEmpty() || NULL_MARKER.equals(value) || value.contains(SEPARATOR)) {
+            throw new BaseException("鏍囧噯鏍戣矾寰勬牸寮忛敊璇�");
+        }
+    }
+}

--
Gitblit v1.9.3