Browse Source

新增根据项目id获取项目名称的接口

Jxing 6 years ago
parent
commit
1b1ce199cf

+ 29 - 1
src/main/java/com/sagacloud/route/Route.java

@@ -1,5 +1,6 @@
 package com.sagacloud.route;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.rjeschke.txtmark.Processor;
@@ -7,6 +8,7 @@ import com.sagacloud.Exceptions.InvalidPostException;
 import com.sagacloud.cache.ProPasCache;
 import com.sagacloud.pojos.DPSelectPropertyResult;
 import com.sagacloud.route.processors.GetEquipmentByPjProcessor;
+import com.sagacloud.route.processors.GetNameByProjectIds;
 import com.sagacloud.route.processors.Insurance.*;
 import com.sagacloud.route.processors.GetPropByPjProcessor;
 import com.sagacloud.route.processors.Maintainance.FilterPropertyProcessor;
@@ -25,8 +27,11 @@ import org.slf4j.LoggerFactory;
 
 import javax.ws.rs.core.MediaType;
 import java.io.StringWriter;
+import java.lang.reflect.ParameterizedType;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * Created by Xiaoyu on 2018/7/10
@@ -200,12 +205,35 @@ public class Route extends ExceptionHandlerBaseRoute {
                 })
                 .to("direct:getPropertyStatisticsByProject");
 
-
+        // 主动同步数据平台项目名接口
         rest("/project/").post("sync_name")
                 .consumes(MediaType.APPLICATION_JSON)
                 .produces(MediaType.APPLICATION_JSON)
                 .route()
                 .to("direct:synProjectName");
+        // 根据项目id获取项目的名称.
+        rest("/project/names/").post("query")
+                .consumes(MediaType.APPLICATION_JSON)
+                .produces(MediaType.APPLICATION_JSON)
+                .route()
+                .process(exchange -> {
+                    try {
+                        String body = exchange.getIn().getBody(String.class);
+                        JSONObject obj = JSONObject.parseObject(body);
+                        if(obj != null && obj.getJSONArray("project") != null && obj.getJSONArray("project").size() > 0)
+                        {
+//                            List<String> projectIds = JSONArray.parseArray(obj.getJSONArray("project").toJSONString(), String.class);
+                            List<String> projectIds = obj.getJSONArray("project").toJavaList(String.class);
+                            exchange.setProperty("projectIds", new HashSet<String>(projectIds));
+                        }else
+                            throw new InvalidPostException("输入格式错误");
+                    }catch (Exception ex){
+                        throw new InvalidPostException("输入格式错误");
+                    }
+                    exchange.getIn().setHeader(Exchange.HTTP_URI, String.join("", InitEnvRoute.dataPlatform, "/mng/project/query?bridgeEndpoint=true&secret=A123456"));
+                }).setHeader(Exchange.HTTP_METHOD, constant("GET"))
+                .to(InitEnvRoute.dataPlatform + "/mng/project/query?bridgeEndpoint=true&secret=A123456")
+                .process(new GetNameByProjectIds());
 
         from("direct:synProjectName")
                 .process(exchange -> {

+ 46 - 0
src/main/java/com/sagacloud/route/processors/GetNameByProjectIds.java

@@ -0,0 +1,46 @@
+package com.sagacloud.route.processors;
+/*
+ * Author: Jxing
+ * Create Time: 2018/7/23
+ */
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.sagacloud.cache.ProPasCache;
+import com.sagacloud.utils.VendersUtil;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+
+public class GetNameByProjectIds implements Processor {
+    @Override
+    public void process(Exchange exchange) throws Exception {
+        String body = exchange.getIn().getBody(String.class);
+        JSONObject result = JSONObject.parseObject(body);
+        JSONArray arr = result.getJSONArray("Content");
+        HashSet<String> idSet = (HashSet<String>) exchange.getProperty("projectIds");
+        JSONArray ret = new JSONArray();
+        for (int i = 0; i < arr.size(); i++) {
+            JSONObject proNode = arr.getJSONObject(i);
+            if(!idSet.contains(proNode.getString("id"))){
+                continue;
+            }
+            JSONObject obj = new JSONObject();
+            obj.put("id", proNode.getString("id"));
+            JSONObject infoNode = proNode.getJSONObject("infos");
+            String pjName = "";
+            if(infoNode.getString("ProjLocalName")!=null){
+                pjName = infoNode.getString("ProjLocalName");
+            }
+            if(pjName.length() == 0 && infoNode.getString("ProjName") != null){
+                pjName = infoNode.getString("ProjName");
+            }
+            obj.put("name", pjName);
+            ret.add(obj);
+        }
+        exchange.getOut().setBody(VendersUtil.successJsonMsg("", ret));
+    }
+}

+ 30 - 0
src/main/resources/documentation.md

@@ -223,3 +223,33 @@ post方法, 不需要传Post数据:
 ##更新项目名称接口
     http://<host>:<port>/venders-dp/project/sync_name
 post:无
+
+
+## 根据项目id获取项目名称
+
+    http://<host>:<port>/venders-dp/project/names/query
+
+post体:
+
+    {
+        "project":[
+            "Pj1101080001"
+        ]
+    }
+返回:
+    
+    {
+        "result": "success",
+        "count": 1,
+        "content": [
+            {
+                "name": "广联达测试",
+                "id": "Pj1101080001"
+            }
+        ],
+        "resultMsg": ""
+    }
+    {
+        "result":"failure",
+        "resultMsg":"***"
+    }