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