瀏覽代碼

opc优化

hfxc226 2 年之前
父節點
當前提交
cae1afe70f

+ 57 - 0
platform-dao/src/main/java/com/platform/dao/util/TreeUtil.java

@@ -92,6 +92,41 @@ public class TreeUtil {
         return trees;
     }
 
+    /**
+     * 多层两次循环实现建树
+     * 当没有父节点的时候,当前节点也要显示
+     * @param treeNodes 传入的树节点列表
+     * @return
+     */
+    public <T extends TreeNode> List<T> buildByLoopWithNoParent(List<T> treeNodes, Object root) {
+
+        List<T> trees = new ArrayList<>();
+        Map<String, T> treeNodeMap = MapUtils.newHashMap(treeNodes.size());
+        treeNodes.forEach(treeNode -> {
+            treeNodeMap.put(treeNode.getId(), treeNode);
+        });
+
+        treeNodes.forEach(treeNode -> {
+            if (StringUtils.isBlank(treeNode.getParentId()) || "0".equals(treeNode.getParentId())) {
+                trees.add(treeNode);
+            } else if (treeNode.getParentId().equals(root)) {
+                trees.add(treeNode);
+            } else {
+                T t = treeNodeMap.get(treeNode.getParentId());
+                if (t != null) {
+                    t.setGroup(true);
+                    if (t.getChildren() == null) {
+                        t.setChildren(new ArrayList<>());
+                    }
+                    t.getChildren().add(treeNode);
+                }else{
+                    trees.add(treeNode);
+                }
+            }
+        });
+        return trees;
+    }
+
     /**
      * 多层两次循环实现建树
      * 不包括root节点
@@ -353,6 +388,28 @@ public class TreeUtil {
         return TreeUtil.buildByLoop(trees, root);
     }
 
+    /**
+     * 创建设备位置树
+     *
+     * @param types
+     * @param root
+     * @return
+     */
+    public List<CommonTree> buildSbPositionTreeWithNoParent(List<SbPositionVO> types, String root) {
+        List<CommonTree> trees = new LinkedList<>();
+        types.forEach(type -> {
+            CommonTree node = new CommonTree();
+            node.setId(type.getId());
+            node.setKey(type.getId());
+            node.setParentId(type.getParentId());
+            node.setTitle(type.getName());
+            node.setImg(type.getOpcImg());
+            node.setValue(type.getId());
+            trees.add(node);
+        });
+        return TreeUtil.buildByLoopWithNoParent(trees, root);
+    }
+
     /**
      * 创建设备基本信息类型树
      *

+ 1 - 1
platform-dao/src/main/resources/mapper/sb/SbPositionMapper.xml

@@ -31,7 +31,7 @@
         <if test="parentCode != null and parentCode != ''">
             and position.code like concat(#{parentCode},'%')
         </if>
-        <if test="opcFlag != null and opcFlag != ''">
+        <if test="opcFlag != null">
             and position.opc_flag = #{opcFlag}
         </if>
         <if test="userName != null and userName != ''">

+ 1 - 1
platform-rest/src/main/java/com/platform/rest/controller/sb/SbPositionController.java

@@ -158,7 +158,7 @@ public class SbPositionController {
      */
     @GetMapping("tree")
     public R queryTree(SbPositionDTO sbPositionDTO) {
-        return new R<>(TreeUtil.buildSbPositionTree(sbPositionService.selectVOList(sbPositionDTO), ""));
+        return new R<>(TreeUtil.buildSbPositionTreeWithNoParent(sbPositionService.selectVOList(sbPositionDTO), ""));
     }
 
     /**