From a532a0f9edfdfee9577fa36a7ecc5edbe249cd12 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期四, 24 九月 2026 19:06:42 +0800
Subject: [PATCH] feat(生产工单): 工单列表返回产品大类

---
 src/main/java/com/ruoyi/production/enums/MajorCategoryEnum.java |  118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 118 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/enums/MajorCategoryEnum.java b/src/main/java/com/ruoyi/production/enums/MajorCategoryEnum.java
new file mode 100644
index 0000000..fc1a4ee
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/enums/MajorCategoryEnum.java
@@ -0,0 +1,118 @@
+package com.ruoyi.production.enums;
+
+import lombok.Getter;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鐢熶骇鎶ュ伐浜у搧澶х被銆�
+ *
+ * <p>鎶ュ伐鍙尯鍒嗕箰鍣ㄥぇ绫伙紙灏忔彁鐞�/涓彁鐞�/澶ф彁鐞�/璐濇柉锛夛紝涓嶅啀鍖哄垎闆朵欢銆�
+ * 澶х被鍚屾椂鏄�屾姌鍚堝皬鎻愮惔褰撻噺銆嶆姌绠楃殑鍖归厤閿紝鍥犳杩欓噷鐨勮鑼冨�煎繀椤讳笌
+ * 鍓嶇涓嬫媺閫夐」銆亄@code production_product_main.major_category} 钀藉簱鍊间繚鎸佷竴鑷淬��</p>
+ *
+ * <p>鏈灇涓炬槸澶х被鍒ゅ畾鐨�<b>鍞竴浜嬪疄婧�</b>锛氭姤宸ュ啓鍏ユ椂鎸変骇鍝佸悕绉板綊绫伙紱
+ * 宸ヨ祫鏍哥畻涓庣敓浜ф牳绠楃洿鎺ヨ鍙栧凡钀藉簱鐨勫ぇ绫诲瓧娈碉紝涓嶅啀鍚勮嚜鍋氬瓧绗︿覆姣旇緝銆�</p>
+ *
+ * @since 2026/09/24
+ */
+@Getter
+public enum MajorCategoryEnum {
+
+    VIOLIN("灏忔彁鐞�", "灏忔彁鐞�"),
+    VIOLA("涓彁鐞�", "涓彁鐞�"),
+    CELLO("澶ф彁鐞�", "澶ф彁鐞�"),
+    BASS("璐濇柉", "璐濇柉", "璐濆徃");
+
+    /**
+     * 閰嶄欢鎺掗櫎璇嶏細鐞寸洅/鐞村/寮撶洅绛夐厤浠跺悕绉伴噷鍙兘鍑虹幇銆岃礉鍙搞�嶃�屽ぇ鎻愬銆嶇瓑瀛楁牱
+     * 锛堝鈥淪A璐濆徃濂椻�濃�淪A澶ф彁濂椻�濓級锛屽厛鎺掗櫎锛岄伩鍏嶈璇綊鍏ヤ箰鍣ㄥぇ绫汇��
+     */
+    private static final List<String> ACCESSORY_EXCLUDES = List.of("鐞寸洅", "鐞村", "寮撶洅");
+
+    /**
+     * 澶х被瑙勮寖鍊� -> 璇ュぇ绫荤殑浜у搧鍚嶇О鍖归厤鍒悕銆�
+     * 鐜板満鏁版嵁鎶娿�岃礉鏂�嶅啓浣溿�岃礉鍙搞�嶏紝鏁� BASS 閰嶄簡涓や釜鍒悕銆�
+     */
+    private static final Map<String, List<String>> CATEGORY_ALIASES = new LinkedHashMap<>();
+
+    static {
+        for (MajorCategoryEnum item : values()) {
+            CATEGORY_ALIASES.put(item.category, List.of(item.aliases));
+        }
+    }
+
+    /** 澶х被瑙勮寖鍊硷紝钀藉簱鍒� production_product_main.major_category */
+    private final String category;
+
+    /** 鐢ㄤ簬鍖归厤浜у搧鍚嶇О鐨勫埆鍚嶏紝绗竴涓笌瑙勮寖鍊肩浉鍚� */
+    private final String[] aliases;
+
+    MajorCategoryEnum(String category, String... aliases) {
+        this.category = category;
+        this.aliases = aliases;
+    }
+
+    /**
+     * 鎸変骇鍝佸悕绉板綊鍏ヤ箰鍣ㄥぇ绫汇�傝嚜搴曞悜涓婇亶鍘嗕骇鍝佹爲鏃堕�愬眰璋冪敤锛屽懡涓嵆杩斿洖銆�
+     *
+     * @param productName 浜у搧鍚嶇О锛屽彲涓� null
+     * @return 澶х被瑙勮寖鍊硷紱閰嶄欢銆侀潪涔愬櫒浜у搧銆佺┖鍊间竴寰嬭繑鍥� null
+     */
+    public static String match(String productName) {
+        if (productName == null || productName.isEmpty()) {
+            return null;
+        }
+        if (ACCESSORY_EXCLUDES.stream().anyMatch(productName::contains)) {
+            return null;
+        }
+        for (Map.Entry<String, List<String>> entry : CATEGORY_ALIASES.entrySet()) {
+            for (String alias : entry.getValue()) {
+                if (productName.contains(alias)) {
+                    return entry.getKey();
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鎸夊ぇ绫昏鑼冨�煎彇鏋氫妇銆�
+     *
+     * @param category 澶х被瑙勮寖鍊硷紝鍙负 null
+     * @return 瀵瑰簲鏋氫妇锛沶ull 鎴栨湭鐭ュ彇鍊艰繑鍥� null
+     */
+    public static MajorCategoryEnum of(String category) {
+        if (category == null || category.isEmpty()) {
+            return null;
+        }
+        for (MajorCategoryEnum item : values()) {
+            if (item.category.equals(category)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鍒ゆ柇鏄惁鏄箰鍣ㄥぇ绫汇�傛姤宸ユ湭褰掔被锛堝ぇ绫讳负 null锛夋椂杩斿洖 false锛�
+     * 鐢辫皟鐢ㄦ柟璧般�岄潪涔愬櫒浜у搧銆嶅垎鏀鐞嗐��
+     */
+    public static boolean isInstrument(String category) {
+        return of(category) != null;
+    }
+
+    /**
+     * 鍏ㄩ儴澶х被瑙勮寖鍊硷紝鎸夋灇涓惧0鏄庨『搴忋��
+     */
+    public static List<String> allCategories() {
+        List<String> categories = new ArrayList<>(values().length);
+        for (MajorCategoryEnum item : values()) {
+            categories.add(item.category);
+        }
+        return categories;
+    }
+}

--
Gitblit v1.9.3