Преглед на файлове

[task-2002] 收集菜单资源以及按钮权限一览表 / 收集菜单资源一览表

Li Yuan преди 1 година
родител
ревизия
b421f1e78a
променени са 1 файла, в които са добавени 165 реда и са изтрити 0 реда
  1. 165 0
      ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/ResourceRuleJob.java

+ 165 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/ResourceRuleJob.java

@@ -0,0 +1,165 @@
+package com.lc.ibps.platform.plan.job;
+
+import com.lc.ibps.base.core.util.AppUtil;
+import com.lc.ibps.org.auth.persistence.entity.ResourcesPo;
+import com.lc.ibps.org.auth.repository.RoleResourceRepository;
+import com.lc.ibps.org.party.persistence.entity.PartyRolePo;
+import com.lc.ibps.org.party.repository.PartyRoleRepository;
+import org.apache.commons.lang3.StringUtils;
+import org.quartz.JobExecutionContext;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public class ResourceRuleJob extends AbstractJob {
+
+    @Resource
+    private RoleResourceRepository roleResourceRepository;
+    @Resource
+    private PartyRoleRepository partyRoleRepository ;
+    @Override
+    public void executeJob(JobExecutionContext context) throws Exception {
+        List<MenuVO> allMenuList = null;
+        partyRoleRepository = AppUtil.getBean(PartyRoleRepository.class);
+        roleResourceRepository = AppUtil.getBean(RoleResourceRepository.class);
+        List<PartyRolePo> partyRolePos = partyRoleRepository.queryWithSys();
+        for (PartyRolePo rolePo : partyRolePos) {
+            List<ResourcesPo> roleResTreeChecked = roleResourceRepository.getRoleResTreeChecked(rolePo.getId(), rolePo.getSubSystemId());
+            if(allMenuList == null) {
+                allMenuList = new ArrayList<>();
+                for (ResourcesPo res : roleResTreeChecked) {
+                    if (res.getDisplayInMenu().equalsIgnoreCase("n")) continue;
+                    allMenuList.add(new MenuVO(res.getSn(), res.getName(), res.getId(), res.getParentId(),res.getChecked()));
+                }
+
+                List<MenuVO> result = getChildNode("0", allMenuList);
+                allMenuList = getFlatMenuList("",result);
+            }else{
+                for (MenuVO menu : allMenuList) {
+                    Optional<ResourcesPo> optional = roleResTreeChecked.stream().parallel().filter(x -> x.getId().equals(menu.id)).findAny();
+                    if(optional.isPresent()) menu.roles.add(optional.get().getChecked().equalsIgnoreCase("true")?"√":" ");
+                    else menu.roles.add("");
+                }
+            }
+        }
+        System.out.println("" +"|"+partyRolePos.stream().map(x->x.getName()).collect(Collectors.joining("|")));
+        for (MenuVO menu : allMenuList) {
+            String s = String.format("%s",StringUtils.trim(menu.parentCode+"/"+menu.menuCode));
+            System.out.println(s +"|"+ StringUtils.join(menu.roles,"|"));
+        }
+
+
+    }
+
+    public List<MenuVO> getFlatMenuList(String parentCode,List<MenuVO> allMenuList){
+        List<MenuVO> menu = new ArrayList<>();
+        for (MenuVO m : allMenuList) {
+            m.parentCode = parentCode;
+            menu.add(m);
+            menu.addAll(getFlatMenuList(parentCode+"/"+m.menuCode,m.childNode));
+        }
+        return menu;
+    }
+
+    public List<MenuVO> getChildNode(String rootMenu, List<MenuVO> allMenuList) {
+
+        List<MenuVO> childMenu = new ArrayList<>();
+        for (MenuVO menu : allMenuList) {
+            if (menu.getParentId().compareTo(rootMenu) == 0) {
+                // 递归查询此节点下的所有子节点
+                List<MenuVO> childNode = getChildNode(menu.getId(), allMenuList);
+                menu.setChildNode(childNode);
+                childMenu.add(menu);
+            }
+        }
+        // 子节点进行排序
+        List<MenuVO> childSortMenu = Optional.ofNullable(childMenu)
+                .map(List::stream)
+                .orElseGet(Stream::empty)
+                .sorted(Comparator.comparing(MenuVO::getSn))
+                .collect(Collectors.toList());
+
+        return childSortMenu;
+    }
+
+    private class MenuVO {
+
+        int sn;
+        List<MenuVO> childNode;
+        List<String> roles = new ArrayList<>();
+        String parentCode;
+        String menuCode;
+
+        String id;
+        String parentId;
+
+        public MenuVO(int sn, String menuCode, String id, String parentId, String checked) {
+            this.sn = sn;
+            this.menuCode = menuCode;
+            this.id = id;
+            this.parentId = parentId;
+            this.roles.add(checked.equalsIgnoreCase("true")?"√":" ");
+        }
+
+        public List<String> getRoles() {
+            return roles;
+        }
+
+        public void setRoles(List<String> roles) {
+            this.roles = roles;
+        }
+
+        public int getSn() {
+            return sn;
+        }
+
+        public void setSn(int sn) {
+            this.sn = sn;
+        }
+
+        public List<MenuVO> getChildNode() {
+            return childNode;
+        }
+
+        public void setChildNode(List<MenuVO> childNode) {
+            this.childNode = childNode;
+        }
+
+        public String getParentCode() {
+            return parentCode;
+        }
+
+        public void setParentCode(String parentCode) {
+            this.parentCode = parentCode;
+        }
+
+        public String getMenuCode() {
+            return menuCode;
+        }
+
+        public void setMenuCode(String menuCode) {
+            this.menuCode = menuCode;
+        }
+
+        public String getId() {
+            return id;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+
+        public String getParentId() {
+            return parentId;
+        }
+
+        public void setParentId(String parentId) {
+            this.parentId = parentId;
+        }
+    }
+}