瀏覽代碼

项目国际化(切面+环境引入+目录改造)

晴为镜 1 月之前
父節點
當前提交
c1a4ca6691
共有 20 個文件被更改,包括 4448 次插入38 次删除
  1. 55 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/api/ApiScriptController.java
  2. 3 2
      zkqy-admin/src/main/java/com/zkqy/web/controller/homepagestatistics/StatisticsController.java
  3. 11 8
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysMenuController.java
  4. 9 0
      zkqy-admin/src/main/resources/i18n/messages_en_US.properties
  5. 8 0
      zkqy-admin/src/main/resources/i18n/messages_zh_CN.properties
  6. 1878 0
      zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_i18n.json
  7. 1675 0
      zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_old_2025_04_27.json
  8. 419 0
      zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_translate_map_all.json
  9. 62 2
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysMenu.java
  10. 9 8
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysTenant.java
  11. 54 0
      zkqy-common/src/main/java/com/zkqy/common/enums/LocaleEnum.java
  12. 8 0
      zkqy-common/src/main/java/com/zkqy/common/utils/MessageUtils.java
  13. 78 0
      zkqy-common/src/main/java/com/zkqy/common/utils/i18n/I18nUtils.java
  14. 15 0
      zkqy-framework/src/main/java/com/zkqy/framework/config/LocaleConfig.java
  15. 55 0
      zkqy-framework/src/main/java/com/zkqy/framework/interceptor/LocaleInterceptor.java
  16. 4 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysMenuMapper.java
  17. 6 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysMenuService.java
  18. 41 14
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysMenuServiceImpl.java
  19. 2 2
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysTenantServiceImpl.java
  20. 56 2
      zkqy-system/src/main/resources/mapper/system/SysMenuMapper.xml

+ 55 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/api/ApiScriptController.java

@@ -0,0 +1,55 @@
+package com.zkqy.web.controller.api;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.domain.entity.SysMenu;
+import com.zkqy.common.utils.StringUtils;
+import com.zkqy.system.service.ISysMenuService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.nio.charset.Charset;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 存放脚本的控制层,刷库的时候用
+ */
+@RestController
+@RequestMapping("/api/script")
+public class ApiScriptController extends BaseController {
+
+    @Resource
+    private ISysMenuService iSysMenuService;
+
+    /**
+     * 刷主库的菜单表中英文菜单的名字,根据中文名字对照查询填充
+     * 普通用户菜单 + 特殊用户(huaxian)菜单
+     */
+    @GetMapping("/fillMenuNameEn")
+    public AjaxResult list() {
+        String path = "D:\\Coding\\gongsiProject\\mec\\mec-cloud_-intelligent-manufacturing_crm\\zkqy-admin\\src\\main\\resources\\sql\\initialize_sys_tenant_menu_translate_map_all.json";
+        // 如果要更新对应json的话,以下是获取所有菜单的集合方法
+        List<SysMenu> menuList = iSysMenuService.selectMenuList();
+        Set<String> collect = menuList.stream().map(menu -> menu.getMenuName()).collect(Collectors.toSet());
+        File file = new File(path);
+        JSONObject jsonObject = JSONUtil.readJSONObject(file, Charset.defaultCharset());
+        menuList.forEach(sysMenu -> {
+            String menuName = sysMenu.getMenuName();
+            String str = jsonObject.getStr(menuName);
+            if (StringUtils.isNotBlank(str)){
+                sysMenu.setMenuNameEn(str);
+                iSysMenuService.updateMenu(sysMenu);
+            }
+        });
+        return AjaxResult.success(menuList);
+    }
+
+
+}

+ 3 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/homepagestatistics/StatisticsController.java

@@ -2,6 +2,7 @@ package com.zkqy.web.controller.homepagestatistics;
 
 
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.MessageUtils;
 import com.zkqy.common.utils.SecurityUtils;
 import com.zkqy.system.domain.SysLogininfor;
 import com.zkqy.system.service.ISysOperLogService;
