From b4d3224898d50b8f1e30b5c8083a520743927282 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Mon, 14 Jul 2025 21:08:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into xin

---
 oying-system/src/main/java/com/oying/modules/pc/common/core/constrant/AuditStatusEnum.java |   86 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 86 insertions(+), 0 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/pc/common/core/constrant/AuditStatusEnum.java b/oying-system/src/main/java/com/oying/modules/pc/common/core/constrant/AuditStatusEnum.java
new file mode 100644
index 0000000..3463c7b
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/pc/common/core/constrant/AuditStatusEnum.java
@@ -0,0 +1,86 @@
+package com.oying.modules.pc.common.core.constrant;
+
+import lombok.Getter;
+
+import java.util.EnumSet;
+import java.util.Optional;
+
+@Getter
+public enum AuditStatusEnum {
+
+    DRAFT(1000, "草稿"),
+    PENDING(1001, "待审核"),
+    UNDER_REVIEW(1002, "审核中"),
+    REJECTED(1003, "拒绝"),
+    APPROVED(1004, "同意"),
+    CANCELLED(1005, "取消");
+
+    private final Integer value;
+    private final String reasonPhrase;
+
+    AuditStatusEnum(Integer value, String reasonPhrase) {
+        this.value = value;
+        this.reasonPhrase = reasonPhrase;
+    }
+
+    public static AuditStatusEnum get(Integer code) {
+        return getOrDefault(code, null);
+    }
+
+    public static AuditStatusEnum getOrDefault(Integer code, AuditStatusEnum defaultStatus) {
+        for (AuditStatusEnum value : values()) {
+            if (value.value.equals(code)) {
+                return value;
+            }
+        }
+        return defaultStatus;
+    }
+
+    public static boolean isApproved(Integer code) {
+        return Optional.ofNullable(get(code)).map(i -> i.equals(APPROVED)).orElse(false);
+    }
+
+    public static boolean isCompleted(Integer code) {
+        return EnumSet.of(REJECTED, APPROVED, CANCELLED).contains(get(code));
+    }
+
+    public static AuditStatusEnum get(String name) {
+        return AuditStatusEnum.valueOf(name);
+    }
+
+    public static EnumSet<AuditStatusEnum> getNext(AuditStatusEnum status) {
+        switch (status) {
+            case DRAFT:
+                return EnumSet.of(PENDING);
+            case PENDING:
+                return EnumSet.of(UNDER_REVIEW, APPROVED, REJECTED, CANCELLED);
+            case UNDER_REVIEW:
+                return EnumSet.of(APPROVED, REJECTED);
+            case APPROVED:
+            case REJECTED:
+            case CANCELLED:
+            default:
+                return EnumSet.noneOf(AuditStatusEnum.class);
+        }
+    }
+
+    public static boolean hasNext(AuditStatusEnum status) {
+        return !getNext(status).isEmpty();
+    }
+
+    public EnumSet<AuditStatusEnum> getNext() {
+        return getNext(this);
+    }
+
+    public boolean nextContains(AuditStatusEnum status) {
+        return getNext().contains(status);
+    }
+
+    public boolean nextContains(String status) {
+        return nextContains(get(status));
+    }
+
+    public boolean hasNext() {
+        return hasNext(this);
+    }
+}

--
Gitblit v1.9.3