话不多说直接上菜

1,实体类

/**
 * @ClassName SysTagConf
 * @Description TODO
 * @Author shenWB
 * @Date 2019/5/31 10:12
 * @Version 1.0
 **/
 
  1. @Data
  2. public class SysTagConf implements java.io.Serializable{
  3. private String rowGuid; //唯一标识
  4. private String name; //标签名称
  5. private String opType; //授权类型 0全部 1目录清单 2实施清单 3办理项
  6. private String useLevel; //使用层级 0不限 2省级 3地市级 4区县级
  7. private float sort; //排序
  8. private String parentGuid; //父节点标识
  9. private String bakNote; //备注
  10. private String createUId; //创建人ID
  11. private String createUName; //创建人名称
  12. private String createTime; //创建时间
  13. private String updateUId; //更新人ID
  14. private String updateUName; //更新人名称
  15. private String updateTime; //更新时间
  16. private String parentName; //父节点名称
  17. private List <SysTagConf> childList;
  18. }

2,业务模块serviceImpl


 
  1. /**--------------------数据封装树结构代码---------------------------*/
  2. @Override
  3. public List <SysTagConf> tagConfTreeList(String deptId, List <String> opType) {
  4. SysDepartment sysDepartment = departmentDao.selectDepartmentByUserId(deptId);
  5. String useLevel = null;//行使层级
  6. if(sysDepartment != null){
  7. if(sysDepartment.getUseLevel() != null && !"".equals(sysDepartment.getUseLevel())) {
  8. useLevel = sysDepartment.getUseLevel();//行使层级赋值
  9. }
  10. }
  11. List <SysTagConf> sysTagConfList = sysTagConfDao.tagConfTreeList(useLevel,opType); //查询所有数据
  12. List <SysTagConf> rootList = new ArrayList <>(); //根节点对象存放到这里
  13. List <SysTagConf> bodyList = new ArrayList <>(); //其他节点存放到这里,可以包含根节点
  14. for (SysTagConf sysTagConf: sysTagConfList) {
  15. if(sysTagConf != null) {
  16. if (sysTagConf.getParentGuid().equals("")) {
  17. rootList.add(sysTagConf);//所有父节点数据放进去
  18. } else {
  19. bodyList.add(sysTagConf); //其他节点数据也放进去
  20. }
  21. }
  22. }
  23. List <SysTagConf> stc = getTree(rootList,bodyList);//组装的树返给前端sb
  24. return stc;
  25. }
  26. public List <SysTagConf> getTree(List <SysTagConf> rootList,List <SysTagConf> bodyList){
  27. if(bodyList != null && !bodyList.isEmpty()){
  28. //声明一个map,用来过滤已操作过的数据
  29. Map <String,String> map = Maps.newHashMapWithExpectedSize(bodyList.size());
  30. rootList.forEach(beanTree -> getChild(beanTree,map,bodyList));
  31. return rootList;
  32. }
  33. return null;
  34. }
  35. public void getChild(SysTagConf treeDto,Map <String,String> map,List <SysTagConf> bodyList){
  36. List <SysTagConf> childList = Lists.newArrayList();
  37. bodyList.stream()
  38. .filter(c -> !map.containsKey(c.getRowGuid()))
  39. .filter(c ->c.getParentGuid().equals(treeDto.getRowGuid()))
  40. .forEach(c ->{
  41. map.put(c.getRowGuid(),c.getParentGuid());
  42. getChild(c,map,bodyList);
  43. childList.add(c);
  44. });
  45. treeDto.setChildList(childList);//子数据集
  46. }
  47. /**--------------------到此结束---------------------------*/

3返回效果

{
    "code": 0,
    "message": "操作成功",
    "data": [
        {
            "rowGuid": "1",
            "name": "1",
            "opType": "1",
            "useLevel": "1",
            "sort": 1,
            "parentGuid": "",
            "bakNote": "1",
            "createUId": "1",
            "createUName": "1",
            "createTime": "1",
            "updateUId": "1",
            "updateUName": "1",
            "updateTime": "1",
            "parentName": null,
            "childList": [
                {
                    "rowGuid": "2",
                    "name": "2",
                    "opType": "1",
                    "useLevel": "1",
                    "sort": 2,
                    "parentGuid": "1",
                    "bakNote": "2",
                    "createUId": "2",
                    "createUName": "2",
                    "createTime": "2",
                    "updateUId": "2",
                    "updateUName": "2",
                    "updateTime": "2",
                    "parentName": null,
                    "childList": [
                        {
                            "rowGuid": "3",
                            "name": "3",
                            "opType": "1",
                            "useLevel": "1",
                            "sort": 3,
                            "parentGuid": "2",
                            "bakNote": "3",
                            "createUId": "3",
                            "createUName": "3",
                            "createTime": "3",
                            "updateUId": "3",
                            "updateUName": "3",
                            "updateTime": "3",
                            "parentName": null,
                            "childList": []
                        }
                    ]
                }
            ]
        }
    ],
    "messageId": null
}

 

 
 

 

 

  •                     <li class="tool-item tool-active is-like "><a href='javascript:void(0)'>

话不多说直接上菜