瀏覽代碼

添加功能:调用省平台接口,把耳标数据同步过去。

zhuoning 2 年之前
父節點
當前提交
bb825f3643

+ 64 - 0
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/config/RestTemplateConfig.java

@@ -0,0 +1,64 @@
+package com.huimv.eartag2.eartag.config;
+
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Configuration
+public class RestTemplateConfig {
+    @Bean
+    public RestTemplate restTemplate() {
+        return new RestTemplate(httpRequestFactory());
+    }
+
+    @Bean
+    public ClientHttpRequestFactory httpRequestFactory() {
+        return new HttpComponentsClientHttpRequestFactory(httpClient());
+    }
+
+    @Bean
+    public HttpClient httpClient() {
+        Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
+                .register("http", PlainConnectionSocketFactory.getSocketFactory())
+                .register("https", SSLConnectionSocketFactory.getSocketFactory())
+                .build();
+        PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager(registry);
+        //最大连接数
+        poolingHttpClientConnectionManager.setMaxTotal(200);
+        //最大路由数
+        poolingHttpClientConnectionManager.setDefaultMaxPerRoute(100);
+        //定义不活动的时间
+        poolingHttpClientConnectionManager.setValidateAfterInactivity(2000);
+        RequestConfig requestConfig = RequestConfig.custom()
+                //服务器返回数据的时间,超时抛出read timeout
+                .setSocketTimeout(65000)
+                //连接上服务器的时间,超时抛出connect timeout
+                .setConnectTimeout(5000)
+                //从连接池中获取的超时时间,超时未拿到连接会报错ConnectionTimeoutException:Timeout waiting for connection from pool
+                .setConnectionRequestTimeout(1000)
+                .build();
+        return HttpClientBuilder.create()
+                .setDefaultRequestConfig(requestConfig)
+                .setConnectionManager(poolingHttpClientConnectionManager)
+                .build();
+    }
+}

+ 2 - 0
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java

@@ -72,6 +72,8 @@ public class EartagListener {
         if (type.trim().equalsIgnoreCase("eartag")) {
             //{处理耳标数据}
             eartagService.handleEartag(dataJo);
+            //将耳标数据发送到省平台
+            eartagService.sendSowProvincePlatform(dataJo,askText);
         }
     }
 

+ 2 - 1
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/IEartagService.java

@@ -2,7 +2,6 @@ package com.huimv.eartag2.eartag.service;
 
 import com.alibaba.fastjson.JSONObject;
 
-import java.sql.Timestamp;
 import java.text.ParseException;
 
 public interface IEartagService {
@@ -12,6 +11,8 @@ public interface IEartagService {
     //
     void handleEartag(JSONObject dataJo) throws ParseException;
 
+    void sendSowProvincePlatform(JSONObject dataJo, String askText);
+
     // 统计指定是时间内的耳标上传次数
 //    Boolean countTimesByInTime(String earmark, Timestamp nowTimestamp);
 }

+ 39 - 2
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -12,13 +12,13 @@ import com.huimv.eartag2.eartag.service.IEartagService;
 //import com.huimv.eartag2.manage2.mapper.EartagData2Mapper;
 //import com.huimv.eartag2.manage2.pojo.EartagData2;
 //import com.huimv.eartag2.manage2.service.IEartagData2Service;
-import javafx.beans.binding.BooleanBinding;
+import com.huimv.eartag2.eartag.vo.EartagVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Example;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
@@ -92,6 +92,11 @@ public class EartagServiceImpl implements IEartagService {
     private BasePigpenEntityRepo basePigpenRepo;
     @Autowired
     private BizBaseStageEntityRepo bizBaseStageRepo;
+    @Autowired
+    private BaseFarmRepo baseFarmRepo;
+    @Autowired
+    private RestTemplate restTemplate;
+
     @Override
     public void handleEartag(JSONObject dataJo) throws ParseException {
         //设备编码
@@ -159,6 +164,38 @@ public class EartagServiceImpl implements IEartagService {
         }
     }
 
+    @Override
+    public void sendSowProvincePlatform(JSONObject dataJo, String askText) {
+        // =====================================================================
+        // 判断耳标-->采集器(基站)-->判断该牧场是否被允许发送耳标数据到省平台;
+        // 调用省平台接口,发送耳标数据;
+        // 省平台接口:接收数据并发送到耳标队列
+        // =====================================================================
+        System.out.println("处理发送到省平台的数据>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>="+dataJo);
+        String earmark = dataJo.getString("earmark");
+        System.out.println(">>>>>>>>>>>>>>>earmark="+earmark);
+        //根据耳标查询耳标注册表
+        EartagEartagRegister2Entity eartagRegister2Entity = eartagEartagRegister2EntityRepo.getOneByEarmark(earmark);
+        if(eartagRegister2Entity != null){
+            String farmId = eartagRegister2Entity.getFarmId();
+            System.out.println("farmId>>"+farmId);
+            BaseFarmEntity BaseFarmEntity = baseFarmRepo.getFarmByFarmId(farmId);
+            System.out.println("是否允许发送到省平台:"+BaseFarmEntity.getProvinceStatus());
+            //provinceStatus=1,表示允许将耳标数据同步到省平台
+            if(BaseFarmEntity.getProvinceStatus() == 1){
+                //调用省平台接口同步耳标数据过去
+                System.out.println("调用省平台接口同步耳标数据过去");
+                //////////////////////////////////////////////////////////////////////////////
+                String url = "http://122.112.224.199:9501/syncEartag";
+                System.out.println("## url>>"+url);
+                EartagVo eartagVo = new EartagVo();
+                eartagVo.setEartag(askText);
+                restTemplate.postForObject(url,eartagVo,String.class);
+            }
+        }
+
+    }
+
     //--农户耳标注册
     private void updateEartagRegisterForFarmer(String earmark, String deviceCode, String bat, Timestamp nowTimestamp, java.sql.Date todayDate, String farmId, JSONObject eartagJo) {
         System.out.println(" ============================ 更新农户耳标数据 ============================ ");

+ 28 - 0
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/vo/EartagVo.java

@@ -0,0 +1,28 @@
+package com.huimv.eartag2.eartag.vo;
+
+/**
+ * @Project : huimv-eartag2-platform
+ * @Package : ${}
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2022/11/30
+ **/
+public class EartagVo {
+    private String eartag;
+
+    public String getEartag() {
+        return eartag;
+    }
+
+    public void setEartag(String eartag) {
+        this.eartag = eartag;
+    }
+
+    @Override
+    public String toString() {
+        return "EartagVo{" +
+                "eartag='" + eartag + '\'' +
+                '}';
+    }
+}