树形结构list,按条件搜索某一父级下所有资源

public static void main(String[] args) throws Exception {
	String str = "[\n" +
	                "        {\n" +
	                "            \"uuid\":\"ac553114aaabaed76d8079b0de05983367VtJfFOZRA\",\n" +
	                "            \"parentPermissionUuid\":null,\n" +
	                "            \"name\":\"账号管理\",\n" +
	                "            \"permissionValue\":\"account_control\",\n" +
	                "            \"relationUrl\":null,\n" +
	                "            \"remark\":\"账号管理\",\n" +
	                "            \"type\":\"menu\",\n" +
	                "            \"submissionType\":null,\n" +
	                "            \"dataAccessRules\":[\n" +
	                "\n" +
	                "            ],\n" +
	                "            \"displayOrder\":0,\n" +
	                "            \"children\":[\n" +
	                "                {\n" +
	                "                    \"uuid\":\"c5f9764de9986d9b54751ea64ed16729AvIPUsVOWSc\",\n" +
	                "                    \"parentPermissionUuid\":\"ac553114aaabaed76d8079b0de05983367VtJfFOZRA\",\n" +
	                "                    \"name\":\"魔盒账号管理\",\n" +
	                "                    \"permissionValue\":\"magic_box\",\n" +
	                "                    \"relationUrl\":null,\n" +
	                "                    \"remark\":null,\n" +
	                "                    \"type\":\"menu\",\n" +
	                "                    \"submissionType\":null,\n" +
	                "                    \"dataAccessRules\":[\n" +
	                "\n" +
	                "                    ],\n" +
	                "                    \"displayOrder\":0,\n" +
	                "                    \"children\":[\n" +
	                "                        {\n" +
	                "                            \"uuid\":\"2627ce63a78a70f3c6f653626a63949fxZrsBSS4s9d\",\n" +
	                "                            \"parentPermissionUuid\":\"c5f9764de9986d9b54751ea64ed16729AvIPUsVOWSc\",\n" +
	                "                            \"name\":\"新增\",\n" +
	                "                            \"permissionValue\":\"add\",\n" +
	                "                            \"relationUrl\":null,\n" +
	                "                            \"remark\":null,\n" +
	                "                            \"type\":\"button\",\n" +
	                "                            \"submissionType\":\"POST\",\n" +
	                "                            \"dataAccessRules\":[\n" +
	                "\n" +
	                "                            ],\n" +
	                "                            \"displayOrder\":0,\n" +
	                "                            \"children\":[\n" +
	                "\n" +
	                "                            ],\n" +
	                "                            \"uri\":\"/add\"\n" +
	                "                        },\n" +
	                "                        {\n" +
	                "                            \"uuid\":\"bd0bdd1d102e3b531bae451706c4f170qZ2HltuHB4o\",\n" +
	                "                            \"parentPermissionUuid\":\"c5f9764de9986d9b54751ea64ed16729AvIPUsVOWSc\",\n" +
	                "                            \"name\":\"账号\",\n" +
	                "                            \"permissionValue\":\"account\",\n" +
	                "                            \"relationUrl\":null,\n" +
	                "                            \"remark\":null,\n" +
	                "                            \"type\":\"menu\",\n" +
	                "                            \"submissionType\":\"GET\",\n" +
	                "                            \"dataAccessRules\":[\n" +
	                "\n" +
	                "                            ],\n" +
	                "                            \"displayOrder\":0,\n" +
	                "                            \"children\":[\n" +
	                "\n" +
	                "                            ],\n" +
	                "                            \"uri\":\"/account\"\n" +
	                "                        }\n" +
	                "                    ],\n" +
	                "                    \"uri\":null\n" +
	                "                },\n" +
	                "                {\n" +
	                "                    \"uuid\":\"f5ce6f71d562e8271e30c2933587ffcb7dfvCYB87cl\",\n" +
	                "                    \"parentPermissionUuid\":\"ac553114aaabaed76d8079b0de05983367VtJfFOZRA\",\n" +
	                "                    \"name\":\"SOA账号管理\",\n" +
	                "                    \"permissionValue\":\"soa\",\n" +
	                "                    \"relationUrl\":null,\n" +
	                "                    \"remark\":null,\n" +
	                "                    \"type\":\"menu\",\n" +
	                "                    \"submissionType\":\"GET\",\n" +
	                "                    \"dataAccessRules\":[\n" +
	                "\n" +
	                "                    ],\n" +
	                "                    \"displayOrder\":0,\n" +
	                "                    \"children\":[\n" +
	                "\n" +
	                "                    ],\n" +
	                "                    \"uri\":\"/user\"\n" +
	                "                }\n" +
	                "            ],\n" +
	                "            \"uri\":null\n" +
	                "        },\n" +
	                "        {\n" +
	                "            \"uuid\":\"e705ec504f7583ed812c8a1af366bad448rFy3NIyHI\",\n" +
	                "            \"parentPermissionUuid\":null,\n" +
	                "            \"name\":\"消息推送\",\n" +
	                "            \"permissionValue\":\"msg_push\",\n" +
	                "            \"relationUrl\":null,\n" +
	                "            \"remark\":null,\n" +
	                "            \"type\":\"menu\",\n" +
	                "            \"submissionType\":null,\n" +
	                "            \"dataAccessRules\":[\n" +
	                "\n" +
	                "            ],\n" +
	                "            \"displayOrder\":0,\n" +
	                "            \"children\":[\n" +
	                "\n" +
	                "            ],\n" +
	                "            \"uri\":null\n" +
	                "        }\n" +
	                "    ]";
	List<SubLevelPermission> subLevelPermissions = JSONObject.parseArray(str, SubLevelPermission.class);
 	String pv = "";
	//        String type = "button";
    String type = "menu";
	//        String type = "ALL";
	//        String type = "";
    List<SubLevelPermission> list = treesubLevelPermissions(subLevelPermissions, pv, type, null);
    System.out.println(JSONObject.toJSONString(list));
} 
        
