Ver código fonte

新增根据分组id查询分组树详情

易涛 3 anos atrás
pai
commit
108d51e804

+ 47 - 5
src/main/java/com/persagy/apm/controller/GroupManagementController.java

@@ -3,10 +3,14 @@ package com.persagy.apm.controller;
 import com.alibaba.fastjson.JSONArray;
 import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.utils.ResultHelper;
+import com.persagy.apm.model.vo.GroupTreeDetailVO;
 import com.persagy.apm.model.vo.GroupTreeVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,6 +21,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @author 易涛
@@ -31,22 +36,59 @@ public class GroupManagementController {
     @ApiOperation(value = "获取分组树")
     @PostMapping("/queryGroupTree")
     public CommonResult<List<GroupTreeVO>> queryGroupTree(){
+        return ResultHelper.single(getGroupTree());
+    }
+    
+    /**
+     * 获取分组树 
+     * @author 易涛
+     * @date 2021/9/8 14:44 
+     * @return java.util.List<com.persagy.apm.model.vo.GroupTreeVO>
+     */
+    private List<GroupTreeVO> getGroupTree(){
         InputStream inputStream = this.getClass().getClassLoader()
                 .getResourceAsStream(File.separator+"json"+File.separator+"GroupTree.json");
         if(inputStream==null){
-            return ResultHelper.single(null);
+            return null;
         }
         try{
             String str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
-            return ResultHelper.single(JSONArray.parseArray(str,GroupTreeVO.class));
+            return JSONArray.parseArray(str,GroupTreeVO.class);
         }catch (IOException ioe){
             throw new RuntimeException("json文件有误",ioe);
         }
     }
-
+    
     @ApiOperation(value = "根据id获取分组详情信息")
     @PostMapping("/queryTreeById")
-    public CommonResult<GroupTreeVO> queryTreeById(@RequestBody String id){
-        return ResultHelper.single(null);
+    public CommonResult<GroupTreeDetailVO> queryTreeById(@RequestBody String id){
+        List<GroupTreeVO> groupTreeVOList = getGroupTree();
+        GroupTreeDetailVO groupTreeDetailVO = new GroupTreeDetailVO();
+        queryById(groupTreeVOList,groupTreeDetailVO,id);
+        return ResultHelper.single(groupTreeDetailVO);
+    }
+    
+    /**
+     * 递归匹配符合条件的分组对象
+     * @param groupTreeVOList
+     * @param id
+     * @author 易涛
+     * @date 2021/9/8 14:50 
+     * @return com.persagy.apm.model.vo.GroupTreeVO
+     */
+    private GroupTreeDetailVO queryById(List<GroupTreeVO> groupTreeVOList,GroupTreeDetailVO groupTreeDetailVO,String id){
+        for(GroupTreeVO groupTreeVO:groupTreeVOList){
+            if(StringUtils.isNotEmpty(groupTreeDetailVO.getId())){
+                return groupTreeDetailVO;
+            }
+            if(Objects.equals(groupTreeVO.getId(),id)){
+                BeanUtils.copyProperties(groupTreeVO,groupTreeDetailVO);
+                return groupTreeDetailVO;
+            }
+            if(CollectionUtils.isNotEmpty(groupTreeVO.getChildren())){
+                queryById(groupTreeVO.getChildren(),groupTreeDetailVO,id);
+            }
+        }
+        return groupTreeDetailVO;
     }
 }

+ 29 - 0
src/main/java/com/persagy/apm/model/vo/GroupTreeDetailVO.java

@@ -0,0 +1,29 @@
+package com.persagy.apm.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author 易涛
+ * @version 1.0
+ * @date 2021/9/8 11:32
+ */
+@ApiModel(value = "分组树详情")
+@Data
+public class GroupTreeDetailVO {
+
+    @ApiModelProperty("分组id")
+    private String id;
+
+    @ApiModelProperty("分组名称")
+    private String name;
+
+    @ApiModelProperty("对象类编码")
+    private String classCode;
+
+    @ApiModelProperty("条件")
+    private String condition;
+}

+ 35 - 3
src/main/resources/json/GroupTree.json

@@ -4,20 +4,52 @@
     "name": "组合式空调机组",
     "classCode": "ACATAH",
     "condition": "installType: 1",
-    "children": []
+    "children": [
+      {
+        "id": "3",
+        "name": "组合式空调机组",
+        "classCode": "ACATAH",
+        "condition": "installType: 1",
+        "children": []
+      }
+    ]
   },
   {
     "id": "2",
     "name": "吊装空调",
     "classCode": "ACATAH",
     "condition": "installType: 2",
-    "children": []
+    "children": [
+      {
+        "id": "4",
+        "name": "组合式空调机组",
+        "classCode": "ACATAH",
+        "condition": "installType: 1",
+        "children": [
+          {
+            "id": "6",
+            "name": "组合式空调机组",
+            "classCode": "ACATAH",
+            "condition": "installType: 1",
+            "children": []
+          }
+        ]
+      }
+    ]
   },
   {
     "id": "3",
     "name": "新风机组",
     "classCode": "ACATFU",
     "condition": "",
-    "children": []
+    "children": [
+      {
+        "id": "5",
+        "name": "组合式空调机组",
+        "classCode": "ACATAH",
+        "condition": "installType: 1",
+        "children": []
+      }
+    ]
   }
 ]