From 2816415f539ef54839e331657edae7055c243ad8 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期六, 17 一月 2026 19:27:45 +0800
Subject: [PATCH] agv缓存库位清空和标记功能

---
 src/main/java/com/zy/asrs/controller/AppVersionController.java |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 100 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AppVersionController.java b/src/main/java/com/zy/asrs/controller/AppVersionController.java
index 2b5aed4..16a6111 100644
--- a/src/main/java/com/zy/asrs/controller/AppVersionController.java
+++ b/src/main/java/com/zy/asrs/controller/AppVersionController.java
@@ -233,19 +233,107 @@
     @RequestMapping("/menu/pda/auth")
     @ManagerAuth
     public R menuPda(){
-        Long userId = getUserId();
-        List<RolePermission> rolePermissions;
-        if (userId == 9527L) {
-            rolePermissions = rolePermissionService.selectList(new EntityWrapper<>());
-        } else {
-            Long roleId = getUser().getRoleId();
-            rolePermissions = rolePermissionService.selectList(new EntityWrapper<RolePermission>().eq("role_id", roleId));
+        // 鐩存帴浠� sys_permission 琛ㄨ鍙栨墍鏈夎彍鍗曪紝涓嶆鏌ユ潈闄愬垎閰�
+        // 鏌ヨ鎵�鏈夌姸鎬佷负1锛堟甯革級鐨勬潈闄�
+        List<Permission> permissions = permissionService.selectList(
+            new EntityWrapper<Permission>()
+                .eq("status", 1)  // 鍙繑鍥炴甯哥姸鎬佺殑鏉冮檺
+        );
+        
+        // 妫�鏌ユ槸鍚︽湁灞傜骇缁撴瀯锛堢埗鑿滃崟锛歛ction涓虹┖瀛楃涓诧紝瀛愯彍鍗曪細resource_id鎸囧悜鐖惰彍鍗曠殑permission.id锛�
+        // 鏌ヨ鎵�鏈夌埗鑿滃崟锛坅ction涓虹┖瀛楃涓茬殑鏉冮檺锛�
+        List<Permission> parentMenus = permissions.stream()
+            .filter(p -> p.getAction() == null || p.getAction().isEmpty())
+            .collect(Collectors.toList());
+        
+        // 鏀堕泦鎵�鏈夌埗鑿滃崟ID锛堢敤浜庤繃婊ょ嫭绔嬭彍鍗曪級
+        java.util.Set<Long> parentMenuIds = parentMenus.stream()
+            .map(Permission::getId)
+            .collect(Collectors.toSet());
+        
+        if (!parentMenus.isEmpty()) {
+            // 鏋勫缓灞傜骇缁撴瀯
+            List<Map<String, Object>> result = new ArrayList<>();
+            
+            for (Permission parentMenu : parentMenus) {
+                // 鏌ユ壘璇ョ埗鑿滃崟涓嬬殑瀛愯彍鍗�
+                // 鏂瑰紡1锛歳esource_id鎸囧悜鐖惰彍鍗曠殑id
+                // 鏂瑰紡2锛歳esource_id涓�0鎴杗ull锛屼絾鏍规嵁action璺緞鍖归厤鐖惰彍鍗�
+                List<Permission> children = permissions.stream()
+                    .filter(p -> {
+                        // 鎺掗櫎鐖惰彍鍗曟湰韬�
+                        if (p.getAction() == null || p.getAction().isEmpty()) {
+                            return false;
+                        }
+                        // 鏂瑰紡1锛歳esource_id鎸囧悜鐖惰彍鍗曠殑id
+                        if (p.getResourceId() != null && p.getResourceId().equals(parentMenu.getId())) {
+                            return true;
+                        }
+                        // 鏂瑰紡2锛歳esource_id涓�0鎴杗ull锛屾牴鎹產ction璺緞鍖归厤
+                        if ((p.getResourceId() == null || p.getResourceId() == 0)) {
+                            String action = p.getAction();
+                            String parentName = parentMenu.getName();
+                            // 鏍规嵁鐖惰彍鍗曞悕绉板尮閰峚ction璺緞
+                            if ("鍏ュ簱绠$悊".equals(parentName)) {
+                                return action != null && (action.startsWith("/pakin/") || action.startsWith("/order/"));
+                            } else if ("AGV绠$悊".equals(parentName)) {
+                                return action != null && action.startsWith("/AGV/");
+                            } else if ("搴撳瓨绠$悊".equals(parentName)) {
+                                return action != null && action.startsWith("/stock/");
+                            }
+                        }
+                        return false;
+                    })
+                    .collect(Collectors.toList());
+                
+                // 鍙湁鏈夊瓙鑿滃崟鐨勭埗鑿滃崟鎵嶈繑鍥�
+                if (!children.isEmpty()) {
+                    Map<String, Object> parentMap = new HashMap<>();
+                    parentMap.put("id", parentMenu.getId());
+                    parentMap.put("name", parentMenu.getName());
+                    parentMap.put("action", parentMenu.getAction());
+                    parentMap.put("type", "parent"); // 鏍囪瘑涓虹埗鑿滃崟
+                    
+                    // 鏋勫缓瀛愯彍鍗曞垪琛�
+                    List<Map<String, Object>> childrenList = new ArrayList<>();
+                    for (Permission child : children) {
+                        Map<String, Object> childMap = new HashMap<>();
+                        childMap.put("id", child.getId());
+                        childMap.put("name", child.getName());
+                        childMap.put("action", child.getAction());
+                        childMap.put("type", "child"); // 鏍囪瘑涓哄瓙鑿滃崟
+                        childrenList.add(childMap);
+                    }
+                    parentMap.put("children", childrenList);
+                    result.add(parentMap);
+                }
+            }
+            
+            // 娣诲姞娌℃湁鐖惰彍鍗曠殑鐙珛鏉冮檺锛坮esource_id涓篘ULL鐨勬潈闄愶級
+            List<Permission> standalonePermissions = permissions.stream()
+                .filter(p -> {
+                    // 鍙繑鍥炴湁action鐨勬潈闄愶紙鎺掗櫎鐖惰彍鍗曪級
+                    if (p.getAction() == null || p.getAction().isEmpty()) {
+                        return false;
+                    }
+                    // 濡傛灉resource_id涓篘ULL锛岃鏄庢槸鐙珛鑿滃崟
+                    return p.getResourceId() == null;
+                })
+                .collect(Collectors.toList());
+            
+            for (Permission permission : standalonePermissions) {
+                Map<String, Object> item = new HashMap<>();
+                item.put("id", permission.getId());
+                item.put("name", permission.getName());
+                item.put("action", permission.getAction());
+                item.put("type", "standalone"); // 鐙珛鑿滃崟
+                result.add(item);
+            }
+            
+            return R.ok().add(result);
         }
-        if (Cools.isEmpty(rolePermissions)) {
-            return R.ok();
-        }
-        List<Long> collect = rolePermissions.stream().map(RolePermission::getPermissionId).distinct().collect(Collectors.toList());
-        List<Permission> permissions = permissionService.selectBatchIds(collect);
+        
+        // 濡傛灉娌℃湁灞傜骇缁撴瀯锛岃繑鍥炲師鏉ョ殑骞抽摵缁撴瀯锛堝吋瀹规棫閫昏緫锛�
         return R.ok().add(permissions);
     }
 }

--
Gitblit v1.9.1