Przeglądaj źródła

优化消火栓末端、喷淋末端、液位、消火栓主管水压和喷淋泵主管水压数据同步模块的推送逻辑

james 6 dni temu
rodzic
commit
380f7e583b

+ 1 - 0
agbox-topsail/pom.xml

@@ -91,6 +91,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.2.6.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>

+ 18 - 32
agbox-topsail/src/main/java/com/usky/topsail/service/impl/SpSj2017ServiceImpl.java

@@ -16,9 +16,17 @@ import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.topsail.service.config.mqtt.MqttOutConfig;
 import com.usky.topsail.service.util.HttpClientUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
+import java.nio.charset.StandardCharsets;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -151,15 +159,9 @@ public class SpSj2017ServiceImpl extends AbstractCrudService<SpSj2017Mapper, SpS
                         String httpOrgCreateTestRtn = HttpClientUtil.doPost(httpurl, map, "utf-8");
 
                         //增加水表数据推送总队逻辑
-                        //QString("{\"SubType\":6,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid)
-                        HashMap<String, String> map1 = new HashMap<>();
-                        map1.put("SubType", "2");
-                        map1.put("DeviceId", device_code);
-                        map1.put("InsertId", String.valueOf(insertid1));
-                        map1.put("Confirmed", "false");
-                        String httpurl1 = "http://47.98.201.187:55335/report";
+                        String data = "SubType=2&DeviceId="+device_code+"&InsertId="+String.valueOf(insertid1)+"&Confirmed="+"false";
 
-                        String response = HttpClientUtil.doPost(httpurl1, map1, "utf-8");
+                        String response = HttpClientUtil.doPost1("47.98.201.187", 55335, "/report", data, "utf-8");
                         System.out.println("http://47.98.201.187:55335/report response:"+response);
                     }else if (alarm.equals("262144")){
                         device_status = "WP2";
@@ -198,15 +200,9 @@ public class SpSj2017ServiceImpl extends AbstractCrudService<SpSj2017Mapper, SpS
                         String httpOrgCreateTestRtn = HttpClientUtil.doPost(httpurl, map, "utf-8");
 
                         //增加水表数据推送总队逻辑
-                        //QString("{\"SubType\":6,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid)
-                        HashMap<String, String> map1 = new HashMap<>();
-                        map1.put("SubType", "2");
-                        map1.put("DeviceId", device_code);
-                        map1.put("InsertId", String.valueOf(insertid1));
-                        map1.put("Confirmed", "false");
-                        String httpurl1 = "http://47.98.201.187:55335/report";
+                        String data = "SubType=2&DeviceId="+device_code+"&InsertId="+String.valueOf(insertid1)+"&Confirmed="+"false";
 
-                        String response = HttpClientUtil.doPost(httpurl1, map1, "utf-8");
+                        String response = HttpClientUtil.doPost1("47.98.201.187", 55335, "/report", data, "utf-8");
                         System.out.println("http://47.98.201.187:55335/report response:"+response);
                     }
                     db.add(dbMap3);
@@ -261,15 +257,9 @@ public class SpSj2017ServiceImpl extends AbstractCrudService<SpSj2017Mapper, SpS
                         String httpOrgCreateTestRtn = HttpClientUtil.doPost(httpurl, map, "utf-8");
 
                         //增加水表数据推送总队逻辑
-                        //QString("{\"SubType\":6,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid)
-                        HashMap<String, String> map1 = new HashMap<>();
-                        map1.put("SubType", "5");
-                        map1.put("DeviceId", device_code);
-                        map1.put("InsertId", String.valueOf(insertid1));
-                        map1.put("Confirmed", "false");
-                        String httpurl1 = "http://47.98.201.187:55335/report";
+                        String data = "SubType=5&DeviceId="+device_code+"&InsertId="+String.valueOf(insertid1)+"&Confirmed="+"false";
 
