浏览代码

2021/7/8 天气接口&camera list接口修改

yinhao 4 年之前
父节点
当前提交
d8f78e0622

+ 8 - 1
huimv-smart-datacollection/pom.xml

@@ -44,6 +44,14 @@
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.2.3</version>
+            <classifier>jdk15</classifier>
+        </dependency>
+
     </dependencies>
     <dependencyManagement>
         <dependencies>
@@ -73,5 +81,4 @@
             </plugin>
         </plugins>
     </build>
-
 </project>

+ 4 - 1
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/HuimvSmartDataCollectionApplication.java

@@ -1,11 +1,14 @@
 package com.huimv.datacollection;
 
+import cn.hutool.http.HttpUtil;
+import com.google.gson.Gson;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 
+import java.nio.charset.Charset;
+
 /**
  * @author yinhao
  * @version 1.0

+ 31 - 0
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/Main.java

@@ -0,0 +1,31 @@
+package com.huimv.datacollection;
+
+import cn.hutool.http.HttpUtil;
+
+import java.nio.charset.Charset;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/8 15:26
+ */
+public class Main {
+
+    public static void main(String[] args) {
+
+        System.out.println("测试天气");
+        String province = "浙江省";
+        String city = "杭州市";
+        String county = "余杭区";
+        String url ="https://wis.qq.com/weather/common";
+//      String param = "source=xw&weather_type=forecast_1h|forecast_24h|index|alarm|limit|tips&province="+province+"&city="+city+"&county="+county;
+       String param =  "source=xw&weather_type=observe|forecast_1h|forecast_24h|index|alarm|limit|tips&province="+province+"&city="+city+"&county="+county;
+        String result = HttpUtil.urlWithForm(url, param, Charset.defaultCharset(), true);
+        System.out.println(result);
+        String s = HttpUtil.get(result);
+        System.out.println(s);
+    }
+}

+ 152 - 0
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/SimpleWeather.java