@@ -58,14 +59,14 @@ public class StatisticsController {
         List<Map> loginInformationStatistics1 = logininforService.getLoginInformationStatistics(sysLogininfor2);
         List<Map> list = new ArrayList<>();
         HashMap hashMap1=new HashMap();
-        hashMap1.put("name","客户端");
+        hashMap1.put("name", MessageUtils.message("client.side"));
         hashMap1.put("type","line");
         hashMap1.put("smooth","true");
         hashMap1.put("data",loginInformationStatistics.stream().map((item->item.get("daily_login_count"))).collect(Collectors.toList()));
         hashMap1.put("date",loginInformationStatistics.stream().map((item->item.get("login_date"))).collect(Collectors.toList()));
         list.add(hashMap1);
         HashMap hashMap2=new HashMap();
-        hashMap2.put("name","工具端");
+        hashMap2.put("name",MessageUtils.message("tool.side"));
         hashMap2.put("type","line");
         hashMap2.put("smooth","true");
         hashMap2.put("data",loginInformationStatistics1.stream().map((item->item.get("daily_login_count"))).collect(Collectors.toList()));

+ 11 - 8
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysMenuController.java

@@ -32,8 +32,7 @@ public class SysMenuController extends BaseController {
     //@PreAuthorize("@ss.hasPermi('system:menu:list')")
     @GetMapping("/list")
     public AjaxResult list(SysMenu menu) {
-        List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
-        return success(menus);
+        return success(menuService.selectMenuList(menu, getUserId()));
     }
 
     /**
@@ -42,7 +41,8 @@ public class SysMenuController extends BaseController {
     //@PreAuthorize("@ss.hasPermi('system:menu:query')")
     @GetMapping(value = "/{menuId}")
     public AjaxResult getInfo(@PathVariable Long menuId) {
-        return success(menuService.selectMenuById(menuId));
+        SysMenu sysMenu = menuService.selectMenuById(menuId);
+        return success(sysMenu);
     }
 
     /**
@@ -74,11 +74,12 @@ public class SysMenuController extends BaseController {
     @PostMapping
     public AjaxResult add(@Validated @RequestBody SysMenu menu) {
         if (!menuService.checkMenuNameUnique(menu)) {
-            return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
+            return error("新增菜单'" + menu.getMenuNameLocale() + "'失败,菜单名称已存在");
         } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
-            return error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
+            return error("新增菜单'" + menu.getMenuNameLocale() + "'失败,地址必须以http(s)://开头");
         }
         menu.setCreateBy(getUsername());
+        menu.setMenuNameByMenuNameLocale();
         // 如果租户id为null 表示admin新增菜单操作
         if (menu.getTenantId() == null) {
             return toAjax(menuService.insertMenu(menu));
@@ -106,13 +107,14 @@ public class SysMenuController extends BaseController {
     @PutMapping
     public AjaxResult edit(@Validated @RequestBody SysMenu menu) {
         if (!menuService.checkMenuNameUnique(menu)) {
-            return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
+            return error("修改菜单'" + menu.getMenuNameLocale() + "'失败,菜单名称已存在");
         } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
-            return error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
+            return error("修改菜单'" + menu.getMenuNameLocale() + "'失败,地址必须以http(s)://开头");
         } else if (menu.getMenuId().equals(menu.getParentId())) {
-            return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
+            return error("修改菜单'" + menu.getMenuNameLocale() + "'失败,上级菜单不能选择自己");
         }
         menu.setUpdateBy(getUsername());
+        menu.setMenuNameByMenuNameLocale();
         return toAjax(menuService.updateMenu(menu));
     }
 
@@ -178,6 +180,7 @@ public class SysMenuController extends BaseController {
             return error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
         }
         menu.setCreateBy(getUsername());
+        menu.setMenuNameByMenuNameLocale();
         return AjaxResult.success(menuService.insertMenus(menu, getUserId()));
     }
 }

+ 9 - 0
zkqy-admin/src/main/resources/i18n/messages_en_US.properties

@@ -0,0 +1,9 @@
+welcome.message=Welcome
+button.submit=Submit
+form=form
+table=table
+threeLevelLinkage=threeLevelLinkage
+formGroup=formGroup
+multiTableQuantity=multiTableQuantity
+client.side=client side
+tool.side=tool side

+ 8 - 0
zkqy-admin/src/main/resources/i18n/messages_zh_CN.properties

@@ -0,0 +1,8 @@
+# messages_zh_CN.properties
+form=\u8868\u5355
+table=\u8868\u683C
+threeLevelLinkage=\u4E09\u7EA7\u8054\u52A8
+formGroup=\u8868\u5355\u7EC4
+multiTableQuantity=\u591A\u8868\u6570\u91CF
+client.side=\u5BA2\u6237\u7AEF
+tool.side=\u5DE5\u5177\u7AEF

+ 1878 - 0
zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_i18n.json

@@ -0,0 +1,1878 @@
+[
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1,
+    "menuName": "系统管理",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 1,
+    "path": "system",
+    "component": null,
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "M",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "system",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "System Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 9080,
+    "menuName": "租户信息",
+    "parentName": null,
+    "parentId": 9764,
+    "orderNum": 8,
+    "path": "tenant_info",
+    "component": "system/tenant/tenantIndex",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "logininfor",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Tenant Information"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 9080,
+    "menuName": "管道节点",
+    "parentName": null,
+    "parentId": 9764,
+    "orderNum": 8,
+    "path": "scriptManage",
+    "component": "bpmprocess/scriptManage",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "logininfor",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Pipeline Node"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 100,
+    "menuName": "用户管理",
+    "parentName": null,
+    "parentId": 1,
+    "orderNum": 1,
+    "path": "user",
+    "component": "system/user/index",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:list",
+    "icon": "user",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "User Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 101,
+    "menuName": "角色管理",
+    "parentName": null,
+    "parentId": 1,
+    "orderNum": 2,
+    "path": "role",
+    "component": "system/role/index",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:role:list",
+    "icon": "peoples",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Role Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 102,
+    "menuName": "菜单管理",
+    "parentName": null,
+    "parentId": 1,
+    "orderNum": 3,
+    "path": "menu",
+    "component": "system/menu/index",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:menu:list",
+    "icon": "tree-table",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Menu Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 103,
+    "menuName": "部门管理",
+    "parentName": null,
+    "parentId": 1,
+    "orderNum": 4,
+    "path": "dept",
+    "component": "system/dept/index",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:dept:list",
+    "icon": "tree",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Department Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 104,
+    "menuName": "岗位管理",
+    "parentName": null,
+    "parentId": 1,
+    "orderNum": 5,
+    "path": "post",
+    "component": "system/post/index",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:post:list",
+    "icon": "post",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Position Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1000,
+    "menuName": "用户查询",
+    "parentName": null,
+    "parentId": 100,
+    "orderNum": 1,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:query",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "User Query"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1001,
+    "menuName": "用户新增",
+    "parentName": null,
+    "parentId": 100,
+    "orderNum": 2,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:add",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "User Add"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1002,
+    "menuName": "用户修改",
+    "parentName": null,
+    "parentId": 100,
+    "orderNum": 3,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:edit",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "User Edit"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1003,
+    "menuName": "用户删除",
+    "parentName": null,
+    "parentId": 100,
+    "orderNum": 4,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:remove",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "User Delete"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1004,
+    "menuName": "用户导出",
+    "parentName": null,
+    "parentId": 100,
+    "orderNum": 5,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:export",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "User Export"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1005,
+    "menuName": "用户导入",
+    "parentName": null,
+    "parentId": 100,
+    "orderNum": 6,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:import",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "User Import"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1006,
+    "menuName": "重置密码",
+    "parentName": null,
+    "parentId": 100,
+    "orderNum": 7,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:resetPwd",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Reset Password"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1007,
+    "menuName": "角色查询",
+    "parentName": null,
+    "parentId": 101,
+    "orderNum": 1,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:role:query",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Role Query"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1008,
+    "menuName": "角色新增",
+    "parentName": null,
+    "parentId": 101,
+    "orderNum": 2,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:role:add",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Role Add"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1009,
+    "menuName": "角色修改",
+    "parentName": null,
+    "parentId": 101,
+    "orderNum": 3,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:role:edit",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Role Edit"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1010,
+    "menuName": "角色删除",
+    "parentName": null,
+    "parentId": 101,
+    "orderNum": 4,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:role:remove",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Role Delete"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1011,
+    "menuName": "角色导出",
+    "parentName": null,
+    "parentId": 101,
+    "orderNum": 5,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:role:export",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Role Export"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1016,
+    "menuName": "部门查询",
+    "parentName": null,
+    "parentId": 103,
+    "orderNum": 1,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:dept:query",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Department Query"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1017,
+    "menuName": "部门新增",
+    "parentName": null,
+    "parentId": 103,
+    "orderNum": 2,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:dept:add",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Department Add"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1018,
+    "menuName": "部门修改",
+    "parentName": null,
+    "parentId": 103,
+    "orderNum": 3,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:dept:edit",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Department Edit"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1019,
+    "menuName": "部门删除",
+    "parentName": null,
+    "parentId": 103,
+    "orderNum": 4,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:dept:remove",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Department Delete"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1020,
+    "menuName": "岗位查询",
+    "parentName": null,
+    "parentId": 104,
+    "orderNum": 1,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:post:query",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Position Query"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1021,
+    "menuName": "岗位新增",
+    "parentName": null,
+    "parentId": 104,
+    "orderNum": 2,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:post:add",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Position Add"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1022,
+    "menuName": "岗位修改",
+    "parentName": null,
+    "parentId": 104,
+    "orderNum": 3,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:post:edit",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Position Edit"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1023,
+    "menuName": "岗位删除",
+    "parentName": null,
+    "parentId": 104,
+    "orderNum": 4,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:post:remove",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Position Delete"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1024,
+    "menuName": "岗位导出",
+    "parentName": null,
+    "parentId": 104,
+    "orderNum": 5,
+    "path": "",
+    "component": "",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:post:export",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Position Export"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-06-16 06:31:40",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1073,
+    "menuName": "数据引擎",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 3,
+    "path": "data",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "M",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "drag",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Data Engine"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-06-16 06:58:41",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1078,
+    "menuName": "数据表",
+    "parentName": null,
+    "parentId": 1073,
+    "orderNum": 1,
+    "path": "createTable",
+    "component": "tool/datasheet/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "documentation",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Data Table"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-06-19 05:39:54",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1082,
+    "menuName": "流程引擎",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 4,
+    "path": "processModeling",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "M",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "cascader",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Workflow Engine"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-06-19 05:40:44",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1083,
+    "menuName": "流程建模",
+    "parentName": null,
+    "parentId": 1082,
+    "orderNum": 2,
+    "path": "bpmnPro",
+    "component": "system/bpmnPro/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "component",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Workflow Modeling"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-06-19 07:35:07",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1084,
+    "menuName": "数据建模",
+    "parentName": null,
+    "parentId": 1073,
+    "orderNum": 2,
+    "path": "datamodeling",
+    "component": "dataEngine/datamodeling/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "form",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Data Modeling"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-07 06:04:16",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1103,
+    "menuName": "表单引擎",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 5,
+    "path": "system/fromModel/index",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "M",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "form",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Form Engine"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-07 06:05:32",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1104,
+    "menuName": "表单建模",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 1,
+    "path": "formBuild",
+    "component": "system/fromModel/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "system:fromModeling:index",
+    "icon": "druid",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Form Modeling"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-12 01:46:30",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1106,
+    "menuName": "表单列表",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 2,
+    "path": "dragform",
+    "component": "dragform/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "clipboard",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Form List"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-17 02:28:35",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1107,
+    "menuName": "表格列表",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 3,
+    "path": "tablelist",
+    "component": "dragform/tableList",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "education",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Table List"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-08-08 09:38:07",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1109,
+    "menuName": "字典管理",
+    "parentName": null,
+    "parentId": 1,
+    "orderNum": 6,
+    "path": "tenantDict",
+    "component": "system/tenant/dict/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:tenantDict:list",
+    "icon": "dict",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Dictionary Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-09-11 09:26:08",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1172,
+    "menuName": "表格编辑",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 1,
+    "path": "tableMange",
+    "component": "tableMange/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "bug",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Table Edit"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 2811,
+    "menuName": "流程设计",
+    "parentName": null,
+    "parentId": 1082,
+    "orderNum": 1,
+    "path": "process",
+    "component": "bpmprocess/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "job",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Workflow Design"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 3811,
+    "menuName": "联动表格",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 5,
+    "path": "relateTable",
+    "component": "relateTable/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-call-activity",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Linked Table"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 3806,
+    "menuName": "动态表格",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 6,
+    "path": "relateTableEdit",
+    "component": "relateTable/relateTableEdit",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Dynamic Table"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 3989,
+    "menuName": "操作按钮",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 1,
+    "path": "excuteBtnMange/index",
+    "component": "system/excuteBtnMange/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "button",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Action Button"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 5877,
+    "menuName": "表单组管理",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 7,
+    "path": "formGroupMange",
+    "component": "system/formGroupMange/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "build",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Form Group Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 4216,
+    "menuName": "生产管理",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 2,
+    "path": "processMange",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "M",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-end-event-error",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Production Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 6199,
+    "menuName": "待办审批",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 3,
+    "path": "OAMange",
+    "component": "bussiness/OAMange",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-end-event-link",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Pending Approval"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 4218,
+    "menuName": "生产任务",
+    "parentName": null,
+    "parentId": 4216,
+    "orderNum": 1,
+    "path": "asd",
+    "component": "bussiness/processMange",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-intermediate-event-throw-link",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Production Task"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 4219,
+    "menuName": "流程展示",
+    "parentName": null,
+    "parentId": 4216,
+    "orderNum": 2,
+    "path": "progressShow",
+    "component": "bussiness/progressShow",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-end-event-signal",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Workflow Display"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-08-08 09:38:07",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 5008,
+    "menuName": "工程部署",
+    "parentName": null,
+    "parentId": 9764,
+    "orderNum": 7,
+    "path": "engineering",
+    "component": "system/engineeringManage/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "system:user:engineering",
+    "icon": "download",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Project Deployment"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:28:04",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1092,
+    "menuName": "日志管理",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 6,
+    "path": "log",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "M",
+    "visible": "0",
+    "status": "0",
+    "perms": null,
+    "icon": "log",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Log Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:29:50",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1093,
+    "menuName": "操作日志",
+    "parentName": null,
+    "parentId": 1092,
+    "orderNum": 1,
+    "path": "operlog",
+    "component": "monitor/operlog/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:operlog:list",
+    "icon": "form",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Operation Log"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:32:45",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1095,
+    "menuName": "操作查询",
+    "parentName": null,
+    "parentId": 1093,
+    "orderNum": 1,
+    "path": "",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:operlog:query",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Operation Query"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:34:04",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1096,
+    "menuName": "操作删除",
+    "parentName": null,
+    "parentId": 1093,
+    "orderNum": 2,
+    "path": "",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:operlog:remove",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Operation Delete"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:34:27",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1097,
+    "menuName": "日志导出",
+    "parentName": null,
+    "parentId": 1093,
+    "orderNum": 3,
+    "path": "",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:operlog:export",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Log Export"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:31:06",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1094,
+    "menuName": "登录日志",
+    "parentName": null,
+    "parentId": 1092,
+    "orderNum": 2,
+    "path": "logininfor",
+    "component": "monitor/logininfor/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:logininfor:list",
+    "icon": "logininfor",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Login Log"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:34:57",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1098,
+    "menuName": "登录查询",
+    "parentName": null,
+    "parentId": 1094,
+    "orderNum": 1,
+    "path": "",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:logininfor:query",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Login Query"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:36:58",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1099,
+    "menuName": "登录删除",
+    "parentName": null,
+    "parentId": 1094,
+    "orderNum": 2,
+    "path": "",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:logininfor:remove",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Login Delete"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:37:21",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1100,
+    "menuName": "日志导出",
+    "parentName": null,
+    "parentId": 1094,
+    "orderNum": 3,
+    "path": "",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:logininfor:export",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Log Export"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-06 05:37:44",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 1101,
+    "menuName": "账户解锁",
+    "parentName": null,
+    "parentId": 1094,
+    "orderNum": 4,
+    "path": "",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "F",
+    "visible": "0",
+    "status": "0",
+    "perms": "monitor:logininfor:unlock",
+    "icon": "#",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Account Unlock"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-07 06:04:16",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 9574,
+    "menuName": "移动端引擎",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 6,
+    "path": "ydyq",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "M",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-call-activity",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Mobile Engine"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 11444,
+    "menuName": "导航条配置",
+    "parentName": null,
+    "parentId": 9574,
+    "orderNum": 1,
+    "path": "navigationBar",
+    "component": "formCreate/layout/home/navigationBar",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-intermediate-event-catch-cancel",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Navigation Bar Config"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 11443,
+    "menuName": "页面设计",
+    "parentName": null,
+    "parentId": 9574,
+    "orderNum": 1,
+    "path": "formCreate",
+    "component": "formCreate/layout/home/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-intermediate-event-catch-cancel",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Page Design"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-10-11 01:28:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 11444,
+    "menuName": "移动端建模页",
+    "parentName": null,
+    "parentId": 9574,
+    "orderNum": 1,
+    "path": "FormCreateMange",
+    "component": "formCreate/layout/home/formCreateMange",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "bpmn-icon-intermediate-event-catch-cancel",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Mobile Modeling Page"
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-07-07 06:04:16",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 9764,
+    "menuName": "后台管理",
+    "parentName": null,
+    "parentId": 0,
+    "orderNum": 8,
+    "path": "htgl",
+    "component": null,
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "M",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "monitor",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Backend Management"
+  },
+  {
+    "createBy": null,
+    "createTime": "2025-03-08 15:22:00",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 11441,
+    "menuName": "树形表格",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 5,
+    "path": "treeTable",
+    "component": "treeTable/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "form",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Tree Table"
+  },
+  {
+    "createBy": null,
+    "createTime": "2025-03-08 15:22:01",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 11442,
+    "menuName": "树形表格编辑",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 6,
+    "path": "treeTableMange",
+    "component": "treeTableMange/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "form",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null,
+    "menuNameEn": "Tree Table Edit"
+  }
+]

+ 1675 - 0
zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_old_2025_04_27.json

@@ -0,0 +1,1675 @@
+[
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1,
+        "menuName": "系统管理",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 1,
+        "path": "system",
+        "component": null,
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "M",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "system",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 9080,
+        "menuName": "租户信息",
+        "parentName": null,
+        "parentId": 9764,
+        "orderNum": 8,
+        "path": "tenant_info",
+        "component": "system/tenant/tenantIndex",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "logininfor",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 9080,
+        "menuName": "管道节点",
+        "parentName": null,
+        "parentId": 9764,
+        "orderNum": 8,
+        "path": "scriptManage",
+        "component": "bpmprocess/scriptManage",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "logininfor",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 100,
+        "menuName": "用户管理",
+        "parentName": null,
+        "parentId": 1,
+        "orderNum": 1,
+        "path": "user",
+        "component": "system/user/index",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:list",
+        "icon": "user",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 101,
+        "menuName": "角色管理",
+        "parentName": null,
+        "parentId": 1,
+        "orderNum": 2,
+        "path": "role",
+        "component": "system/role/index",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:role:list",
+        "icon": "peoples",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 102,
+        "menuName": "菜单管理",
+        "parentName": null,
+        "parentId": 1,
+        "orderNum": 3,
+        "path": "menu",
+        "component": "system/menu/index",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:menu:list",
+        "icon": "tree-table",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 103,
+        "menuName": "部门管理",
+        "parentName": null,
+        "parentId": 1,
+        "orderNum": 4,
+        "path": "dept",
+        "component": "system/dept/index",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:dept:list",
+        "icon": "tree",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 104,
+        "menuName": "岗位管理",
+        "parentName": null,
+        "parentId": 1,
+        "orderNum": 5,
+        "path": "post",
+        "component": "system/post/index",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:post:list",
+        "icon": "post",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1000,
+        "menuName": "用户查询",
+        "parentName": null,
+        "parentId": 100,
+        "orderNum": 1,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:query",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1001,
+        "menuName": "用户新增",
+        "parentName": null,
+        "parentId": 100,
+        "orderNum": 2,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:add",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1002,
+        "menuName": "用户修改",
+        "parentName": null,
+        "parentId": 100,
+        "orderNum": 3,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:edit",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1003,
+        "menuName": "用户删除",
+        "parentName": null,
+        "parentId": 100,
+        "orderNum": 4,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:remove",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1004,
+        "menuName": "用户导出",
+        "parentName": null,
+        "parentId": 100,
+        "orderNum": 5,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:export",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1005,
+        "menuName": "用户导入",
+        "parentName": null,
+        "parentId": 100,
+        "orderNum": 6,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:import",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1006,
+        "menuName": "重置密码",
+        "parentName": null,
+        "parentId": 100,
+        "orderNum": 7,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:resetPwd",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1007,
+        "menuName": "角色查询",
+        "parentName": null,
+        "parentId": 101,
+        "orderNum": 1,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:role:query",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1008,
+        "menuName": "角色新增",
+        "parentName": null,
+        "parentId": 101,
+        "orderNum": 2,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:role:add",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1009,
+        "menuName": "角色修改",
+        "parentName": null,
+        "parentId": 101,
+        "orderNum": 3,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:role:edit",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1010,
+        "menuName": "角色删除",
+        "parentName": null,
+        "parentId": 101,
+        "orderNum": 4,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:role:remove",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1011,
+        "menuName": "角色导出",
+        "parentName": null,
+        "parentId": 101,
+        "orderNum": 5,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:role:export",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1016,
+        "menuName": "部门查询",
+        "parentName": null,
+        "parentId": 103,
+        "orderNum": 1,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:dept:query",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1017,
+        "menuName": "部门新增",
+        "parentName": null,
+        "parentId": 103,
+        "orderNum": 2,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:dept:add",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1018,
+        "menuName": "部门修改",
+        "parentName": null,
+        "parentId": 103,
+        "orderNum": 3,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:dept:edit",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1019,
+        "menuName": "部门删除",
+        "parentName": null,
+        "parentId": 103,
+        "orderNum": 4,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:dept:remove",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1020,
+        "menuName": "岗位查询",
+        "parentName": null,
+        "parentId": 104,
+        "orderNum": 1,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:post:query",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1021,
+        "menuName": "岗位新增",
+        "parentName": null,
+        "parentId": 104,
+        "orderNum": 2,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:post:add",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1022,
+        "menuName": "岗位修改",
+        "parentName": null,
+        "parentId": 104,
+        "orderNum": 3,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:post:edit",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1023,
+        "menuName": "岗位删除",
+        "parentName": null,
+        "parentId": 104,
+        "orderNum": 4,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:post:remove",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-05-25 08:54:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1024,
+        "menuName": "岗位导出",
+        "parentName": null,
+        "parentId": 104,
+        "orderNum": 5,
+        "path": "",
+        "component": "",
+        "query": "",
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:post:export",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-06-16 06:31:40",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1073,
+        "menuName": "数据引擎",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 3,
+        "path": "data",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "M",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "drag",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-06-16 06:58:41",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1078,
+        "menuName": "数据表",
+        "parentName": null,
+        "parentId": 1073,
+        "orderNum": 1,
+        "path": "createTable",
+        "component": "tool/datasheet/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "1",
+        "status": "0",
+        "perms": "",
+        "icon": "documentation",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-06-19 05:39:54",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1082,
+        "menuName": "流程引擎",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 4,
+        "path": "processModeling",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "M",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "cascader",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-06-19 05:40:44",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1083,
+        "menuName": "流程建模",
+        "parentName": null,
+        "parentId": 1082,
+        "orderNum": 2,
+        "path": "bpmnPro",
+        "component": "system/bpmnPro/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "1",
+        "status": "0",
+        "perms": "",
+        "icon": "component",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-06-19 07:35:07",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1084,
+        "menuName": "数据建模",
+        "parentName": null,
+        "parentId": 1073,
+        "orderNum": 2,
+        "path": "datamodeling",
+        "component": "dataEngine/datamodeling/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "form",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-07 06:04:16",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1103,
+        "menuName": "表单引擎",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 5,
+        "path": "system/fromModel/index",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "M",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "form",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-07 06:05:32",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1104,
+        "menuName": "表单建模",
+        "parentName": null,
+        "parentId": 1103,
+        "orderNum": 1,
+        "path": "formBuild",
+        "component": "system/fromModel/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "1",
+        "status": "0",
+        "perms": "system:fromModeling:index",
+        "icon": "druid",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-12 01:46:30",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1106,
+        "menuName": "表单列表",
+        "parentName": null,
+        "parentId": 1103,
+        "orderNum": 2,
+        "path": "dragform",
+        "component": "dragform/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "clipboard",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-17 02:28:35",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1107,
+        "menuName": "表格列表",
+        "parentName": null,
+        "parentId": 1103,
+        "orderNum": 3,
+        "path": "tablelist",
+        "component": "dragform/tableList",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "education",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-08-08 09:38:07",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1109,
+        "menuName": "字典管理",
+        "parentName": null,
+        "parentId": 1,
+        "orderNum": 6,
+        "path": "tenantDict",
+        "component": "system/tenant/dict/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:tenantDict:list",
+        "icon": "dict",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-09-11 09:26:08",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1172,
+        "menuName": "表格编辑",
+        "parentName": null,
+        "parentId": 1103,
+        "orderNum": 1,
+        "path": "tableMange",
+        "component": "tableMange/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "1",
+        "status": "0",
+        "perms": "",
+        "icon": "bug",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 2811,
+        "menuName": "流程设计",
+        "parentName": null,
+        "parentId": 1082,
+        "orderNum": 1,
+        "path": "process",
+        "component": "bpmprocess/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "job",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 3811,
+        "menuName": "联动表格",
+        "parentName": null,
+        "parentId": 1103,
+        "orderNum": 5,
+        "path": "relateTable",
+        "component": "relateTable/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-call-activity",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 3806,
+        "menuName": "动态表格",
+        "parentName": null,
+        "parentId": 1103,
+        "orderNum": 6,
+        "path": "relateTableEdit",
+        "component": "relateTable/relateTableEdit",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "1",
+        "status": "0",
+        "perms": "",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 3989,
+        "menuName": "操作按钮",
+        "parentName": null,
+        "parentId": 1103,
+        "orderNum": 1,
+        "path": "excuteBtnMange/index",
+        "component": "system/excuteBtnMange/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "button",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 5877,
+        "menuName": "表单组管理",
+        "parentName": null,
+        "parentId": 1103,
+        "orderNum": 7,
+        "path": "formGroupMange",
+        "component": "system/formGroupMange/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "build",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 4216,
+        "menuName": "生产管理",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 2,
+        "path": "processMange",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "M",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-end-event-error",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 6199,
+        "menuName": "待办审批",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 3,
+        "path": "OAMange",
+        "component": "bussiness/OAMange",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-end-event-link",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 4218,
+        "menuName": "生产任务",
+        "parentName": null,
+        "parentId": 4216,
+        "orderNum": 1,
+        "path": "asd",
+        "component": "bussiness/processMange",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-intermediate-event-throw-link",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 4219,
+        "menuName": "流程展示",
+        "parentName": null,
+        "parentId": 4216,
+        "orderNum": 2,
+        "path": "progressShow",
+        "component": "bussiness/progressShow",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-end-event-signal",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-08-08 09:38:07",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 5008,
+        "menuName": "工程部署",
+        "parentName": null,
+        "parentId": 9764,
+        "orderNum": 7,
+        "path": "engineering",
+        "component": "system/engineeringManage/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "system:user:engineering",
+        "icon": "download",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:28:04",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1092,
+        "menuName": "日志管理",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 6,
+        "path": "log",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "M",
+        "visible": "0",
+        "status": "0",
+        "perms": null,
+        "icon": "log",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:29:50",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1093,
+        "menuName": "操作日志",
+        "parentName": null,
+        "parentId": 1092,
+        "orderNum": 1,
+        "path": "operlog",
+        "component": "monitor/operlog/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:operlog:list",
+        "icon": "form",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:32:45",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1095,
+        "menuName": "操作查询",
+        "parentName": null,
+        "parentId": 1093,
+        "orderNum": 1,
+        "path": "",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:operlog:query",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:34:04",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1096,
+        "menuName": "操作删除",
+        "parentName": null,
+        "parentId": 1093,
+        "orderNum": 2,
+        "path": "",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:operlog:remove",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:34:27",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1097,
+        "menuName": "日志导出",
+        "parentName": null,
+        "parentId": 1093,
+        "orderNum": 3,
+        "path": "",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:operlog:export",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:31:06",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1094,
+        "menuName": "登录日志",
+        "parentName": null,
+        "parentId": 1092,
+        "orderNum": 2,
+        "path": "logininfor",
+        "component": "monitor/logininfor/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:logininfor:list",
+        "icon": "logininfor",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:34:57",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1098,
+        "menuName": "登录查询",
+        "parentName": null,
+        "parentId": 1094,
+        "orderNum": 1,
+        "path": "",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:logininfor:query",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:36:58",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1099,
+        "menuName": "登录删除",
+        "parentName": null,
+        "parentId": 1094,
+        "orderNum": 2,
+        "path": "",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:logininfor:remove",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:37:21",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1100,
+        "menuName": "日志导出",
+        "parentName": null,
+        "parentId": 1094,
+        "orderNum": 3,
+        "path": "",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:logininfor:export",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-06 05:37:44",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 1101,
+        "menuName": "账户解锁",
+        "parentName": null,
+        "parentId": 1094,
+        "orderNum": 4,
+        "path": "",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "F",
+        "visible": "0",
+        "status": "0",
+        "perms": "monitor:logininfor:unlock",
+        "icon": "#",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-07 06:04:16",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 9574,
+        "menuName": "移动端引擎",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 6,
+        "path": "ydyq",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "M",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-call-activity",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 11444,
+        "menuName": "导航条配置",
+        "parentName": null,
+        "parentId": 9574,
+        "orderNum": 1,
+        "path": "navigationBar",
+        "component": "formCreate/layout/home/navigationBar",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-intermediate-event-catch-cancel",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 11443,
+        "menuName": "页面设计",
+        "parentName": null,
+        "parentId": 9574,
+        "orderNum": 1,
+        "path": "formCreate",
+        "component": "formCreate/layout/home/index",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-intermediate-event-catch-cancel",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-10-11 01:28:10",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 11444,
+        "menuName": "移动端建模页",
+        "parentName": null,
+        "parentId": 9574,
+        "orderNum": 1,
+        "path": "FormCreateMange",
+        "component": "formCreate/layout/home/formCreateMange",
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "C",
+        "visible": "1",
+        "status": "0",
+        "perms": "",
+        "icon": "bpmn-icon-intermediate-event-catch-cancel",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },
+    {
+        "createBy": null,
+        "createTime": "2023-07-07 06:04:16",
+        "updateBy": null,
+        "updateTime": null,
+        "remark": null,
+        "menuId": 9764,
+        "menuName": "后台管理",
+        "parentName": null,
+        "parentId": 0,
+        "orderNum": 8,
+        "path": "htgl",
+        "component": null,
+        "query": null,
+        "isFrame": "1",
+        "isCache": "0",
+        "menuType": "M",
+        "visible": "0",
+        "status": "0",
+        "perms": "",
+        "icon": "monitor",
+        "children": [],
+        "tenantName": null,
+        "tenantId": null
+    },{
+    "createBy": null,
+    "createTime": "2025-03-08 15:22:00",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 11441,
+    "menuName": "树形表格",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 5,
+    "path": "treeTable",
+    "component": "treeTable/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "form",
+    "children": [],
+    "tenantName": null,
+    "tenantId": null
+},{
+    "createBy": null,
+    "createTime": "2025-03-08 15:22:01",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 11442,
+    "menuName": "树形表格编辑",
+    "parentName": null,
+    "parentId": 1103,
+    "orderNum": 6,
+    "path": "treeTableMange",
+    "component": "treeTableMange/index",
+    "query": null,
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "form",
+    "children": [],
+    "tenantName": null,
+    "tenantId": null
+}
+]

+ 419 - 0
zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_translate_map_all.json

@@ -0,0 +1,419 @@
+{
+  "系统管理": "System Management",
+  "系统监控": "System Monitoring",
+  "系统工具": "System Tools",
+  "若依官网": "RuoYi Official Website",
+  "用户管理": "User Management",
+  "角色管理": "Role Management",
+  "菜单管理": "Menu Management",
+  "部门管理": "Department Management",
+  "岗位管理": "Position Management",
+  "字典管理": "Dictionary Management",
+  "参数设置": "Parameter Settings",
+  "通知公告": "Notification",
+  "日志管理": "Log Management",
+  "在线用户": "Online Users",
+  "定时任务": "Scheduled Tasks",
+  "数据监控": "Data Monitoring",
+  "服务监控": "Service Monitoring",
+  "缓存监控": "Cache Monitoring",
+  "缓存列表": "Cache List",
+  "表单构建": "Form Builder",
+  "代码生成": "Code Generation",
+  "系统接口": "System API",
+  "操作日志": "Operation Log",
+  "登录日志": "Login Log",
+  "用户查询": "User Query",
+  "用户新增": "User Add",
+  "用户修改": "User Edit",
+  "用户删除": "User Delete",
+  "用户导出": "User Export",
+  "用户导入": "User Import",
+  "重置密码": "Reset Password",
+  "角色查询": "Role Query",
+  "角色新增": "Role Add",
+  "角色修改": "Role Edit",
+  "角色删除": "Role Delete",
+  "角色导出": "Role Export",
+  "菜单查询": "Menu Query",
+  "菜单新增": "Menu Add",
+  "菜单修改": "Menu Edit",
+  "菜单删除": "Menu Delete",
+  "部门查询": "Department Query",
+  "部门新增": "Department Add",
+  "部门修改": "Department Edit",
+  "部门删除": "Department Delete",
+  "岗位查询": "Position Query",
+  "岗位新增": "Position Add",
+  "岗位修改": "Position Edit",
+  "岗位删除": "Position Delete",
+  "岗位导出": "Position Export",
+  "字典查询": "Dictionary Query",
+  "字典新增": "Dictionary Add",
+  "字典修改": "Dictionary Edit",
+  "字典删除": "Dictionary Delete",
+  "字典导出": "Dictionary Export",
+  "参数查询": "Parameter Query",
+  "参数新增": "Parameter Add",
+  "参数修改": "Parameter Edit",
+  "参数删除": "Parameter Delete",
+  "参数导出": "Parameter Export",
+  "公告查询": "Notice Query",
+  "公告新增": "Notice Add",
+  "公告修改": "Notice Edit",
+  "公告删除": "Notice Delete",
+  "操作查询": "Operation Query",
+  "操作删除": "Operation Delete",
+  "日志导出": "Log Export",
+  "登录查询": "Login Query",
+  "登录删除": "Login Delete",
+  "账户解锁": "Account Unlock",
+  "在线查询": "Online Query",
+  "批量强退": "Batch Force Logout",
+  "单条强退": "Single Force Logout",
+  "任务查询": "Task Query",
+  "任务新增": "Task Add",
+  "任务修改": "Task Edit",
+  "任务删除": "Task Delete",
+  "状态修改": "Status Edit",
+  "任务导出": "Task Export",
+  "生成查询": "Generate Query",
+  "生成修改": "Generate Edit",
+  "生成删除": "Generate Delete",
+  "导入代码": "Import Code",
+  "预览代码": "Preview Code",
+  "生成代码": "Generate Code",
+  "租户信息": "Tenant Info",
+  "租户信息查询": "Tenant Info Query",
+  "租户信息新增": "Tenant Info Add",
+  "租户信息修改": "Tenant Info Edit",
+  "租户信息删除": "Tenant Info Delete",
+  "租户信息导出": "Tenant Info Export",
+  "数据引擎": "Data Engine",
+  "数据源配置": "DataSource Config",
+  "门户引擎": "Portal Engine",
+  "租户管理": "Tenant Management",
+  "创建数据表": "Create Table",
+  "数据表": "Data Table",
+  "sqlserver数据表": "SQLServer Table",
+  "达梦数据表": "DM Table",
+  "流程引擎": "Workflow Engine",
+  "流程建模": "Workflow Modeling",
+  "数据建模": "Data Modeling",
+  "修改数据表": "Edit Table",
+  "表单引擎": "Form Engine",
+  "表单建模": "Form Modeling",
+  "表单列表": "Form List",
+  "表格列表": "Table List",
+  "共通table列表": "Common Table List",
+  "租户字典管理": "Tenant Dictionary Management",
+  "华为": "Huawei",
+  "苹果": "Apple",
+  "表格编辑": "Table Edit",
+  "MenuId测试": "MenuId Test",
+  "班级表": "Class Table",
+  "学生管理": "Student Management",
+  "流程节点": "Workflow Node",
+  "激活码管理": "Activation Code Management",
+  "关联表格": "Related Table",
+  "样式管理": "Style Management",
+  "管道节点管理": "Pipeline Node Management",
+  "工程部署": "Project Deployment",
+  "流程设计": "Workflow Design",
+  "联动表格": "Linked Table",
+  "动态表格": "Dynamic Table",
+  "操作按钮": "Action Button",
+  "管道管理": "Pipeline Management",
+  "管道流程": "Pipeline Workflow",
+  "管道展示": "Pipeline Display",
+  "任务管理": "Task Management",
+  "主制任务": "Main Task",
+  "待办任务": "Pending Task",
+  "OA详情": "OA Details",
+  "联动菜单": "Linked Menu",
+  "生产管理": "Production Management",
+  "生产任务": "Production Task",
+  "流程展示": "Workflow Display",
+  "销售管理": "Sales Management",
+  "客户管理": "Customer Management",
+  "订单管理": "Order Management",
+  "采购管理": "Procurement Management",
+  "供应商管理": "Supplier Management",
+  "产品管理": "Product Management",
+  "产品种类管理": "Product Category Management",
+  "仓库管理": "Warehouse Management",
+  "物料管理": "Material Management",
+  "原材料管理": "Raw Material Management",
+  "班组管理": "Team Management",
+  "主制班组": "Main Team",
+  "采购单管理": "Purchase Order Management",
+  "表单组管理": "Form Group Management",
+  "人员管理": "Personnel Management",
+  "班组人员管理": "Team Personnel Management",
+  "综合设备管理": "Integrated Equipment Management",
+  "设备管理": "Equipment Management",
+  "设备维修情况管理": "Equipment Maintenance Management",
+  "设备运行情况管理": "Equipment Operation Management",
+  "库房管理": "Storage Management",
+  "物料入库日志": "Material Inbound Log",
+  "物料出库日志": "Material Outbound Log",
+  "原料库存管理": "Raw Material Inventory Management",
+  "物料流转-旧": "Material Flow (Old)",
+  "订单一级审核": "Order First-Level Approval",
+  "物料流转审批": "Material Flow Approval",
+  "物料流转记录": "Material Flow Record",
+  "无用待办生产任务2": "Unused Pending Production Task 2",
+  "交接单日志": "Handover Log",
+  "采购单审批": "Purchase Order Approval",
+  "请假管理": "Leave Management",
+  "质量检验管理": "Quality Inspection Management",
+  "质量检验日志": "Quality Inspection Log",
+  "我的申请": "My Applications",
+  "产线管理": "Production Line Management",
+  "投产管理": "Production Management",
+  "请假-表单组": "Leave - Form Group",
+  "待办审批": "Pending Approval",
+  "计划管理": "Plan Management",
+  "计划信息": "Plan Info",
+  "产品信息": "Product Info",
+  "上料日志": "Feeding Log",
+  "加工日志": "Processing Log",
+  "组装日志": "Assembly Log",
+  "质量检测日志": "Quality Test Log",
+  "数据展示菜单": "Data Display Menu",
+  "订单财务审核": "Order Financial Review",
+  "综合管理": "Integrated Management",
+  "动态表格-请假表": "Dynamic Table - Leave Form",
+  "测试菜单": "Test Menu",
+  "订单": "Order",
+  "产品": "Product",
+  "订单-产品": "Order-Product",
+  "数据采集信息": "Data Collection Info",
+  "区域管理": "Area Management",
+  "无用库房区域管理": "Unused Storage Area Management",
+  "AA": "AA",
+  "AA111": "AA111",
+  "11": "11",
+  "产品设置": "Product Settings",
+  "类型编码": "Type Code",
+  "品名编码": "Product Name Code",
+  "分特数编码": "Decitex Code",
+  "F数编码": "F Number Code",
+  "捻向编码": "Twist Direction Code",
+  "等级编码": "Grade Code",
+  "色泽编码": "Color Code",
+  "管色编码": "Tube Color Code",
+  "筒重编码": "Bobbin Weight Code",
+  "箱重编码": "Box Weight Code",
+  "机台编码": "Machine Code",
+  "包装班次编码": "Packaging Shift Code",
+  "无用成品库存": "Unused Finished Goods Inventory",
+  "排产管理": "Scheduling Management",
+  "加弹排产计划": "Texturing Schedule Plan",
+  "规格编码": "Specification Code",
+  "包装管理": "Packaging Management",
+  "按钮测试16": "Button Test 16",
+  "按钮测试1": "Button Test 1",
+  "按钮测试2": "Button Test 2",
+  "订单查询": "Order Query",
+  "权限1": "Permission 1",
+  "权限2": "Permission 2",
+  "权限3": "Permission 3",
+  "权限4": "Permission 4",
+  "权限6": "Permission 6",
+  "权限7": "Permission 7",
+  "新增": "Add",
+  "修改": "Edit",
+  "删除": "Delete",
+  "导入": "Import",
+  "导出": "Export",
+  "权限8": "Permission 8",
+  "测试按钮样式": "Test Button Style",
+  "测试按钮样式11": "Test Button Style 11",
+  "打印日志": "Print Log",
+  "纺丝排产计划": "Spinning Schedule Plan",
+  "成品入库日志": "Finished Goods Inbound Log",
+  "翻框排产计划": "Frame Turning Schedule Plan",
+  "络筒排产计划": "Winding Schedule Plan",
+  "成品出库日志": "Finished Goods Outbound Log",
+  "原材料采购": "Raw Material Procurement",
+  "拖拽修改": "Drag Edit",
+  "cp": "CP",
+  "aa": "AA",
+  "cc": "CC",
+  "产品销售单": "Product Sales Order",
+  "ceshi": "Test",
+  "财务对账单": "Financial Statement",
+  "销售出库": "Sales Outbound",
+  "移动端引擎": "Mobile Engine",
+  "页面设计": "Page Design",
+  "排产计划展示": "Schedule Plan Display",
+  "加弹南计划展示": "Texturing South Plan Display",
+  "翻框计划展示": "Frame Turning Plan Display",
+  "纺丝计划展示": "Spinning Plan Display",
+  "络筒计划展示": "Winding Plan Display",
+  "加弹北计划展示": "Texturing North Plan Display",
+  "后台管理": "Backend Management",
+  "系统字典": "System Dictionary",
+  "外协管理": "Outsourcing Management",
+  "外协商管理": "Outsourcing Vendor Management",
+  "设备台账管理": "Equipment Ledger Management",
+  "人员工作任务管理": "Personnel Task Management",
+  "中间物料流转": "Intermediate Material Flow",
+  "称重打印": "Weighing Print",
+  "加弹排产日志": "Texturing Schedule Log",
+  "零售订单": "Retail Order",
+  "纺丝排产日志": "Spinning Schedule Log",
+  "翻框排产日志": "Frame Turning Schedule Log",
+  "络筒排产日志": "Winding Schedule Log",
+  "成品库存管理": "Finished Goods Inventory Management",
+  "提交": "Submit",
+  "撤销": "Revoke",
+  "详情": "Details",
+  "班级管理": "Class Management",
+  "物料列表": "Material List",
+  "物料信息": "Material Info",
+  "样品检测": "Sample Testing",
+  "检测列表": "Test List",
+  "委托信息": "Commission Info",
+  "委托单信息": "Commission Order Info",
+  "样品接收": "Sample Receiving",
+  "实验室收样": "Lab Sample Receiving",
+  "拉伸性能检测过程": "Tensile Performance Test Process",
+  "拉伸性能检测结果": "Tensile Performance Test Result",
+  "报告管理": "Report Management",
+  "样品标签": "Sample Label",
+  "样品打印日志": "Sample Print Log",
+  "打样单管理": "Sample Order Management",
+  "母粒管理": "Masterbatch Management",
+  "列表": "List",
+  "统计分析": "Statistical Analysis",
+  "年级": "Grade",
+  "发货管理": "Shipping Management",
+  "周期计划管理": "Cycle Plan Management",
+  "生产产品统计": "Production Product Statistics",
+  "生产计划管理": "Production Plan Management",
+  "产品库管理": "Product Library Management",
+  "产品记录": "Product Record",
+  "盘点管理": "Inventory Management",
+  "恒泰": "Hengtai",
+  "销售统计": "Sales Statistics",
+  "内嵌恒泰": "Embedded Hengtai",
+  "宁波旭链": "Ningbo Xulian",
+  "学生表": "Student Table",
+  "委托单审核": "Commission Order Review",
+  "审批表单组布局测试": "Approval Form Group Layout Test",
+  "外协订单": "Outsourcing Order",
+  "联合查询": "Joint Query",
+  "审批详情": "Approval Details",
+  "加工订单": "Processing Order",
+  "老库存订单": "Old Inventory Order",
+  "生产任务单": "Production Task Order",
+  "财务管理": "Financial Management",
+  "收款登记": "Payment Registration",
+  "基础物料清单": "Basic Material List",
+  "应收明细": "Receivable Details",
+  "采购订单": "Purchase Order",
+  "应收明细审核": "Receivable Details Review",
+  "采购审批": "Purchase Approval",
+  "收款登记审核": "Payment Registration Review",
+  "库房管理联动": "Storage Management Linkage",
+  "生产任务单管理": "Production Task Order Management",
+  "工艺管理": "Process Management",
+  "作业指导书管理": "Work Instruction Management",
+  "发票登记": "Invoice Registration",
+  "其它应收": "Other Receivables",
+  "入库单管理": "Inbound Order Management",
+  "入库单信息": "Inbound Order Info",
+  "其它应收审核": "Other Receivables Review",
+  "质检管理": "Quality Inspection Management",
+  "发票结算明细": "Invoice Settlement Details",
+  "温升剩磁": "Temperature Rise Residual Magnetism",
+  "入库单审批": "Inbound Order Approval",
+  "温升空载": "Temperature Rise No-Load",
+  "温升短路": "Temperature Rise Short Circuit",
+  "直流电阻": "DC Resistance",
+  "成品库存": "Finished Goods Inventory",
+  "产品入库日志": "Product Inbound Log",
+  "产品出库日志": "Product Outbound Log",
+  "工艺文件管理": "Process File Management",
+  "温升热态电阻": "Temperature Rise Thermal Resistance",
+  "振动超速噪声": "Vibration Overspeed Noise",
+  "出库单管理": "Outbound Order Management",
+  "出库单信息": "Outbound Order Info",
+  "客户信息": "Customer Info",
+  "设备运行管理": "Equipment Operation Management",
+  "成本管理": "Cost Management",
+  "成本信息管理": "Cost Info Management",
+  "出库单审核": "Outbound Order Review",
+  "生产任务单审批": "Production Task Order Approval",
+  "销售计划任务": "Sales Plan Task",
+  "外销排产": "Export Scheduling",
+  "老库存出库": "Old Inventory Outbound",
+  "内销排产": "Domestic Sales Scheduling",
+  "高压机排产": "High-Pressure Machine Scheduling",
+  "成品颜色管理": "Finished Goods Color Management",
+  "订单退库": "Order Return",
+  "作业指导书展示": "Work Instruction Display",
+  "工位管理": "Workstation Management",
+  "基础数据": "Basic Data",
+  "工时管理": "Working Hour Management",
+  "生产物料清单": "Production Material List",
+  "化学元素检测结果": "Chemical Element Test Result",
+  "化学元素检测过程": "Chemical Element Test Process",
+  "报告页面": "Report Page",
+  "厂内计划任务": "In-House Plan Task",
+  "大屏展示": "Large Screen Display",
+  "综合监控": "Integrated Monitoring",
+  "设备监控": "Equipment Monitoring",
+  "物料清单列表": "Material List",
+  "数据驾仓": "Data Cockpit",
+  "数据源": "Data Source",
+  "数据集": "Dataset",
+  "大屏报表": "Large Screen Report",
+  "表格报表": "Table Report",
+  "大屏设计": "Large Screen Design",
+  "报表设计": "Report Design",
+  "报表预览": "Report Preview",
+  "标签打印": "Label Printing",
+  "退回详情": "Return Details",
+  "委托单详情": "Commission Order Details",
+  "检测信息新增": "Test Info Add",
+  "委托单接收审": "Commission Order Receipt Review",
+  "查看样品详情": "View Sample Details",
+  "测试完成": "Test Completed",
+  "开始测试": "Start Test",
+  "上传附件": "Upload Attachment",
+  "查看附件": "View Attachment",
+  "场内计划排产": "In-House Plan Scheduling",
+  "节点执行记录": "Node Execution Record",
+  "车间领用": "Workshop Collection",
+  "领料管理": "Material Collection Management",
+  "排产工序工时信息": "Scheduling Process Hour Info",
+  "领退料审核": "Material Collection/Return Review",
+  "生产订单列表": "Production Order List",
+  "拉伸性能报告发布": "Tensile Performance Report Release",
+  "化学元素报告发布": "Chemical Element Report Release",
+  "终端管理": "Terminal Management",
+  "审批管理": "Approval Management",
+  "领料": "Material Collection",
+  "添加": "Add",
+  "审核": "Review",
+  "修改补码": "Edit Supplement Code",
+  "撤销登账": "Revoke Registration",
+  "通过": "Approve",
+  "审批": "Approval",
+  "处理": "Process",
+  "打印/详情": "Print/Details",
+  "回单": "Receipt",
+  "新增结算单位": "Add Settlement Unit",
+  "查看": "View",
+  "码单修改": "Code Edit",
+  "查询": "Query",
+  "修改日志": "Edit Log",
+  "树形表格": "Tree Table",
+  "树形表格编辑": "Tree Table Edit",
+  "导航条配置": "Navigation Bar Config",
+  "移动端建模页": "Mobile Modeling Page",
+  "管道节点": "Pipeline Node"
+}

+ 62 - 2
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysMenu.java

@@ -5,6 +5,10 @@ import java.util.List;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
+
+import com.zkqy.common.enums.LocaleEnum;
+import com.zkqy.common.utils.MessageUtils;
+import com.zkqy.common.utils.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.zkqy.common.core.domain.BaseEntity;
@@ -24,6 +28,11 @@ public class SysMenu extends BaseEntity
     /** 菜单名称 */
     private String menuName;
 
+    // 菜单英文名
+    private String menuNameEn;
+
+    private String menuNameLocale;
+
     /** 父菜单名称 */
     private String parentName;
 
@@ -90,8 +99,8 @@ public class SysMenu extends BaseEntity
         this.menuId = menuId;
     }
 
-    @NotBlank(message = "菜单名称不能为空")
-    @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符")
+//    @NotBlank(message = "菜单名称不能为空")
+//    @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符")
     public String getMenuName()
     {
         return menuName;
@@ -280,4 +289,55 @@ public class SysMenu extends BaseEntity
             .append("tenantId",getTenantId())
             .toString();
     }
+
+    public String getMenuNameEn() {
+        return menuNameEn;
+    }
+
+    public void setMenuNameEn(String menuNameEn) {
+        this.menuNameEn = menuNameEn;
+    }
+
+    public String getMenuNameLocale() {
+        return menuNameLocale;
+    }
+
+    public void setMenuNameLocale(String menuNameLocale) {
+        this.menuNameLocale = menuNameLocale;
+    }
+
+    public String getMenuNameLocaleByMenuName() {
+        String menuLocaleName = null;
+        if (MessageUtils.getUserLocale().equals(LocaleEnum.Chinese.getLocaleCode())){
+            menuLocaleName = menuName;
+        }else if (MessageUtils.getUserLocale().equals(LocaleEnum.English.getLocaleCode())){
+            menuLocaleName = menuNameEn;
+        }
+        return menuLocaleName;
+    }
+
+    // 无参从已有的选择一个
+    public void setMenuNameLocaleByManuName() {
+        String menuNameLocale = null;
+        if (MessageUtils.getUserLocale().equals(LocaleEnum.Chinese.getLocaleCode())){
+            menuNameLocale = menuName;
+        }else if (MessageUtils.getUserLocale().equals(LocaleEnum.English.getLocaleCode())){
+            menuNameLocale = menuNameEn;
+        }
+        this.menuNameLocale = menuNameLocale;
+    }
+    //根据前端的菜单传值 + 本地环境的判断,填充menuName 或者 menuNameEn的值
+    public void setMenuNameByMenuNameLocale(){
+        if (StringUtils.isBlank(menuNameLocale)){
+            return;
+        }
+        if (MessageUtils.getUserLocale().equals(LocaleEnum.Chinese.getLocaleCode())){
+            menuName = menuNameLocale;
+        }else if (MessageUtils.getUserLocale().equals(LocaleEnum.English.getLocaleCode())){
+            menuNameEn = menuNameLocale;
+        }
+
+    }
+
+
 }

