From ce841ddf85c48bae32f9e3068403fdfe98ac8711 Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期三, 07 十月 2026 12:35:09 +0800
Subject: [PATCH] feat: add extension defaults for fault reporting

---
 emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java |   27 ++++++++++++++++++++++-----
 1 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java b/emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java
index 4c5edb4..0cc1f2c 100644
--- a/emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java
+++ b/emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java
@@ -34,6 +34,7 @@
 import com.emergencyrepair.system.mapper.SysTenantMenuMapper;
 import com.emergencyrepair.system.service.ButtonPermissionCatalog;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
@@ -74,6 +75,9 @@
     private final JdbcTemplate jdbcTemplate;
     private final ButtonPermissionCatalog buttonPermissionCatalog;
 
+    @Value("${app.seed-demo-data:false}")
+    private boolean seedDemoData;
+
     private final Map<String, Long> menuIds = new HashMap<>();
     private final Map<String, Long> productDeviceIds = new HashMap<>();
     private final List<Long> contractorIds = new ArrayList<>();
@@ -84,6 +88,7 @@
     public void run(String... args) {
         seedMenusAndRoles();
         ensureSystemMenus();
+        ensureCompletionMenus();
         normalizeSensitiveTerms();
         normalizeEquipmentTerms();
         seedButtonMenus();
@@ -99,7 +104,9 @@
         backfillFaultEquipmentIds();
         upgradeDemoFaultEquipment();
         upgradeDemoMultiEquipmentFault();
-        seedBusinessData();
+        if (seedDemoData) {
+            seedBusinessData();
+        }
         backfillCompletionConsumableCounts();
         normalizeParentSystemSeparators();
     }
@@ -116,6 +123,7 @@
             createMenu("dispatch", fault, "rk_XCB鍔╃悊娲惧崟", "/fault/dispatch", null, 1, 60);
             createMenu("completion-list", fault, "瀹屽伐鎯呭喌澶勭悊", "/fault/completion", null, 1, 70);
             createMenu("completion-report", fault, "瀹屽伐淇℃伅涓婃姤", "/completion/report", null, 1, 80);
+            createMenu("completion-query", fault, "瀹屽伐淇℃伅鏌ラ槄", "/completion/query", null, 1, 90);
 
             Long acceptance = createMenu("acceptance", null, "瀹屽伐楠屾敹", null, "el-icon-circle-check", 0, 30);
             createMenu("accept-application", acceptance, "楠屾敹鐢宠", "/acceptance/application", null, 1, 10);
@@ -135,7 +143,7 @@
             Long systemConfig = createMenu("system-config", system, "绯荤粺閰嶇疆", null, "el-icon-s-tools", 0, 10);
             createMenu("organization", systemConfig, "缁勭粐鏈烘瀯", "/system/organization", null, 1, 10);
             createMenu("contractors", systemConfig, "鎵夸慨鍗曚綅绠$悊", "/system/contractors", null, 1, 20);
-            createMenu("product-tree", systemConfig, "浜у搧缁撴瀯鏍戠鐞�", "/system/product-tree", null, 1, 30);
+            createMenu("product-tree", systemConfig, "浜у搧缁撴瀯鏍�", "/system/product-tree", null, 1, 30);
             createMenu("base-equipment", systemConfig, "璁惧鍩虹搴撶鐞�", "/system/base-equipment", null, 1, 40);
             createMenu("engineering-majors", systemConfig, "宸ョ▼涓撲笟閰嶇疆", "/system/engineering-majors", null, 1, 50);
             createMenu("team-majors", systemConfig, "rk_T闃熶笓涓氶厤缃�", "/system/team-majors", null, 1, 60);
@@ -247,14 +255,13 @@
             menuMapper.insert(menu);
             return menu.getId();
         }
+        // Existing menu names are user-managed; startup only repairs structural fields.
         boolean changed = !java.util.Objects.equals(menu.getPid(), pid)
-                || !java.util.Objects.equals(menu.getName(), name)
                 || !java.util.Objects.equals(menu.getSortNo(), sort)
                 || !java.util.Objects.equals(menu.getMenuType(), 1)
                 || !java.util.Objects.equals(menu.getVisible(), 1);
         if (changed) {
             menu.setPid(pid);
-            menu.setName(name);
             menu.setMenuType(1);
             menu.setSortNo(sort);
             menu.setVisible(1);
@@ -262,6 +269,16 @@
             menuMapper.updateById(menu);
         }
         return menu.getId();
+    }
+
+    private void ensureCompletionMenus() {
+        SysMenu fault = menuMapper.selectOne(Wrappers.<SysMenu>lambdaQuery()
+                .eq(SysMenu::getName, "鏁呴殰绠$悊")
+                .eq(SysMenu::getMenuType, 0)
+                .last("LIMIT 1"));
+        Long pid = fault == null ? 0L : fault.getId();
+        ensureMenu(pid, "瀹屽伐淇℃伅鏌ラ槄", "/completion/query", 90);
+        grantAdminMenus("/completion/query");
     }
 
     private void ensureSystemMenus() {
@@ -274,7 +291,7 @@
 
         ensureMenu(systemConfig, "缁勭粐鏈烘瀯", "/system/organization", 10);
         ensureMenu(systemConfig, "鎵夸慨鍗曚綅绠$悊", "/system/contractors", 20);
-        ensureMenu(systemConfig, "浜у搧缁撴瀯鏍戠鐞�", "/system/product-tree", 30);
+        ensureMenu(systemConfig, "浜у搧缁撴瀯鏍�", "/system/product-tree", 30);
         ensureMenu(systemConfig, "璁惧鍩虹搴撶鐞�", "/system/base-equipment", 40);
         ensureMenu(systemConfig, "宸ョ▼涓撲笟閰嶇疆", "/system/engineering-majors", 50);
         ensureMenu(systemConfig, "rk_T闃熶笓涓氶厤缃�", "/system/team-majors", 60);

--
Gitblit v1.9.1