@@ -0,0 +1,152 @@
+package com.huimv.datacollection;
+
+import net.sf.json.JSONObject;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author yinhao
+ * @version 1.0
+ * @date 2021/07/08 16:27
+ */
+public class SimpleWeather {
+    /**
+     * 天气情况查询接口地址
+     */
+    public static String API_URL = "http://apis.juhe.cn/simpleWeather/query";
+    /**
+     * 请求key
+     */
+    public static String API_KEY = "108f91d439908e5d2da86cc8881dd3db";
+
+    public static void main(String[] args) {
+        String cityName = "常州";
+        queryWeather(cityName);
+    }
+
+    /**
+     * 根据城市名查询天气情况
+     *
+     * @param cityName
+     */
+    public static void queryWeather(String cityName) {
+        //组合参数
+        Map<String, Object> params = new HashMap<>();
+        params.put("city", cityName);
+        params.put("key", API_KEY);
+        String queryParams = urlEncode(params);
+        String response = doGet(API_URL, queryParams);
+        System.out.println(response);
+        try {
+            JSONObject jsonObject = JSONObject.fromObject(response);
+            int errorCode = jsonObject.getInt("error_code");
+            if (errorCode == 0) {
+                System.out.println("调用接口成功");
+                JSONObject result = jsonObject.getJSONObject("result");
+                JSONObject realtime = result.getJSONObject("realtime");
+                System.out.printf("城市:%s%n", result.getString("city"));
+                System.out.printf("天气:%s%n", realtime.getString("info"));
+                System.out.printf("温度:%s%n", realtime.getString("temperature"));
+                System.out.printf("湿度:%s%n", realtime.getString("humidity"));
+                System.out.printf("风向:%s%n", realtime.getString("direct"));
+                System.out.printf("风力:%s%n", realtime.getString("power"));
+                System.out.printf("空气质量:%s%n", realtime.getString("aqi"));
+            } else {
+                System.out.println("调用接口失败:" + jsonObject.getString("reason"));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * get方式的http请求
+     *
+     * @param httpUrl 请求地址
+     * @return 返回结果
+     */
+    public static String doGet(String httpUrl, String queryParams) {
+        HttpURLConnection connection = null;
+        InputStream inputStream = null;
+        BufferedReader bufferedReader = null;
+        //返回结果字符串
+        String result = null;
+        try {
+            //创建远程url连接对象
+            URL url = new URL(new StringBuffer(httpUrl).append("?").append(queryParams).toString());
+            //通过远程url连接对象打开一个连接,强转成httpURLConnection类
+            connection = (HttpURLConnection) url.openConnection();
+            //设置连接方式:get
+            connection.setRequestMethod("GET");
+            //设置连接主机服务器的超时时间:5000毫秒
+            connection.setConnectTimeout(5000);
+            //设置读取远程返回的数据时间:6000毫秒
+            connection.setReadTimeout(6000);
+            //发送请求
+            connection.connect();
+            //通过connection连接,获取输入流
+            if (connection.getResponseCode() == 200) {
+                inputStream = connection.getInputStream();
+                //封装输入流,并指定字符集
+                bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
+                //存放数据
+                StringBuilder sbf = new StringBuilder();
+                String temp;
+                while ((temp = bufferedReader.readLine()) != null) {
+                    sbf.append(temp);
+                    sbf.append(System.getProperty("line.separator"));
+                }
+                result = sbf.toString();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            //关闭资源
+            if (null != bufferedReader) {
+                try {
+                    bufferedReader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != inputStream) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (connection != null) {
+                //关闭远程连接
+                connection.disconnect();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * 将map型转为请求参数型
+     *
+     * @param data
+     * @return
+     */
+    public static String urlEncode(Map<String, ?> data) {
+        StringBuilder sb = new StringBuilder();
+        for (Map.Entry<String, ?> i : data.entrySet()) {
+            try {
+                sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+        String result = sb.toString();
+        result = result.substring(0, result.lastIndexOf("&"));
+        return result;
+    }
+}

+ 6 - 2
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/tcp/IClientDataPacketService.java

@@ -1,4 +1,4 @@
-package com.huimv.datacollection.tcp;
+package com.huimv.datacollection.service;
 
 import java.text.ParseException;
 
@@ -15,8 +15,12 @@ public interface IClientDataPacketService {
      * @return
      * @throws ParseException
      */
-    String handleClientSendPacket(String clientMessage) throws ParseException;
+    void handleClientSendPacket(String clientMessage) throws ParseException;
 
+    /**
+     * 测试接口
+     * @throws ParseException
+     */
     void interfaceTest() throws ParseException;
 
 }

+ 4 - 34
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/tcp/ClientDataPacketServiceImpl.java

@@ -1,4 +1,4 @@
-package com.huimv.datacollection.tcp;
+package com.huimv.datacollection.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.huimv.common.exception.RRException;
@@ -9,6 +9,7 @@ import com.huimv.datacollection.entity.IndoorEnvironmentEntity;
 import com.huimv.datacollection.enums.CmdEnum;
 import com.huimv.datacollection.feign.ManagementFeignService;
 import com.huimv.datacollection.service.HandleDataPackageService;
+import com.huimv.datacollection.service.IClientDataPacketService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -36,11 +37,11 @@ public class ClientDataPacketServiceImpl implements IClientDataPacketService {
     private HandleDataPackageService handleDataPackageService;
 
     @Override
-    public String handleClientSendPacket(String clientMessageTxt) {
+    public void handleClientSendPacket(String clientMessageTxt) {
 
         if (clientMessageTxt == null || clientMessageTxt.isEmpty()) {
             log.error("本地提交数据包为空.");
-            return null;
+            return;
         }
 
         String matcher = "[+]";
@@ -101,37 +102,6 @@ public class ClientDataPacketServiceImpl implements IClientDataPacketService {
             default:
                 break;
         }
-//        int cmdNum = Integer.parseInt(cmd);
-//
-//
-//        StringBuilder echoResultSb = new StringBuilder();
-        // 校验后边再做;
-//        if (Integer.parseInt(cmd) == 1) {
-//            // 绑定序列号返回的设备id
-//            return sendPackageService.getDeviceId(clientMessageArray);
-//        } else if (Integer.parseInt(cmd) == 2) {
-//            // 处理获取服务器时间
-//            return sendPackageService.getServerDateTime(clientMessageArray);
-//        } else if (Integer.parseInt(cmd) == 3) {
-//            // 处理心跳包
-//            return sendPackageService.getHeartbeatBag(clientMessageArray);
-//        } else if (Integer.parseInt(cmd) == 4) {
-//            // 处理温度上传
-//            return receivePackageSerivce.handleEartagTemperature(clientMessageArray);
-//        } else if (Integer.parseInt(cmd) == 5) {
-//            // 处理湿度上传
-//            return receivePackageSerivce.handleEartagDampness(clientMessageArray);
-//        } else if (Integer.parseInt(cmd) == 6) {
-//            // 处理耳标数据
-//            System.out.println("处理耳标数据");
-//            System.out.println(clientMessageTxt);
-//            return receivePackageSerivce.handleEartagData(clientMessageArray).toString();
-//
-//        } else {
-//            log.error("出错:当前命令cmd>>[" + cmd + "]未做任何处理.");
-//            return null;
-//        }
-        return null;
     }
 
 

+ 9 - 3
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/tcp/Server.java

@@ -1,6 +1,7 @@
 package com.huimv.datacollection.tcp;
 
 
+import com.huimv.datacollection.service.IClientDataPacketService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
@@ -9,6 +10,11 @@ import java.io.IOException;
 import java.net.ServerSocket;
 import java.net.Socket;
 
+/**
+ * @author yinhao
+ * @version 1.0
+ * @date 2021/07/08 13:40
+ */
 @Component
 public class Server implements CommandLineRunner {
 
@@ -18,16 +24,14 @@ public class Server implements CommandLineRunner {
     @Override
     public void run(String... args) throws Exception {
         try {
-
             // 初始化服务端socket连接, 并监听8888端口的socket请求
             ServerSocket serverSocket = new ServerSocket(8888);
 
             System.out.println("****** I am Server, now begin to wait the client ******");
-
             int count = 0;
 
             // 处理socket请求
-            Socket socket = null;
+            Socket socket;
             while (true) {
                 socket = serverSocket.accept();
                 ServerThread serverThread = new ServerThread(socket, iClientDataPacketService);
@@ -39,6 +43,8 @@ public class Server implements CommandLineRunner {
             }
         } catch (IOException e) {
             e.printStackTrace();
+        } finally {
+
         }
     }
 }

+ 3 - 26
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/tcp/ServerThread.java

@@ -2,6 +2,8 @@ package com.huimv.datacollection.tcp;
 
 
 
+import com.huimv.datacollection.service.IClientDataPacketService;
+
 import java.io.*;
 import java.net.Socket;
 import java.text.ParseException;
@@ -25,10 +27,6 @@ public class ServerThread extends Thread {
     @Override
     public void run() {
         InputStream inputStream = null;
-        InputStreamReader inputStreamReader = null;
-        BufferedReader bufferedReader = null;
-        OutputStream outputStream = null;
-        PrintWriter printWriter = null;
 
         try {
 
@@ -40,35 +38,14 @@ public class ServerThread extends Thread {
             packet = packet.trim();
 
             // 处理数据包
-//             String ss = iClientDataPacketService.handleClientSendPacket(packet);
-             iClientDataPacketService.interfaceTest();
+            iClientDataPacketService.handleClientSendPacket(packet);
 
-//            outputStream = socket.getOutputStream();
-//            outputStream.write(ss.getBytes());
-//            socket.shutdownInput();
 
         } catch (IOException | ParseException e) {
             e.printStackTrace();
         } finally {
             // 关闭资源
             try {
-
-                if (printWriter != null) {
-                    printWriter.close();
-                }
-                if (outputStream != null) {
-                    outputStream.close();
-
-                }
-                if (bufferedReader != null) {
-                    bufferedReader.close();
-                }
-                if (inputStreamReader != null) {
-                    inputStreamReader.close();
-                }
-                if (inputStream != null) {
-                    inputStream.close();
-                }
                 if (socket != null) {
                     socket.close();
                 }

+ 2 - 2
huimv-smart-datacollection/src/main/resources/application-dev.yml

@@ -104,5 +104,5 @@ feign:
   client:
     config:
       default:
-        connectTimeout: 10000
-        readTimeout: 600000
+        connectTimeout: 5000
+        readTimeout: 5000

+ 4 - 0
huimv-smart-datacollection/src/main/resources/logback-spring.xml

@@ -9,6 +9,8 @@
         <logger name="org.springframework.web" level="INFO"/>
         <logger name="org.springboot.sample" level="INFO" />
         <logger name="com.huimv" level="DEBUG" />
+        <logger name="com.alibaba.druid.pool" level="ERROR"/>
+        <logger name="org.mybatis.spring.mapper.ClassPathMapperScanner" level="ERROR"/>
     </springProfile>
 
     <!-- 生产环境 -->
@@ -16,6 +18,8 @@
         <logger name="org.springframework.web" level="ERROR"/>
         <logger name="org.springboot.sample" level="ERROR" />
         <logger name="com.huimv" level="ERROR" />
+        <logger name="com.alibaba.druid.pool" level="ERROR"/>
+        <logger name="org.mybatis.spring.mapper.ClassPathMapperScanner" level="ERROR"/>
     </springProfile>
 
 </configuration>

+ 3 - 0
huimv-smart-datacollection/src/test/java/com/huimv/datacollection/HuimvSmartDatacollectionApplicationTests.java

@@ -1,8 +1,11 @@
 package com.huimv.datacollection;
 
+import cn.hutool.http.HttpUtil;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.nio.charset.Charset;
+
 @SpringBootTest
 class HuimvSmartDatacollectionApplicationTests {
 

+ 1 - 1
huimv-smart-management/src/main/java/com/huimv/management/controller/PastureAreaController.java

@@ -91,7 +91,7 @@ public class PastureAreaController {
      * 查询所有
      */
     @RequestMapping("/findAll")
-    public R findAll(@RequestBody Integer formFarmId){
+    public R findAll(Integer formFarmId){
         if (formFarmId == null){
             return R.error("请先选择牧场");
         }

+ 21 - 19
huimv-smart-management/src/main/java/com/huimv/management/service/impl/CameraInfoServiceImpl.java

@@ -13,6 +13,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -42,21 +43,22 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoDao, CameraInfo
         //根据牧场查询
         String farmId = (String) params.get("fromFarmId");
 
-        QueryWrapper<CameraInfoEntity> wrapper = new QueryWrapper<CameraInfoEntity>();
-        wrapper.eq(StringUtils.isNotBlank(farmId),"farm_id",farmId);
+        QueryWrapper<CameraInfoEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(farmId), "farm_id", farmId);
 
         //关键词
-        String keyword = (String)params.get("keyword");
-        if (StringUtils.isNotBlank(keyword)){
-            wrapper.like("name",keyword);
-            wrapper.like("area_name",keyword);
-            wrapper.like("ip",keyword);
-            wrapper.like("camera_type",keyword);
-
+        String keyword = (String) params.get("keyword");
+        if (StringUtils.isNotBlank(keyword)) {
+            wrapper.like("name", keyword);
+            wrapper.or().like("area_name", keyword);
+            wrapper.or().like("ip", keyword);
+            wrapper.or().like("camera_type", keyword);
         }
 
-        Integer areaId = (Integer)params.get("areaId");
-        wrapper.eq(areaId != null,"area_id",areaId);
+        String areaId = (String) params.get("areaId");
+        if (StringUtils.isNotBlank(areaId)) {
+            wrapper.eq("area_id", Integer.parseInt(areaId));
+        }
 
 
         IPage<CameraInfoEntity> page = this.page(
@@ -70,21 +72,21 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoDao, CameraInfo
     @Override
     public List getCameraDetails(Integer cameraId) {
         List cameraDetailsList = new ArrayList();
-        CameraInfoEntity cameraInfo  = cameraInfoDao.selectById(cameraId);
+        CameraInfoEntity cameraInfo = cameraInfoDao.selectById(cameraId);
         Integer farmId = cameraInfo.getFarmId();
         QueryWrapper<PublicNetworkEntity> urlWrapper = new QueryWrapper<PublicNetworkEntity>();
-        urlWrapper.eq("farm_id",farmId);
+        urlWrapper.eq("farm_id", farmId);
         String url = publicNetworkDao.selectOne(urlWrapper).getUrl();
 
         Map map = new HashMap();
-        String cameraAccount =  cameraInfo.getAccount();
-        String cameraPassword =  cameraInfo.getPassword();
+        String cameraAccount = cameraInfo.getAccount();
+        String cameraPassword = cameraInfo.getPassword();
         String camerIp = cameraInfo.getIp();
         Integer areaId = cameraInfo.getAreaId();
         String rtsp = cameraInfo.getRtsp();
-        map.put("wsUrl","ws://"+url+"/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword+"%40"+camerIp);
-        map.put("rtspUrl","rtsp://"+cameraAccount+":"+cameraPassword+"@"+camerIp+rtsp);
-        map.put("areaId",areaId);
+        map.put("wsUrl", "ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+        map.put("rtspUrl", "rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
+        map.put("areaId", areaId);
 
         cameraDetailsList.add(map);
 
@@ -95,7 +97,7 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoDao, CameraInfo
     @Override
     public List getByAreaId(Integer areaId) {
         LambdaQueryWrapper<CameraInfoEntity> wrapper = Wrappers.lambdaQuery();
-        wrapper.eq(CameraInfoEntity::getAreaId,areaId);
+        wrapper.eq(CameraInfoEntity::getAreaId, areaId);
 
         List<CameraInfoEntity> cameraInfoEntities = cameraInfoDao.selectList(wrapper);
         return cameraInfoEntities;