private static List<SubLevelPermission> treesubLevelPermissions(List<SubLevelPermission> subLevelPermissions, String val, String type, String uuid) {
   List<SubLevelPermission> tempList = new ArrayList<>();
   if (StringUtils.isEmpty(val)) {
       if (StringUtils.isEmpty(type)) {
           return subLevelPermissions;
       }else{
           for (SubLevelPermission mu : subLevelPermissions) {
               if (mu.getType().equals(type)) {
                   FilterChildren(tempList, mu, val, type, uuid);
               }else if ("ALL".equals(type) || StringUtils.isBlank(type)) {
                   FilterChildren(tempList, mu, val, "ALL", uuid);
               }
           }
       }
   }else{
       for (SubLevelPermission mu : subLevelPermissions) {
           if(uuid == null){
               if (!mu.getPermissionValue().equals(val)){
                   List<SubLevelPermission> temp = treesubLevelPermissions(mu.getChildren(), val, type, null);
                   tempList.addAll(temp);
               }else{
                   //递归遍历开始查找的下一级
                   List<SubLevelPermission> temp = treesubLevelPermissions(mu.getChildren(), val, type, mu.getUuid());
                   tempList.addAll(temp);
               }
           }else{
               if (mu.getType().equals(type)) {
                   FilterChildren(tempList, mu, val, type, uuid);
               } else if ("ALL".equals(type) || StringUtils.isBlank(type)) {
                   FilterChildren(tempList, mu, val, "ALL", uuid);
               }
           }
       }
   }
   return tempList;
}

private static void FilterChildren(List<SubLevelPermission> tempList, SubLevelPermission sp,String val, String type,String uuid) {
    SubLevelPermission data = new SubLevelPermission();
    BeanUtils.copyProperties(sp, data);
    //遍历出父id等于参数的id,add进子节点集合
    //递归遍历下一级
    List<SubLevelPermission> temp = treesubLevelPermissions(sp.getChildren(), val, type, data.getUuid());
    if(StringUtils.isEmpty(uuid)){
        data.setChildren(temp);
        tempList.add(data);
    }else{
        if (sp.getParentPermissionUuid().equals(uuid)) {
            data.setChildren(temp);
            tempList.add(data);
        }
    }
}              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值