From f1208474f771a1c233d7425c8ed13fbaa0d521ac Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期三, 12 三月 2025 09:35:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/5.X' into 5.X

---
 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java |   79 +++++++++++++++++++++++++++++++++++----
 1 files changed, 71 insertions(+), 8 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java
index 0af943a..c1660ee 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java
@@ -7,6 +7,10 @@
 import org.dromara.common.core.utils.StringUtils;
 
 import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 涓氬姟鐘舵�佹灇涓�
@@ -16,30 +20,37 @@
 @Getter
 @AllArgsConstructor
 public enum BusinessStatusEnum {
+
     /**
      * 宸叉挙閿�
      */
     CANCEL("cancel", "宸叉挙閿�"),
+
     /**
      * 鑽夌
      */
     DRAFT("draft", "鑽夌"),
+
     /**
      * 寰呭鏍�
      */
     WAITING("waiting", "寰呭鏍�"),
+
     /**
      * 宸插畬鎴�
      */
     FINISH("finish", "宸插畬鎴�"),
+
     /**
      * 宸蹭綔搴�
      */
     INVALID("invalid", "宸蹭綔搴�"),
+
     /**
      * 宸查��鍥�
      */
     BACK("back", "宸查��鍥�"),
+
     /**
      * 宸茬粓姝�
      */
@@ -55,20 +66,72 @@
      */
     private final String desc;
 
+    private static final Map<String, BusinessStatusEnum> STATUS_MAP = Arrays.stream(BusinessStatusEnum.values())
+        .collect(Collectors.toConcurrentMap(BusinessStatusEnum::getStatus, Function.identity()));
+
     /**
-     * 鑾峰彇涓氬姟鐘舵��
+     * 鏍规嵁鐘舵�佽幏鍙栧搴旂殑 BusinessStatusEnum 鏋氫妇
      *
-     * @param status 鐘舵��
+     * @param status 涓氬姟鐘舵�佺爜
+     * @return 瀵瑰簲鐨� BusinessStatusEnum 鏋氫妇锛屽鏋滄壘涓嶅埌鍒欒繑鍥� null
+     */
+    public static BusinessStatusEnum getByStatus(String status) {
+        // 浣跨敤 STATUS_MAP 鑾峰彇瀵瑰簲鐨勬灇涓撅紝鑻ユ壘涓嶅埌鍒欒繑鍥� null
+        return STATUS_MAP.get(status);
+    }
+
+    /**
+     * 鏍规嵁鐘舵�佽幏鍙栧搴旂殑涓氬姟鐘舵�佹弿杩颁俊鎭�
+     *
+     * @param status 涓氬姟鐘舵�佺爜
+     * @return 杩斿洖涓氬姟鐘舵�佹弿杩帮紝鑻ョ姸鎬佺爜涓虹┖鎴栨湭鎵惧埌瀵瑰簲鐨勬灇涓撅紝杩斿洖绌哄瓧绗︿覆
      */
     public static String findByStatus(String status) {
         if (StringUtils.isBlank(status)) {
             return StrUtil.EMPTY;
         }
-        return Arrays.stream(BusinessStatusEnum.values())
-            .filter(statusEnum -> statusEnum.getStatus().equals(status))
-            .findFirst()
-            .map(BusinessStatusEnum::getDesc)
-            .orElse(StrUtil.EMPTY);
+        BusinessStatusEnum statusEnum = STATUS_MAP.get(status);
+        return (statusEnum != null) ? statusEnum.getDesc() : StrUtil.EMPTY;
+    }
+
+    /**
+     * 鍒ゆ柇鏄惁涓烘寚瀹氱殑鐘舵�佷箣涓�锛氳崏绋裤�佸凡鎾ら攢鎴栧凡閫�鍥�
+     *
+     * @param status 瑕佹鏌ョ殑鐘舵��
+     * @return 濡傛灉鐘舵�佷负鑽夌銆佸凡鎾ら攢鎴栧凡閫�鍥炰箣涓�锛屽垯杩斿洖 true锛涘惁鍒欒繑鍥� false
+     */
+    public static boolean isDraftOrCancelOrBack(String status) {
+        return DRAFT.status.equals(status) || CANCEL.status.equals(status) || BACK.status.equals(status);
+    }
+
+    /**
+     * 鍒ゆ柇鏄惁涓烘挙閿�锛岄��鍥烇紝浣滃簾锛岀粓姝�
+     *
+     * @param status status
+     * @return 缁撴灉
+     */
+    public static boolean initialState(String status) {
+        return CANCEL.status.equals(status) || BACK.status.equals(status) || INVALID.status.equals(status) || TERMINATION.status.equals(status);
+    }
+
+    /**
+     * 鑾峰彇杩愯涓殑瀹炰緥鐘舵�佸垪琛�
+     *
+     * @return 鍖呭惈杩愯涓疄渚嬬姸鎬佺殑涓嶅彲鍙樺垪琛�
+     * 锛堝寘鍚� DRAFT銆乄AITING銆丅ACK 鍜� CANCEL 鐘舵�侊級
+     */
+    public static List<String> runningStatus() {
+        return Arrays.asList(DRAFT.status, WAITING.status, BACK.status, CANCEL.status);
+    }
+
+    /**
+     * 鑾峰彇缁撴潫瀹炰緥鐨勭姸鎬佸垪琛�
+     *
+     * @return 鍖呭惈缁撴潫瀹炰緥鐘舵�佺殑涓嶅彲鍙樺垪琛�
+     * 锛堝寘鍚� FINISH銆両NVALID 鍜� TERMINATION 鐘舵�侊級
+     */
+    public static List<String> finishStatus() {
+        return Arrays.asList(FINISH.status, INVALID.status, TERMINATION.status);
     }
 
     /**
@@ -148,5 +211,5 @@
             throw new ServiceException("娴佺▼鐘舵�佷负绌猴紒");
         }
     }
-}
 
+}

--
Gitblit v1.9.3