|
@@ -1,5 +1,8 @@
|
|
|
package edp.davinci.controller;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import edp.core.annotation.CurrentUser;
|
|
|
import edp.davinci.common.controller.BaseController;
|
|
|
import edp.davinci.core.common.Constants;
|
|
@@ -56,7 +59,59 @@ public class CatalogueController extends BaseController
|
|
|
}
|
|
|
|
|
|
List<Catalogue> views = catalogueService.getCatalogues(projectId, user);
|
|
|
- return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payloads(views));
|
|
|
+ // 转换为属性结构
|
|
|
+ JSONArray result = listToTree(JSONArray.parseArray(JSON.toJSONString(views)),"id","parentId","children");
|
|
|
+ return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payloads(result));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+
|
|
|
+ - listToTree
|
|
|
+ - <p>方法说明<p>
|
|
|
+ - 将JSONArray数组转为树状结构
|
|
|
+ - @param arr 需要转化的数据
|
|
|
+ - @param id 数据唯一的标识键值
|
|
|
+ - @param pid 父id唯一标识键值
|
|
|
+ - @param child 子节点键值
|
|
|
+ - @return JSONArray
|
|
|
+ */
|
|
|
+ public static JSONArray listToTree(JSONArray arr,String id,String pid,String child){
|
|
|
+ JSONArray r = new JSONArray();
|
|
|
+ JSONObject hash = new JSONObject();
|
|
|
+ //将数组转为Object的形式,key为数组中的id
|
|
|
+ for(int i=0;i<arr.size();i++){
|
|
|
+ JSONObject json = (JSONObject) arr.get(i);
|
|
|
+ hash.put(json.getString(id), json);
|
|
|
+ }
|
|
|
+
|
|
|
+ //遍历结果集
|
|
|
+ for(int j=0;j<arr.size();j++){
|
|
|
+ //单条记录
|
|
|
+ JSONObject aVal = (JSONObject) arr.get(j);
|
|
|
+ if(null == aVal.get(pid)){
|
|
|
+ // aVal.put("pid","");
|
|
|
+ r.add(aVal);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //在hash中取出key为单条记录中pid的值
|
|
|
+ JSONObject hashVP = (JSONObject) hash.get(aVal.get(pid).toString());
|
|
|
+ //如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中
|
|
|
+ if(hashVP!=null){
|
|
|
+ //检查是否有child属性
|
|
|
+ if(hashVP.get(child)!=null){
|
|
|
+ JSONArray ch = (JSONArray) hashVP.get(child);
|
|
|
+ ch.add(aVal);
|
|
|
+ hashVP.put(child, ch);
|
|
|
+ }else{
|
|
|
+ JSONArray ch = new JSONArray();
|
|
|
+ ch.add(aVal);
|
|
|
+ hashVP.put(child, ch);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ r.add(aVal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return r;
|
|
|
}
|
|
|
|
|
|
/**
|