Browse Source

新增Supplier/contract/query接口

Jxing 6 years ago
parent
commit
25d102e8f4

+ 0 - 1
src/main/java/com/sagacloud/listener/VendersDpCamelContextInitialListener.java

@@ -20,7 +20,6 @@ public class VendersDpCamelContextInitialListener implements ServletContextListe
             camelContext = new DefaultCamelContext();
             camelContext.addRoutes(new InitEnvRoute());
             camelContext.addRoutes(new Route());
-
             camelContext.start();
         } catch (Exception e) {
             e.printStackTrace();

+ 0 - 5
src/main/java/com/sagacloud/route/InitEnvRoute.java

@@ -23,8 +23,6 @@ public class InitEnvRoute extends RouteBuilder {
 
         fromF("timer://simpleTimer?period=30m").to("direct:syn");
 
-
-
         from("direct:syn")
                 .to(dataPlatform + "/mng/project/query?bridgeEndpoint=true&secret=A123456")
                 .process(exchange -> {
@@ -40,9 +38,6 @@ public class InitEnvRoute extends RouteBuilder {
         rest("/syn")
                 .get()
                 .to("direct:syn");
-
-
-
     }
 
 }

+ 7 - 0
src/main/java/com/sagacloud/route/Route.java

@@ -19,6 +19,7 @@ import com.sagacloud.route.processors.PeriodTask.OnTimeTaskProcessor;
 import com.sagacloud.route.processors.PeriodTask.StatisticsProcessor;
 import com.sagacloud.route.processors.VenderMapProcessor;
 import com.sagacloud.route.processors.supplier.SupplierFilter;
+import com.sagacloud.route.processors.supplier.SupplyContractProcessor;
 import com.sagacloud.utils.Const;
 import org.apache.camel.Exchange;
 import org.apache.commons.io.IOUtils;
@@ -89,6 +90,12 @@ public class Route extends ExceptionHandlerBaseRoute {
                 .to(Const.venders + "/manufacturer/specification/query_vender")
                 .process(new SupplierFilter());
 
+        // 获取指定供应商在指定项目内的所有供应合同编号(从数据平台实时获取)
+        rest("/supplier/contract/").post("query")
+                .consumes(MediaType.APPLICATION_JSON)
+                .produces(MediaType.APPLICATION_JSON)
+                .route()
+                .process(SupplyContractProcessor::getContractList);
 
         // 获取在保资产清单
         rest("/insurance/project/").post("query")

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

@@ -11,7 +11,7 @@ import java.util.ArrayList;
 import java.util.Date;
 
 public class OnTimeTaskProcessor implements Processor {
-    public static int[] time = new int[]{4, 0};
+    public static int[] time = new int[]{4, 00};
     private static ArrayList<Long> nextTimeStamps = new ArrayList<>();
     private final int ONEDAY = 86400000;
     private final int ONEMINUTE = 60000;

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

@@ -25,7 +25,7 @@ public class StatisticsProcessor implements Processor {
     @Override
     public void process(Exchange exchange) throws Exception {
         String projectId = exchange.getIn().getBody(String.class);
-        System.out.println("这里正在统计的是Project:" + projectId);
+        //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)
@@ -55,6 +55,7 @@ public class StatisticsProcessor implements Processor {
         }
         ps.setProjectId(projectId);
         exchange.getIn().setBody(JSONObject.toJSONString(ps));
+        //System.out.println("项目:" + projectId + JSONObject.toJSONString(ps));
         exchange.getIn().setHeader(Exchange.HTTP_URI, String.join("", InitEnvRoute.venders, "/auxiliary/property/create_by_project?method=POST"));
     }
 

+ 58 - 0
src/main/java/com/sagacloud/route/processors/supplier/SupplyContractProcessor.java

@@ -0,0 +1,58 @@
+package com.sagacloud.route.processors.supplier;
+/*
+ * Author: Jxing
+ * Create Time: 2018/11/12
+ */
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.sagacloud.utils.ExternalUrlUtil;
+import com.sagacloud.utils.HttpRequests;
+import com.sagacloud.utils.VendersUtil;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.http.HttpRequest;
+
+import java.util.ArrayList;
+import java.util.Set;
+
+public class SupplyContractProcessor implements Processor {
+    @Override
+    public void process(Exchange exchange) throws Exception {
+
+    }
+
+    public static void getContractList(Exchange exchange) throws Exception{
+        String jsonStr = exchange.getIn().getBody(String.class);
+        JSONObject json = JSONObject.parseObject(jsonStr);
+        String pjId = json.getString("projectId");
+        String venderId = json.getString("venderId");
+        if(pjId == null || !pjId.startsWith("Pj") || venderId == null || !venderId.startsWith("V"))
+            throw new Exception("输入参数不正确");
+        JSONObject body = new JSONObject();
+        JSONObject criteria = new JSONObject();
+        body.put("criteria", criteria);
+        JSONArray type = new JSONArray();
+        type.add("Pe");
+        JSONArray DPSupplierID = new JSONArray();
+        DPSupplierID.add(venderId);
+        criteria.put("type", type);
+        criteria.put("DPSupplierID", DPSupplierID);
+        String result = null;
+        try {
+            result = HttpRequests.sendPost(ExternalUrlUtil.getInQueryUrl(pjId), body.toString());
+        }catch (Exception ex){
+            throw new Exception("数据平台请求失败");
+        }
+        if(result == null)
+            throw new Exception("数据平台请求失败");
+        JSONObject resultObject = JSONObject.parseObject(result);
+        if(resultObject == null || resultObject.getString("Result") == null || !resultObject.getString("Result").equals("success"))
+            throw new Exception("数据平台请求失败");
+        Set<Object> contractNoSet = VendersUtil.getInfoSet(resultObject.getJSONArray("Content"), "SupplierContractID");
+        JSONObject retObj = VendersUtil.successJsonMsg("");
+        JSONArray contractArr = new JSONArray(new ArrayList<>(contractNoSet));
+        retObj.put("contractId", contractArr);
+        exchange.getOut().setBody(retObj.toString());
+    }
+}

+ 20 - 0
src/main/java/com/sagacloud/utils/ExternalUrlUtil.java

@@ -0,0 +1,20 @@
+package com.sagacloud.utils;
+/*
+ * Author: Jxing
+ * Create Time: 2018/11/12
+ */
+
+import com.sagacloud.cache.ProPasCache;
+
+public class ExternalUrlUtil {
+
+    public static String getDpSuffix(String pjId){
+        return String.join("", "?projectId=", pjId, "&secret=", ProPasCache.getPjSecret(pjId));
+    }
+
+    public static String getInQueryUrl(String pjId)
+    {
+        return String.join("", PropUtil.getProperty("dataPlatform.baseUrl"), "/fast/object/in_query"
+                , getDpSuffix(pjId));
+    }
+}

+ 6 - 0
src/main/java/com/sagacloud/utils/HttpRequests.java

@@ -28,6 +28,9 @@ public class HttpRequests {
         StringBuffer result = new StringBuffer();
         BufferedReader in = null;
         try {
+            // 兼容camel的http4
+            if(urlNameString!= null && urlNameString.startsWith("http4"))
+                urlNameString = urlNameString.replaceFirst("http4", "http");
             //String urlNameString = url + "?" + param;
             URL realUrl = new URL(urlNameString);
             // 打开和URL之间的连接
@@ -83,6 +86,9 @@ public class HttpRequests {
         BufferedReader in = null;
         String result = "";
         try {
+            // 兼容camel的http4
+            if(url!= null && url.startsWith("http4"))
+                url = url.replaceFirst("http4", "http");
             URL realUrl = new URL(url);
             // 打开和URL之间的连接
             URLConnection conn = realUrl.openConnection();

+ 0 - 7
src/main/java/com/sagacloud/utils/ManufacturerUtil.java

@@ -1,7 +0,0 @@
-package com.sagacloud.utils;
-
-/**
- * Created by Xiaoyu on 2018/7/12
- */
-public class ManufacturerUtil {
-}

+ 20 - 0
src/main/java/com/sagacloud/utils/VendersUtil.java

@@ -62,4 +62,24 @@ public class VendersUtil {
         }
         return set;
     }
+
+    public static Set<Object> getInfoSet(JSONArray content, String infoCode) {
+        Set<Object> set = new HashSet<>();
+        if(content == null)
+            return set;
+        for(int i = 0; i < content.size(); ++i){
+            JSONObject single = content.getJSONObject(i);
+            if(single == null)
+                continue;
+            JSONObject infos = single.getJSONObject("infos");
+            if(infos == null)
+                continue;
+            Object value = infos.get(infoCode);
+            if(value == null)
+                continue;
+            if(!set.contains(value))
+                set.add(value);
+        }
+        return set;
+    }
 }

+ 20 - 1
src/main/resources/documentation.md

@@ -67,8 +67,27 @@ post体:
     {
         "result":"failure",
         "resultMsg":"***"
-    }             
+    }
+## 获取指定供应商在指定项目内的所有供应合同编号(从数据平台实时获取)
+    http://<host>:<port>/venders-dp/supplier/contract/query
+post体:
+    
+    {
+        "projectId":"",             // String, 必填, 项目id  
+        "venderId":"",              // String, 必填, 供应商id
+    }
+返回:
 
+    {
+        "result":"success",
+        "resultMsg":"",
+        "contract":["", "", "", ""]
+    }
+    
+    {
+        "result":"failure",
+        "resultMsg":"***"
+    }
 #保险商
 ##获取在保资产清单[辅助服务接口]
     http://<host>:<port>/venders-dp/insurance/project/query     

+ 6 - 3
src/main/resources/test/config.properties

@@ -1,4 +1,7 @@
-dataPlatform.baseUrl=http://192.168.20.225:8080/data-platform-3
-#venders.baseUrl=http://192.168.20.225:8080/venders
-venders.baseUrl=http://101.200.32.13:28888/venders
+dataPlatform.baseUrl=http4://192.168.100.225:8080/data-platform-3
+#venders.baseUrl=http4://192.168.100.225:8080/venders
+
+
+venders.baseUrl=http://localhost:8080
+#venders.baseUrl=http://localhost:8080
 

+ 2 - 6
venders-dp.iml

@@ -9,10 +9,6 @@
         <webroots>
           <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
         </webroots>
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
       </configuration>
     </facet>
   </component>
@@ -22,7 +18,6 @@
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />
@@ -55,9 +50,10 @@
     <orderEntry type="library" name="Maven: org.apache.camel:camel-core:2.19.0" level="project" />
     <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.11" level="project" />
     <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.11" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.camel:camel-http:2.19.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.camel:camel-http4:2.19.0" level="project" />
     <orderEntry type="library" name="Maven: org.apache.camel:camel-http-common:2.19.0" level="project" />
     <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.camel:camel-http:2.19.0" level="project" />
     <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
     <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.camel:camel-servlet:2.19.0" level="project" />