-                        String response = HttpClientUtil.doPost(httpurl1, map1, "utf-8");
+                        String response = HttpClientUtil.doPost1("47.98.201.187", 55335, "/report", data, "utf-8");
                         System.out.println("http://47.98.201.187:55335/report response:"+response);
                     }else if (alarm.equals("262144")){
                         payloadVO1.put("type","ALARM");
@@ -308,15 +298,9 @@ public class SpSj2017ServiceImpl extends AbstractCrudService<SpSj2017Mapper, SpS
                         String httpOrgCreateTestRtn = HttpClientUtil.doPost(httpurl, map, "utf-8");
 
                         //增加水表数据推送总队逻辑
-                        //QString("{\"SubType\":6,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid)
-                        HashMap<String, String> map1 = new HashMap<>();
-                        map1.put("SubType", "5");
-                        map1.put("DeviceId", device_code);
-                        map1.put("InsertId", String.valueOf(insertid1));
-                        map1.put("Confirmed", "false");
-                        String httpurl1 = "http://47.98.201.187:55335/report";
+                        String data = "SubType=5&DeviceId="+device_code+"&InsertId="+String.valueOf(insertid1)+"&Confirmed="+"false";
 
-                        String response = HttpClientUtil.doPost(httpurl1, map1, "utf-8");
+                        String response = HttpClientUtil.doPost1("47.98.201.187", 55335, "/report", data, "utf-8");
                         System.out.println("http://47.98.201.187:55335/report response:"+response);
                     }
                     db.add(dbMap3);
@@ -342,4 +326,6 @@ public class SpSj2017ServiceImpl extends AbstractCrudService<SpSj2017Mapper, SpS
         aaService.save(aa);
         return true;
     }
+
+
 }

+ 55 - 0
agbox-topsail/src/main/java/com/usky/topsail/service/util/HttpClientUtil.java

@@ -1,5 +1,6 @@
 package com.usky.topsail.service.util;
 
+import org.apache.http.Consts;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
@@ -10,6 +11,8 @@ import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
 import org.springframework.stereotype.Repository;
 
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -48,4 +51,56 @@ public class HttpClientUtil {
         }
         return result;
     }
+
+    public static String doPost1(String destIp, int destPort, String destPath, String data,  String charset) {
+        HttpClient httpClient = null;
+        HttpPost httpPost = null;
+        String result = null;
+        String httpUrl = String.format("http://%s:%d%s", destIp, destPort, destPath);
+        try {
+            httpClient = new SSLClient();
+            httpPost = new HttpPost(httpUrl);
+
+            httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");
+            httpPost.addHeader("Accept", "*/*");
+            httpPost.addHeader("Connection", "keep-alive");
+            httpPost.addHeader("Cache-Control", "no-cache");
+            httpPost.addHeader("Accept-Encoding", "gzip");
+            httpPost.addHeader("Accept-Language", "zh-CN,en,*");
+            httpPost.addHeader("User-Agent", "Mozilla/5.0");
+            httpPost.addHeader("Host", String.format("%s:%d", destIp, destPort));
+            // 手动设置 Content-Length(和 Qt 的 arg(data.length()) 完全一致)
+            httpPost.addHeader("Content-Length", String.valueOf(data.getBytes(StandardCharsets.UTF_8).length));
+            //设置参数
+            // 3. 解析表单参数(对应 Qt 的 %5 占位符)
+            if (data != null && !data.isEmpty()) {
+                List<BasicNameValuePair> params = new ArrayList<>();
+                String[] keyValuePairs = data.split("&");
+                for (String pair : keyValuePairs) {
+                    String[] keyValue = pair.split("=");
+                    if (keyValue.length == 2) {
+                        // URL 解码(处理中文/特殊字符,和 Qt 编码逻辑一致)
+                        String key = URLDecoder.decode(keyValue[0], charset);
+                        String value = URLDecoder.decode(keyValue[1], charset);
+                        params.add(new BasicNameValuePair(key, value));
+                    }
+                }
+                // 封装表单参数(application/x-www-form-urlencoded 格式)
+                httpPost.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
+            }
+            HttpResponse response = httpClient.execute(httpPost);
+            System.out.println("HttpPost1 +++++++++++++++ " + httpUrl);
+            if (response != null) {
+                HttpEntity resEntity = response.getEntity();
+                if (resEntity != null) {
+                    result = EntityUtils.toString(resEntity, charset);
+                }
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return result;
+    }
+
+
 }