+ 9 - 8
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysTenant.java

@@ -70,7 +70,7 @@ public class SysTenant extends BaseEntity {
     /**
      * 租户父级id
      */
-    private String tenantParentId;
+    private Long tenantParentId;
     /**
      * 租户客户端访问地址
      */
@@ -100,13 +100,6 @@ public class SysTenant extends BaseEntity {
         this.tenantProfession = tenantProfession;
     }
 
-    public String getTenantParentId() {
-        return tenantParentId;
-    }
-
-    public void setTenantParentId(String tenantParentId) {
-        this.tenantParentId = tenantParentId;
-    }
 
     public String getTenantClientLoginUrl() {
         return tenantClientLoginUrl;
@@ -223,4 +216,12 @@ public class SysTenant extends BaseEntity {
     public void setLoginPageConfiguration(Object loginPageConfiguration) {
         this.loginPageConfiguration = loginPageConfiguration;
     }
+
+    public Long getTenantParentId() {
+        return tenantParentId;
+    }
+
+    public void setTenantParentId(Long tenantParentId) {
+        this.tenantParentId = tenantParentId;
+    }
 }

+ 54 - 0
zkqy-common/src/main/java/com/zkqy/common/enums/LocaleEnum.java

@@ -0,0 +1,54 @@
+package com.zkqy.common.enums;
+
+public enum LocaleEnum {
+
+    Chinese("中国", "zh_CN"),
+    English("美国", "en_US");
+
+    private final String chineseName;
+    private final String localeCode;
+
+    LocaleEnum(String chineseName, String localeCode) {
+        this.chineseName = chineseName;
+        this.localeCode = localeCode;
+    }
+
+    /**
+     * 获取中文名称
+     */
+    public String getChineseName() {
+        return chineseName;
+    }
+
+    /**
+     * 获取地区代码
+     */
+    public String getLocaleCode() {
+        return localeCode;
+    }
+
+
+    /**
+     * 通过地区代码查找枚举
+     */
+    public static LocaleEnum fromLocaleCode(String localeCode) {
+        for (LocaleEnum locale : values()) {
+            if (locale.localeCode.equalsIgnoreCase(localeCode)) {
+                return locale;
+            }
+        }
+        throw new IllegalArgumentException("Unknown locale code: " + localeCode);
+    }
+
+    /**
+     * 通过中文名称查找枚举
+     */
+    public static LocaleEnum fromChineseName(String chineseName) {
+        for (LocaleEnum locale : values()) {
+            if (locale.chineseName.equals(chineseName)) {
+                return locale;
+            }
+        }
+        throw new IllegalArgumentException("Unknown Chinese name: " + chineseName);
+    }
+}

+ 8 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/MessageUtils.java

@@ -11,6 +11,7 @@ import com.zkqy.common.utils.spring.SpringUtils;
  */
 public class MessageUtils
 {
+    // 对应地区枚举类   LocaleEnum
     /**
      * 根据消息键和参数 获取消息 委托给spring messageSource
      *
@@ -23,4 +24,11 @@ public class MessageUtils
         MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
         return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
     }
+
+    // 获取当前用的locale
+    public static String getUserLocale(){
+        String acceptLanguage = LocaleContextHolder.getLocale().toString();
+        String primaryLocale = acceptLanguage.split(",")[0];
+        return primaryLocale;
+    }
 }

+ 78 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/i18n/I18nUtils.java

@@ -0,0 +1,78 @@
+package com.zkqy.common.utils.i18n;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.*;
+
+public class I18nUtils {
+    public HashMap<String,String> dict = new HashMap<>();
+
+    // 菜单名字的集合,初次遍历集合时会用
+//    public static List<String> menuNameList = new ArrayList<>();
+
+    public static void main(String[] args) {
+        String inputPath = "zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu.json";
+        String outputPath = "zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_en.json";
+
+        try {
+            processJsonFile(inputPath, outputPath);
+        } catch (IOException e) {
+            System.err.println("处理JSON文件时出错: " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+    public static void processJsonFile(String inputPath, String outputPath) throws IOException {
+        // 1. 读取JSON文件内容
+        Path path = Paths.get(inputPath);
+        byte[] bytes = Files.readAllBytes(path); // 读取字节流
+        String jsonContent = new String(bytes, "UTF-8"); // 转为字符串
+
+        // 2. 解析为JSONArray
+        JSONArray jsonArray = JSON.parseArray(jsonContent);
+
+        // 3. 遍历每个JSONObject
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject menuItem = jsonArray.getJSONObject(i);
+
+            // 4. 获取menuName并模拟翻译
+            String menuName = menuItem.getString("menuName");
+            String menuNameEn = translateToEnglish(menuName);
+
+            // 5. 添加menuNameEn字段
+            menuItem.put("menuNameEn", menuNameEn);
+        }
+
+        // 6. 将处理后的JSONArray写入新文件(格式化输出)
+        String formattedJson = JSON.toJSONString(jsonArray, JSONWriter.Feature.WriteNulls);
+        Files.write(Paths.get(outputPath), formattedJson.getBytes());
+
+        // 测试输出所有的菜单名字
+//        String jsonString = JSON.toJSONString(menuNameList);
+//        System.out.println(jsonString);
+    }
+
+    // 模拟翻译方法(实际可替换为真正的翻译逻辑)
+    private static String translateToEnglish(String menuName) throws IOException {
+        Map<String, String> map = getMap();
+        String menuNameEn = map.get(menuName);
+        // 这里只是模拟,实际可以调用翻译API或使用映射表
+        return menuNameEn;
+    }
+    public static Map<String,String> getMap() throws IOException {
+        Path path = Paths.get("zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_translate_map.json");
+        byte[] bytes = Files.readAllBytes(path); // 读取字节流
+        String jsonContent = new String(bytes, "UTF-8"); // 转为字符串
+        Map<String, String> translationMap = JSON.parseObject(jsonContent, HashMap.class);
+
+        return translationMap;
+    }
+
+
+}

+ 15 - 0
zkqy-framework/src/main/java/com/zkqy/framework/config/LocaleConfig.java

@@ -0,0 +1,15 @@
+package com.zkqy.framework.config;
+
+import com.zkqy.framework.interceptor.LocaleInterceptor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class LocaleConfig implements WebMvcConfigurer {
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(new LocaleInterceptor()).addPathPatterns("/**");
+    }
+}

+ 55 - 0
zkqy-framework/src/main/java/com/zkqy/framework/interceptor/LocaleInterceptor.java

@@ -0,0 +1,55 @@
+package com.zkqy.framework.interceptor;
+
+import org.springframework.context.i18n.LocaleContextHolder;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.LocaleResolver;
+import org.springframework.web.servlet.support.RequestContextUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Locale;
+
+public class LocaleInterceptor implements HandlerInterceptor {
+
+    private static final String DEFAULT_LANGUAGE = "zh_CN";
+    private static final String LANGUAGE_COOKIE_NAME = "language";
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        // 1. 优先从Header中获取language
+        String language = getLanguageFromHeader(request);
+
+        // 2. 如果没有,使用默认值
+        if (language == null || language.isEmpty()) {
+            language = DEFAULT_LANGUAGE;
+        }
+
+        // 4. 解析语言和国家代码
+        Locale locale = parseLocale(language);
+
+        // 5. 设置到LocaleContextHolder
+        LocaleContextHolder.setLocale(locale);
+
+        return true;
+    }
+
+    private String getLanguageFromHeader(HttpServletRequest request) {
+        return request.getHeader("language"); // 直接从Header获取language字段
+    }
+
+    private Locale parseLocale(String language) {
+        if (language == null || language.isEmpty()) {
+            return Locale.SIMPLIFIED_CHINESE; // 默认简体中文
+        }
+
+        // 示例:解析 "en_US" 或 "zh_CN"
+        String[] parts = language.replace("-", "_").split("_");
+        if (parts.length == 1) {
+            return new Locale(parts[0]); // 只有语言代码(如 "en")
+        } else if (parts.length == 2) {
+            return new Locale(parts[0], parts[1]); // 语言 + 国家(如 "en_US")
+        } else {
+            return Locale.SIMPLIFIED_CHINESE; // 默认
+        }
+    }
+}

+ 4 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/SysMenuMapper.java

@@ -181,4 +181,8 @@ public interface SysMenuMapper {
      */
     public int insertMenuBatch(List<SysMenu> menus);
 
+
+    List<SysMenu> selectMenuListAll();
+
+    SysMenu checkMenuNameUniqueMuti(@Param("menuId") Long menuId, @Param("menuName") String menuName, @Param("menuNameEn") String menuNameEn, @Param("parentId") Long parentId, @Param("tenantId") Long tenantId);
 }

+ 6 - 0
zkqy-system/src/main/java/com/zkqy/system/service/ISysMenuService.java

@@ -167,6 +167,8 @@ public interface ISysMenuService {
      */
     public boolean checkMenuNameUnique(SysMenu menu);
 
+    public boolean checkMenuNameUniqueMuti(SysMenu menu);
+
     /**
      * 动态表格菜单列表
      */
@@ -197,4 +199,8 @@ public interface ISysMenuService {
     Long insertMenusByList(List<SysMenu> sysMenuList);
 
 
+    List<SysMenu> selectMenuList();
+
+
+    List<SysMenu> setMenuNameLocaleList(List<SysMenu> menus);
 }

+ 41 - 14
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysMenuServiceImpl.java

@@ -1,12 +1,6 @@
 package com.zkqy.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import com.zkqy.system.domain.SysTenantMenu;
@@ -53,6 +47,8 @@ public class SysMenuServiceImpl implements ISysMenuService {
 
     @Autowired
     private SysTenantMenuMapper tenantMenuMapper;
+    @Autowired
+    private SysMenuMapper sysMenuMapper;
 
     /**
      * 根据用户查询系统菜单列表
@@ -84,7 +80,8 @@ public class SysMenuServiceImpl implements ISysMenuService {
             menu.getParams().put("userId", userId);
             menuList = menuMapper.selectMenuListByUserId(menu);
         }
-        return menuList;
+        List<SysMenu> menusWithMenu  = setMenuNameLocaleList(menuList);
+        return menusWithMenu;
     }
 
     /**
@@ -177,7 +174,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
             router.setPath(getRouterPath(menu));
             router.setComponent(getComponent(menu));
             router.setQuery(menu.getQuery());
-            router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
+            router.setMeta(new MetaVo(menu.getMenuNameLocaleByMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
             List<SysMenu> cMenus = menu.getChildren();
             if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) {
                 router.setAlwaysShow(true);
@@ -190,12 +187,12 @@ public class SysMenuServiceImpl implements ISysMenuService {
                 children.setPath(menu.getPath());
                 children.setComponent(menu.getComponent());
                 children.setName(StringUtils.capitalize(menu.getPath()));
-                children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
+                children.setMeta(new MetaVo(menu.getMenuNameLocaleByMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
                 children.setQuery(menu.getQuery());
                 childrenList.add(children);
                 router.setChildren(childrenList);
             } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) {
-                router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
+                router.setMeta(new MetaVo(menu.getMenuNameLocaleByMenuName(), menu.getIcon()));
                 router.setPath("/");
                 List<RouterVo> childrenList = new ArrayList<RouterVo>();
                 RouterVo children = new RouterVo();
@@ -203,7 +200,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
                 children.setPath(routerPath);
                 children.setComponent(UserConstants.INNER_LINK);
                 children.setName(StringUtils.capitalize(routerPath));
-                children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath()));
+                children.setMeta(new MetaVo(menu.getMenuNameLocaleByMenuName(), menu.getIcon(), menu.getPath()));
                 childrenList.add(children);
                 router.setChildren(childrenList);
             }
@@ -256,7 +253,9 @@ public class SysMenuServiceImpl implements ISysMenuService {
      */
     @Override
     public SysMenu selectMenuById(Long menuId) {
-        return menuMapper.selectMenuById(menuId);
+        SysMenu sysMenu = menuMapper.selectMenuById(menuId);
+        sysMenu.setMenuNameLocaleByManuName();
+        return sysMenu;
     }
 
     /**
@@ -360,7 +359,17 @@ public class SysMenuServiceImpl implements ISysMenuService {
     @Override
     public boolean checkMenuNameUnique(SysMenu menu) {
         Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
-        SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId(), menu.getTenantId());
+        SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuNameLocaleByMenuName(), menu.getParentId(), menu.getTenantId());
+        if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    @Override
+    public boolean checkMenuNameUniqueMuti(SysMenu menu) {
+        Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
+        SysMenu info = menuMapper.checkMenuNameUniqueMuti(menu.getMenuId(),menu.getMenuName(),menu.getMenuNameEn(), menu.getParentId(), menu.getTenantId());
         if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
@@ -416,6 +425,24 @@ public class SysMenuServiceImpl implements ISysMenuService {
         return 1L;
     }
 
+    /**
+     * 查询全部的菜单
+     * @return
+     */
+    @Override
+    public List<SysMenu> selectMenuList() {
+        return sysMenuMapper.selectMenuListAll();
+    }
+
+    @Override
+    public List<SysMenu> setMenuNameLocaleList(List<SysMenu> menus) {
+        if (menus != null && !menus.isEmpty()){
+            menus.forEach(sysMenu -> sysMenu.setMenuNameLocaleByManuName());
+            return menus;
+        }
+        return Collections.emptyList();
+    }
+
     /**
      * 获取路由名称
      *

+ 2 - 2
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysTenantServiceImpl.java

@@ -203,8 +203,8 @@ public class SysTenantServiceImpl implements ISysTenantService {
 //        objectMapper.registerModule(module);
         try {
             //这个东西在部署环境下会出现问题
-//            Resource resource = resourceLoader.getResource("classpath:sql/initialize_sys_tenant_menu.json");
-            Resource resource = new ClassPathResource("sql/initialize_sys_tenant_menu.json");
+//            Resource resource = resourceLoader.getResource("classpath:sql/initialize_sys_tenant_menu_i18n.json");
+            Resource resource = new ClassPathResource("sql/initialize_sys_tenant_menu_i18n.json");
             //获取租户默认菜单信息
             List<SysMenu> menus = objectMapper.readValue(resource.getInputStream(), objectMapper.getTypeFactory().constructCollectionType(List.class, SysMenu.class));
             //字符串备用方案

+ 56 - 2
zkqy-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -7,6 +7,7 @@
     <resultMap type="SysMenu" id="SysMenuResult">
         <id property="menuId" column="menu_id"/>
         <result property="menuName" column="menu_name"/>
+        <result property="menuNameEn" column="menu_name_en"/>
         <result property="parentName" column="parent_name"/>
         <result property="parentId" column="parent_id"/>
         <result property="orderNum" column="order_num"/>
@@ -31,6 +32,7 @@
     <sql id="selectMenuVo">
         select menu_id,
                menu_name,
+               menu_name_en,
                parent_id,
                order_num,
                path,
@@ -47,10 +49,11 @@
         from sys_menu
     </sql>
 
-    <select id="selectMenuList" parameterType="SysMenu" resultMap="SysMenuResult">
+    <select id="selectMenuList" parameterType="com.zkqy.common.core.domain.entity.SysMenu" resultMap="SysMenuResult">
         SELECT
         m.menu_id,
         m.menu_name,
+        m.menu_name_en,
         m.parent_id,
         m.order_num,
         m.path,
@@ -74,6 +77,9 @@
         <if test="menuName != null and menuName != ''">
             AND m.menu_name like concat('%', #{menuName}, '%')
         </if>
+        <if test="menuNameEn != null and menuNameEn != ''">
+            AND m.menu_name_en like concat('%', #{menu.menuNameEn}, '%')
+        </if>
         <if test="visible != null and visible != ''">
             AND m.visible = #{visible}
         </if>
@@ -89,6 +95,7 @@
     <select id="selectTenantMenuList" parameterType="Long" resultMap="SysMenuResult">
         select m.menu_id,
                menu_name,
+               menu_name_en,
                parent_id,
                order_num,
                path,
@@ -115,6 +122,7 @@
         select distinct m.menu_id,
                         m.parent_id,
                         m.menu_name,
+                        m.menu_name_en,
                         m.path,
                         m.component,
                         m.`query`,
@@ -138,6 +146,7 @@
         select distinct m.menu_id,
                         m.parent_id,
                         m.menu_name,
+                        m.menu_name_en,
                         m.path,
                         m.component,
                         m.`query`,
@@ -161,6 +170,7 @@
         select distinct m.menu_id,
                         m.parent_id,
                         m.menu_name,
+                        m.menu_name_en,
                         m.path,
                         m.component,
                         m.`query`,
@@ -186,7 +196,7 @@
     </select>
 
     <select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
-        select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.visible, m.status,
+        select distinct m.menu_id, m.parent_id, m.menu_name,m.menu_name_en, m.path, m.component, m.`query`, m.visible, m.status,
         ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num,
         m.create_time,t.tenant_name
         from sys_menu m
@@ -215,6 +225,7 @@
         select distinct m.menu_id,
                         m.parent_id,
                         m.menu_name,
+                        m.menu_name_en,
                         m.path,
                         m.component,
                         m.`query`,
@@ -326,6 +337,7 @@
         update sys_menu
         <set>
             <if test="menuName != null and menuName != ''">menu_name = #{menuName},</if>
+            <if test="menuNameEn != null and menuNameEn != ''">menu_name_en = #{menuNameEn},</if>
             <if test="parentId != null">parent_id = #{parentId},</if>
             <if test="orderNum != null">order_num = #{orderNum},</if>
             <if test="path != null and path != ''">path = #{path},</if>
@@ -350,6 +362,7 @@
         <if test="menuId != null and menuId != 0">menu_id,</if>
         <if test="parentId != null and parentId != 0">parent_id,</if>
         <if test="menuName != null and menuName != ''">menu_name,</if>
+        <if test="menuNameEn != null and menuNameEn != ''">menu_name_en,</if>
         <if test="orderNum != null">order_num,</if>
         <if test="path != null and path != ''">path,</if>
         <if test="component != null and component != ''">component,</if>
@@ -368,6 +381,7 @@
         <if test="menuId != null and menuId != 0">#{menuId},</if>
         <if test="parentId != null and parentId != 0">#{parentId},</if>
         <if test="menuName != null and menuName != ''">#{menuName},</if>
+        <if test="menuNameEn != null and menuNameEn != ''">#{menuNameEn},</if>
         <if test="orderNum != null">#{orderNum},</if>
         <if test="path != null and path != ''">#{path},</if>
         <if test="component != null and component != ''">#{component},</if>
@@ -431,6 +445,46 @@
             #{id}
         </foreach>
     </select>
+    <select id="selectMenuListAll" resultMap="SysMenuResult">
+        select menu_id,menu_name
+        from sys_menu
+    </select>
+    <select id="checkMenuNameUniqueMuti" resultType="com.zkqy.common.core.domain.entity.SysMenu">
+        SELECT sys.menu_id,
+        sys.menu_name,
+        sys.menu_name_en,
+        sys.parent_id,
+        sys.order_num,
+        sys.path,
+        sys.component,
+        sys.`query`,
+        sys.is_frame,
+        sys.is_cache,
+        sys.menu_type,
+        sys.visible,
+        sys.STATUS,
+        ifnull(sys.perms, '') AS perms,
+        sys.icon,
+        sys.create_time
+        FROM sys_menu AS sys
+        LEFT JOIN sys_tenant_menu AS tenant ON sys.menu_id = tenant.menu_id
+        WHERE sys.parent_id = #{parentId} and sys.menu_id != #{menuId}
+        <if test="tenantId != null and tenantId != ''">
+            AND tenant.tenant_id = #{tenantId}
+        </if>
+        AND (
+        <if test="menuName != null and menuName != ''">
+            sys.menu_name = #{menuName}
+        </if>
+        <if test="menuNameEn != null and menuNameEn != '' and menuName != null and menuName != ''">
+            or
+        </if>
+        <if test="menuNameEn != null and menuNameEn != ''">
+            sys.menu_name_en = #{menuNameEn}
+        </if>
+        )
+        LIMIT 1
+    </select>
 
 
     <insert id="insertMenuBatch" parameterType="java.util.List">