From 80155f95799dfd1c457e32252cbe43dfbb01c05a Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期六, 25 四月 2026 13:30:00 +0800
Subject: [PATCH] feat(production): 优化生产产品主记录的时间设置逻辑

---
 src/main/java/com/ruoyi/common/utils/StringUtils.java |   80 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/common/utils/StringUtils.java b/src/main/java/com/ruoyi/common/utils/StringUtils.java
index fc6c6b5..5e13807 100644
--- a/src/main/java/com/ruoyi/common/utils/StringUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/StringUtils.java
@@ -6,6 +6,9 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.pinyin.PinyinUtil;
 import org.springframework.util.AntPathMatcher;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.text.StrFormatter;
@@ -287,6 +290,32 @@
     }
 
     /**
+     * 鍦ㄥ瓧绗︿覆涓煡鎵剧涓�涓嚭鐜扮殑 `open` 鍜屾渶鍚庝竴涓嚭鐜扮殑 `close` 涔嬮棿鐨勫瓙瀛楃涓�
+     * 
+     * @param str 瑕佹埅鍙栫殑瀛楃涓�
+     * @param open 璧峰瀛楃涓�
+     * @param close 缁撴潫瀛楃涓�
+     * @return 鎴彇缁撴灉
+     */
+    public static String substringBetweenLast(final String str, final String open, final String close)
+    {
+        if (isEmpty(str) || isEmpty(open) || isEmpty(close))
+        {
+            return NULLSTR;
+        }
+        final int start = str.indexOf(open);
+        if (start != INDEX_NOT_FOUND)
+        {
+            final int end = str.lastIndexOf(close);
+            if (end != INDEX_NOT_FOUND)
+            {
+                return str.substring(start + open.length(), end);
+            }
+        }
+        return NULLSTR;
+    }
+
+    /**
      * 鍒ゆ柇鏄惁涓虹┖锛屽苟涓斾笉鏄┖鐧藉瓧绗�
      * 
      * @param str 瑕佸垽鏂殑value
@@ -353,6 +382,18 @@
     public static final Set<String> str2Set(String str, String sep)
     {
         return new HashSet<String>(str2List(str, sep, true, false));
+    }
+
+    /**
+     * 瀛楃涓茶浆list
+     * 
+     * @param str 瀛楃涓�
+     * @param sep 鍒嗛殧绗�
+     * @return list闆嗗悎
+     */
+    public static final List<String> str2List(String str, String sep)
+    {
+        return str2List(str, sep, true, false);
     }
 
     /**
@@ -681,4 +722,43 @@
         }
         return sb.toString();
     }
+
+    public static String padRight(String str, int length) {
+        if (str == null) str = "";
+        if (str.length() >= length) return str;
+        // 鐢ㄧ┖鏍艰ˉ榻�
+        return String.format("%-" + length + "s", str);
+    }
+
+
+    public static boolean containsChinese(String str) {
+        if (str == null) return false;
+        for (char c : str.toCharArray()) {
+            if (Character.UnicodeScript.of(c) == Character.UnicodeScript.HAN) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static String getProcessNo(String processName) {
+        if (StrUtil.isBlank(processName)) {
+            return "";
+        }
+
+        // 鍒ゆ柇鏄惁鍖呭惈涓枃
+        if (StringUtils.containsChinese(processName)) {
+            // 涓枃锛氭嫾闊抽瀛楁瘝
+            return StrUtil.toUpperCase(PinyinUtil.getFirstLetter(processName, ""));
+        } else {
+            // 鑻辨枃锛氬彇澶у啓瀛楁瘝 鐩墠宸ュ簭鍚嶇О娌℃湁鑻辨枃鐨勫舰寮� 鍙兘澶勭悊ExxxBxxx
+            StringBuilder sb = new StringBuilder();
+            for (char c : processName.toCharArray()) {
+                if (Character.isUpperCase(c)) {
+                    sb.append(c);
+                }
+            }
+            return sb.toString();
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3