diff --git a/pom.xml b/pom.xml
index e46b6d8..b0bd12d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,6 @@
17
UTF-8
3.5.1
- 2.3.31
diff --git a/src/main/java/com/muyu/controller/IndexController.java b/src/main/java/com/muyu/controller/IndexController.java
index 39906e0..baac24c 100644
--- a/src/main/java/com/muyu/controller/IndexController.java
+++ b/src/main/java/com/muyu/controller/IndexController.java
@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
@Log4j2
@Controller
public class IndexController {
+
@RequestMapping("/")
public String hello(){
log.debug("重定向到 - /static/index 页面");
diff --git a/src/main/java/com/muyu/controller/VerifyController.java b/src/main/java/com/muyu/controller/VerifyController.java
index 6dd6b8f..4e80a51 100644
--- a/src/main/java/com/muyu/controller/VerifyController.java
+++ b/src/main/java/com/muyu/controller/VerifyController.java
@@ -1,6 +1,8 @@
package com.muyu.controller;
import com.muyu.common.Result;
+import com.muyu.domain.model.MqttServerModel;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -14,12 +16,25 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/verify")
public class VerifyController {
+
+ @Value("${mqtt.server.host}")
+ private String broker;
+
+ @Value("${mqtt.server.topic}")
+ private String topic;
+
+
/**
* 新增车辆默认上线主题
* @return 默认返回test
*/
@PostMapping("/vehicleConnection")
- public Result vehicleConnection(){
- return Result.success("test");
+ public Result vehicleConnection(){
+ return Result.success(
+ MqttServerModel.builder()
+ .broker(broker)
+ .topic(topic)
+ .build()
+ );
}
}
diff --git a/src/main/java/com/muyu/domain/model/MqttServerModel.java b/src/main/java/com/muyu/domain/model/MqttServerModel.java
new file mode 100644
index 0000000..162c628
--- /dev/null
+++ b/src/main/java/com/muyu/domain/model/MqttServerModel.java
@@ -0,0 +1,28 @@
+package com.muyu.domain.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author DongZl
+ * @description: Mqtt服务器模型
+ * @Date 2024-3-26 上午 09:53
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MqttServerModel {
+
+ /**
+ * MQTT服务节点
+ */
+ private String broker;
+
+ /**
+ * MQTT订阅主题
+ */
+ private String topic;
+}
diff --git a/src/main/java/com/muyu/service/impl/VehicleInstanceServiceImpl.java b/src/main/java/com/muyu/service/impl/VehicleInstanceServiceImpl.java
index 3b5da8a..5ab2368 100644
--- a/src/main/java/com/muyu/service/impl/VehicleInstanceServiceImpl.java
+++ b/src/main/java/com/muyu/service/impl/VehicleInstanceServiceImpl.java
@@ -1,18 +1,14 @@
package com.muyu.service.impl;
-import com.alibaba.fastjson2.JSONArray;
import com.muyu.common.PageList;
import com.muyu.common.Result;
-import com.muyu.common.pool.FixedThreadPool;
-import com.muyu.domain.PositionRouteInfo;
import com.muyu.domain.Vehicle;
+import com.muyu.domain.model.MqttServerModel;
import com.muyu.domain.model.PositionModel;
-import com.muyu.domain.model.TaskModel;
import com.muyu.domain.req.CheckPositionReq;
import com.muyu.domain.req.GearReq;
import com.muyu.domain.req.MsgReq;
import com.muyu.domain.req.VehicleInstanceListReq;
-import com.muyu.domain.resp.UnifiedTaskResp;
import com.muyu.domain.resp.VehicleInstanceResp;
import com.muyu.service.PositionRouteService;
import com.muyu.service.VehicleInstanceService;
@@ -27,15 +23,11 @@ import com.muyu.vehicle.model.properties.MqttProperties;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List;
-import java.util.Random;
import java.util.UUID;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
/**
@@ -54,9 +46,6 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
@Autowired
private ClientAdmin clientAdmin;
- @Value("${mqtt.server.host}")
- private String broker;
-
/**
* 根据车辆生成车辆实例
*
@@ -122,14 +111,15 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
.userName(MD5Util.encrypted(vin+timestamp))
.nonce(MD5Util.encrypted(UUID.randomUUID().toString().replace("-", "")))
.build();
- Result result = clientAdmin.vehicleConnection(connectionReq);
+ Result result = clientAdmin.vehicleConnection(connectionReq);
if (result.getCode() != 200){
log.error("车辆:[{}],申请上线异常:[{}]", vin, result.getMsg());
throw new RuntimeException("远程服务器没有【"+vin+"】车辆");
}
+ MqttServerModel mqttServerModel = result.getData();
MqttProperties mqttProperties = MqttProperties.builder()
- .broker(broker)
- .topic(result.getData())
+ .broker(mqttServerModel.getBroker())
+ .topic(mqttServerModel.getTopic())
.clientId(vin)
.username(connectionReq.getUserName())
.password(vin + connectionReq.getTimestamp() + connectionReq.getNonce())
diff --git a/src/main/java/com/muyu/service/impl/VehicleUnifiedServiceImpl.java b/src/main/java/com/muyu/service/impl/VehicleUnifiedServiceImpl.java
index b61f9c3..2bae498 100644
--- a/src/main/java/com/muyu/service/impl/VehicleUnifiedServiceImpl.java
+++ b/src/main/java/com/muyu/service/impl/VehicleUnifiedServiceImpl.java
@@ -55,9 +55,10 @@ public class VehicleUnifiedServiceImpl implements VehicleUnifiedService {
.stream()
.map(VehicleInstance::getVin)
.toList();
+ taskModel.submit("一键上线", vinList.size());
new Thread(() -> {
int vinSize = 0, executionSize = 15;
- do {
+ do {
int startIndex = vinSize++ * executionSize;
// 进行分页开启车辆
List executionVinList = vinList.stream()
@@ -94,6 +95,7 @@ public class VehicleUnifiedServiceImpl implements VehicleUnifiedService {
break;
}
}while (true);
+ taskModel.down();
}).start();
}
diff --git a/src/main/java/com/muyu/utils/ConversionUtil.java b/src/main/java/com/muyu/utils/ConversionUtil.java
index 07791a3..6abbbaa 100644
--- a/src/main/java/com/muyu/utils/ConversionUtil.java
+++ b/src/main/java/com/muyu/utils/ConversionUtil.java
@@ -1,5 +1,7 @@
package com.muyu.utils;
+import java.nio.charset.StandardCharsets;
+
public class ConversionUtil {
/**
@@ -17,4 +19,47 @@ public class ConversionUtil {
}
return sb.toString();
}
+
+ public static void main (String[] args) {
+// String str = "\n" +
+// "Sinus
80No Change0";
+// String strToSixteen = strToSixteen(str);
+// System.out.println(str);
+// System.out.println(str.length());
+// System.out.println(strToSixteen);
+// System.out.println(strToSixteen.replace(" ", "").length());
+
+ String hexStr = "3C3F786D6C2076657273696F6E3D22312E30223F3E0D0A3C6D6F6E69746F72526F6F7420747970653D22706172616D223E3C73796E6368726F6E697A65537970746F6D206576656E743D22302220696E697469616C3D2274727565223E3C416374696F6E5F4543473E3C52687974686D3E53696E75733C2F52687974686D3E3C48523E38303C2F48523E3C454D443E4E6F204368616E67653C2F454D443E3C436F6E647563743E303C2F436F6E647563743E3C2F416374696F6E5F4543473E3C416374696F6E5F4F7361742076616C75653D2239342220697352656C617469766550657263656E743D2266616C7365222F3E3C416374696F6E5F425020697352656C617469766550657263656E743D2266616C7365223E3C536872696E6B2076616C75653D22313230222F3E3C537472657463682076616C75653D223830222F3E3C2F416374696F6E5F42503E3C416374696F6E5F5265737020627265617468547970653D224E6F726D616C222076616C75653D2231342220697352656C617469766550657263656E743D2266616C7365222F3E3C416374696F6E5F6574434F322076616C75653D2233342220697352656C617469766550657263656E743D2266616C7365222F3E3C416374696F6E5F54656D70657261747572652076616C75653D2233352E32222F3E3C416374696F6E5F4356502076616C75653D22362E30222F3E3C416374696F6E5F5041504469612076616C75653D223130222F3E3C416374696F6E5F5041505379732076616C75653D223235222F3E3C416374696F6E5F57502076616C75653D2239222F3E3C2F73796E6368726F6E697A65537970746F6D3E3C2F6D6F6E69746F72526F6F743E0D0A";
+ String hexStringToString = hexStringToString(hexStr);
+ System.out.println(hexStr);
+ System.out.println(hexStr.length());
+ System.out.println(hexStringToString);
+ System.out.println(hexStringToString.length());
+ }
+
+ /**
+ * 16进制转换成为string类型字符串
+ * @param s
+ * @return
+ */
+ public static String hexStringToString(String s) {
+ if (s == null || s.equals("")) {
+ return null;
+ }
+ s = s.replace(" ", "");
+ byte[] baKeyword = new byte[s.length() / 2];
+ for (int i = 0; i < baKeyword.length; i++) {
+ try {
+ baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ try {
+ s = new String(baKeyword, StandardCharsets.UTF_8);
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+ return s;
+ }
}
diff --git a/src/main/java/com/muyu/vehicle/api/ClientAdmin.java b/src/main/java/com/muyu/vehicle/api/ClientAdmin.java
index 2383b2d..19dfc83 100644
--- a/src/main/java/com/muyu/vehicle/api/ClientAdmin.java
+++ b/src/main/java/com/muyu/vehicle/api/ClientAdmin.java
@@ -4,6 +4,7 @@ import com.dtflys.forest.annotation.BaseRequest;
import com.dtflys.forest.annotation.JSONBody;
import com.dtflys.forest.annotation.Post;
import com.muyu.common.Result;
+import com.muyu.domain.model.MqttServerModel;
import com.muyu.vehicle.api.req.VehicleConnectionReq;
/**
@@ -17,5 +18,5 @@ import com.muyu.vehicle.api.req.VehicleConnectionReq;
public interface ClientAdmin {
@Post("${adminTopicUri}")
- public Result vehicleConnection(@JSONBody VehicleConnectionReq vehicleConnectionReq);
+ public Result vehicleConnection(@JSONBody VehicleConnectionReq vehicleConnectionReq);
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 8cb8934..b9792f4 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -87,6 +87,7 @@ forest:
mqtt:
server:
host: tcp://fluxmq.muyu.icu:1883
+ topic: test1
admin:
host: http://127.0.0.1:${server.port}
topic-uri: /verify/vehicleConnection