From 073605b6d62363dd7d48f5ca047a1d401418574a Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期日, 04 十月 2026 17:34:06 +0800
Subject: [PATCH] docs: record 2026-10-04 integration commit
---
emergency-repair-server/src/main/java/com/emergencyrepair/system/service/ButtonPermissionCatalog.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 117 insertions(+), 0 deletions(-)
diff --git a/emergency-repair-server/src/main/java/com/emergencyrepair/system/service/ButtonPermissionCatalog.java b/emergency-repair-server/src/main/java/com/emergencyrepair/system/service/ButtonPermissionCatalog.java
new file mode 100644
index 0000000..d530fa1
--- /dev/null
+++ b/emergency-repair-server/src/main/java/com/emergencyrepair/system/service/ButtonPermissionCatalog.java
@@ -0,0 +1,117 @@
+package com.emergencyrepair.system.service;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Declarative catalog of the operation buttons each page exposes.
+ * Menu management uses it to create MENU_TYPE=2 entries automatically.
+ */
+@Component
+public class ButtonPermissionCatalog {
+ @Data
+ @AllArgsConstructor
+ public static class ButtonDefinition {
+ private String code;
+ private String name;
+ }
+
+ private static final Map<String, List<ButtonDefinition>> CATALOG = new LinkedHashMap<>();
+
+ static {
+ put("/dashboard",
+ def("dashboard:query", "\u67e5\u8be2"));
+ put("/fault/report",
+ def("fault:report:query", "\u67e5\u8be2"),
+ def("fault:report:add", "\u65b0\u589e"),
+ def("fault:report:edit", "\u4fee\u6539"),
+ def("fault:report:delete", "\u5220\u9664"),
+ def("fault:report:export", "\u5bfc\u51fa"),
+ def("fault:report:report", "\u4e0a\u62a5"));
+ put("/fault/review",
+ def("fault:review:query", "\u67e5\u8be2"),
+ def("fault:review:audit", "\u5ba1\u6838"),
+ def("fault:review:edit", "\u4fee\u6539"),
+ def("fault:review:cancel", "\u9500\u9879"));
+ put("/fault/approval/cmb",
+ def("fault:approval:query", "\u67e5\u8be2"),
+ def("fault:approval:approve", "\u5ba1\u6279"));
+ put("/fault/approval/jcc-assistant",
+ def("fault:approval:query", "\u67e5\u8be2"),
+ def("fault:approval:approve", "\u5ba1\u6279"));
+ put("/fault/approval/jcc-director",
+ def("fault:approval:query", "\u67e5\u8be2"),
+ def("fault:approval:approve", "\u5ba1\u6279"));
+ put("/fault/dispatch",
+ def("fault:dispatch:query", "\u67e5\u8be2"),
+ def("fault:dispatch:dispatch", "\u4e00\u952e\u6d3e\u5355"));
+ put("/fault/completion",
+ def("fault:completion:query", "\u67e5\u8be2"),
+ def("fault:completion:status", "\u5b8c\u5de5\u72b6\u6001\u8bbe\u7f6e"),
+ def("fault:completion:score", "rk_T\u5458\u8bc4\u5206"));
+ put("/completion/report",
+ def("completion:report:save", "\u4fdd\u5b58"),
+ def("completion:report:submit", "\u63d0\u4ea4"));
+ put("/acceptance/application",
+ def("acceptance:application:query", "\u67e5\u8be2"),
+ def("acceptance:application:apply", "\u7533\u8bf7"));
+ put("/acceptance/inspector",
+ def("acceptance:inspector:query", "\u67e5\u8be2"),
+ def("acceptance:inspector:pass", "\u901a\u8fc7"),
+ def("acceptance:inspector:reject", "\u6253\u56de"));
+ put("/acceptance/leader",
+ def("acceptance:leader:query", "\u67e5\u8be2"),
+ def("acceptance:leader:pass", "\u901a\u8fc7"),
+ def("acceptance:leader:reject", "\u6253\u56de"));
+ put("/acceptance/print",
+ def("acceptance:print:query", "\u67e5\u8be2"),
+ def("acceptance:print:print", "\u6253\u5370"));
+ put("/acceptance/rating",
+ def("acceptance:rating:query", "\u67e5\u8be2"),
+ def("acceptance:rating:grade", "\u8bc4\u7ea7"));
+ put("/reports/overview", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
+ put("/reports/top-equipment", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
+ put("/reports/by-team", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
+ put("/reports/contractors", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
+ put("/reports/trend", def("report:common:query", "\u67e5\u8be2"), def("report:common:export", "\u5bfc\u51fa"));
+ put("/system/product-tree", def("system:tree:add", "\u65b0\u589e"), def("system:tree:edit", "\u7f16\u8f91"), def("system:tree:delete", "\u5220\u9664"));
+ put("/system/base-equipment", def("system:tree:add", "\u65b0\u589e"), def("system:tree:edit", "\u7f16\u8f91"), def("system:tree:delete", "\u5220\u9664"));
+ put("/system/engineering-majors", def("system:major:add", "\u65b0\u589e"), def("system:major:edit", "\u7f16\u8f91"), def("system:major:delete", "\u5220\u9664"));
+ put("/system/team-majors", def("system:major:add", "\u65b0\u589e"), def("system:major:edit", "\u7f16\u8f91"), def("system:major:delete", "\u5220\u9664"));
+ put("/system/users", def("system:users:query", "\u67e5\u8be2"), def("system:users:assign", "\u89d2\u8272\u6388\u6743"));
+ put("/system/roles", def("system:roles:add", "\u65b0\u589e"), def("system:roles:edit", "\u7f16\u8f91"), def("system:roles:delete", "\u5220\u9664"));
+ put("/system/roles", def("system:roles:add", "\u65b0\u589e"), def("system:roles:edit", "\u7f16\u8f91"), def("system:roles:delete", "\u5220\u9664"), def("system:roles:assign", "\u7528\u6237\u8bbe\u7f6e"));
+ put("/system/menus", def("system:menus:add", "\u65b0\u589e"), def("system:menus:edit", "\u7f16\u8f91"), def("system:menus:delete", "\u5220\u9664"), def("system:menus:buttons", "\u83dc\u5355\u6309\u94ae\u540c\u6b65"));
+ put("/system/menu-permissions", def("system:menu-permissions:save", "\u4fdd\u5b58\u6388\u6743"));
+ put("/system/login-logs", def("system:login-logs:query", "\u67e5\u8be2"), def("system:login-logs:export", "\u5bfc\u51fa"));
+ put("/system/operation-logs", def("system:operation-logs:query", "\u67e5\u8be2"), def("system:operation-logs:export", "\u5bfc\u51fa"));
+ }
+
+ private static void put(String url, ButtonDefinition... definitions) {
+ List<ButtonDefinition> list = new ArrayList<>();
+ Collections.addAll(list, definitions);
+ CATALOG.put(url, Collections.unmodifiableList(list));
+ }
+
+ private static ButtonDefinition def(String code, String name) {
+ return new ButtonDefinition(code, name);
+ }
+
+ public List<ButtonDefinition> buttonsFor(String url) {
+ if (url == null) {
+ return Collections.emptyList();
+ }
+ return CATALOG.getOrDefault(url, Collections.emptyList());
+ }
+
+ public Map<String, List<ButtonDefinition>> catalog() {
+ return CATALOG;
+ }
+}
--
Gitblit v1.9.1