Browse Source

Merge branch 'master' of http://47.93.33.207:8886/r/venders-dp

FanXiaoyu 6 years ago
parent
commit
56afc480a6

+ 42 - 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
@@ -167,6 +172,7 @@ public class Route extends ExceptionHandlerBaseRoute {
                 .process(new GetEquipmentByPjProcessor())
                 .to(Const.dataPlatform + "/object/subset_query");
 
+        // 统计数据平台资产和设备信息(数量)
         from("direct:buildVenderMap")
                 .to(Const.venders + "/auxiliary/vender/query_detail?bridgeEndpoint=true&method=POST")
                 .process(new VenderMapProcessor())
@@ -183,16 +189,51 @@ public class Route extends ExceptionHandlerBaseRoute {
                     String jsonStr = exchange.getIn().getBody(String.class);
                     DPSelectPropertyResult dpResult = JSONObject.parseObject(jsonStr, DPSelectPropertyResult.class);
                     exchange.setProperty("propertyData" + exchange.getExchangeId(), dpResult);
+                    // 为下个路由准备输入数据
+                    String projectId = (String) exchange.getProperty("projectId" + exchange.getExchangeId());
+                    JSONObject json = new JSONObject();
+                    json.put("projectId", projectId);
+                    exchange.getIn().setBody(json.toString());
+                })
+                .to("direct:getEquipmentByPj")
+                .process(exchange -> {
+                    String jsonStr = exchange.getIn().getBody(String.class);
+                    DPSelectPropertyResult eqResult = JSONObject.parseObject(jsonStr, DPSelectPropertyResult.class);
+                    exchange.setProperty("facilityData" + exchange.getExchangeId(), eqResult);
+
                     exchange.getIn().setBody(exchange.getProperty("projectId" + exchange.getExchangeId()));
                 })
                 .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));
+    }
+}

+ 7 - 1
src/main/java/com/sagacloud/route/processors/PeriodTask/StatisticsProcessor.java

@@ -27,8 +27,10 @@ public class StatisticsProcessor implements Processor {
         String projectId = exchange.getIn().getBody(String.class);
         System.out.println("这里正在统计的是Project:" + projectId);
         DPSelectPropertyResult propertyData = (DPSelectPropertyResult) exchange.getProperty("propertyData" + exchange.getExchangeId());
+        DPSelectPropertyResult facilityData = (DPSelectPropertyResult) exchange.getProperty("facilityData" + exchange.getExchangeId());
         Map<String, Map<String, String>> infoValueMap = (Map<String, Map<String, String>>) exchange.getProperty("map");  // 信息点Code --> (厂商库在该信息点的值value --> vender DPID)
         List<Map<String, Object>> propertyList = propertyData.getContent();
+        List<Map<String, Object>> facilityList = facilityData.getContent();
         Map<String, VenderStatistics> venderStatisticsMap = new HashMap<>();
         Map<String, Set<String>> contracts = new HashMap<>(); // 保险商统计供应合同数目使用
         Map<String, Set<String>> warranties = new HashMap<>(); // 保险商统计供应合同数目使用
@@ -37,7 +39,11 @@ public class StatisticsProcessor implements Processor {
             matchCountManufacturer(singleProperty, infoValueMap, manufacturerSign, venderStatisticsMap);
             matchCountSupplier(singleProperty, infoValueMap, supplierSign, venderStatisticsMap, contracts);
             matchCountInsurer(singleProperty, infoValueMap, insuranceSign, venderStatisticsMap, warranties);
-            matchCountMaintainance(singleProperty, infoValueMap, maintainanceSign, venderStatisticsMap);
+            //
+        }
+        for(int i = 0; i < facilityList.size(); ++i){
+            Map<String, Object> singleFacility = facilityList.get(i);
+            matchCountMaintainance(singleFacility, infoValueMap, maintainanceSign, venderStatisticsMap);
         }
         addContractCount(venderStatisticsMap, contracts);
         addContractCount(venderStatisticsMap, warranties);

+ 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":"***"
+    }