From 67a64a51bb64ced7bfdea48f9fe7cef99b55bfed Mon Sep 17 00:00:00 2001
From: DongZeLiang <2746733890@qq.com>
Date: Sat, 14 Sep 2024 11:26:58 +0800
Subject: [PATCH] =?UTF-8?q?fix()=EF=BC=9A=E4=BF=AE=E6=94=B9BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 17 ++++++++++-
.../com/muyu/vehicle/VehicleInstance.java | 11 ++++++-
.../com/muyu/vehicle/core/LocalContainer.java | 30 +++++++++++++++++--
.../vehicle/core/VehicleConfiguration.java | 2 --
.../web/service/impl/OverviewServiceImpl.java | 4 +--
.../service/impl/VechileInfoServiceImpl.java | 2 ++
.../impl/VehicleInstanceServiceImpl.java | 6 ++--
7 files changed, 60 insertions(+), 12 deletions(-)
diff --git a/pom.xml b/pom.xml
index c183a48..5f37d3c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -96,5 +96,20 @@
${jjwt.version}
-
+
+ vehicle-simulation-${version}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+
+
+
+
diff --git a/src/main/java/com/muyu/vehicle/VehicleInstance.java b/src/main/java/com/muyu/vehicle/VehicleInstance.java
index d9bfe0c..5878473 100644
--- a/src/main/java/com/muyu/vehicle/VehicleInstance.java
+++ b/src/main/java/com/muyu/vehicle/VehicleInstance.java
@@ -52,6 +52,7 @@ public class VehicleInstance {
/**
* 路径队列
*/
+ @Builder.Default
private LinkedBlockingQueue positionQueue = new LinkedBlockingQueue<>();
/**
* 车辆
@@ -81,7 +82,7 @@ public class VehicleInstance {
/**
* 链接上报
*/
- private MqttClient client = null;
+ private MqttClient client;
/**
@@ -98,6 +99,14 @@ public class VehicleInstance {
return this.vehicleInfo.getVin();
}
+ /**
+ * 获取当前车辆所属租户信息
+ * @return 租户ID
+ */
+ public String getTenantId(){
+ return this.vehicleInfo.getTenantId();
+ }
+
/**
* 发送消息
* @param msg 消息
diff --git a/src/main/java/com/muyu/vehicle/core/LocalContainer.java b/src/main/java/com/muyu/vehicle/core/LocalContainer.java
index d237db4..1e73b8a 100644
--- a/src/main/java/com/muyu/vehicle/core/LocalContainer.java
+++ b/src/main/java/com/muyu/vehicle/core/LocalContainer.java
@@ -1,11 +1,12 @@
package com.muyu.vehicle.core;
+import com.muyu.system.handle.SystemHandler;
import com.muyu.vehicle.VehicleInstance;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/**
* @author DongZl
@@ -14,10 +15,26 @@ import java.util.Map;
*/
public class LocalContainer {
+ private static final Map> tenantVehicleDataMap
+ = new ConcurrentHashMap<>();
+
/**
- * 车辆容器
+ * 通过租户ID获取租户下车辆
+ * @param tenantId 租户ID
+ * @return 车辆内容
*/
- public static final Map vehicleDataMap = new HashMap<>();
+ public static Map getVehicleDataMap(String tenantId) {
+ return tenantVehicleDataMap
+ .computeIfAbsent(tenantId, k -> new ConcurrentHashMap<>());
+ }
+
+ /**
+ * 默认获取档期啊租户下车辆
+ * @return 车辆内容
+ */
+ public static Map getTenantVehicleDataMap() {
+ return getVehicleDataMap(SystemHandler.getTenantId());
+ }
/**
* 添加车辆
@@ -28,6 +45,7 @@ public class LocalContainer {
}
public static void setVehicleInstance(VehicleInstance vehicleInstance){
String vin = vehicleInstance.getVehicleInfo().getVin();
+ Map vehicleDataMap = getVehicleDataMap(vehicleInstance.getTenantId());
if (!vehicleDataMap.containsKey(vin)) {
vehicleDataMap.put(vin, vehicleInstance);
}
@@ -39,6 +57,7 @@ public class LocalContainer {
* @return 车辆实例
*/
public static VehicleInstance getVehicleInstance(String vin){
+ Map vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.get(vin);
}
@@ -47,10 +66,12 @@ public class LocalContainer {
* @return
*/
public static long total () {
+ Map vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.size();
}
public static Collection getVehicleInstanceAll () {
+ Map vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.values();
}
@@ -60,6 +81,7 @@ public class LocalContainer {
* @return 在线车辆集合
*/
public static List getOnlineVehicleInstance(){
+ Map vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.values().stream().filter(VehicleInstance::isOnline).toList();
}
/**
@@ -78,6 +100,7 @@ public class LocalContainer {
* @return 离线车辆集合
*/
public static List getOfflineVehicleInstance(){
+ Map vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.values().stream().filter(vehicleInstance -> !vehicleInstance.isOnline()).toList();
}
@@ -86,6 +109,7 @@ public class LocalContainer {
* @param vin 车辆VIN
*/
public static void removeByVin(String vin) {
+ Map vehicleDataMap = getTenantVehicleDataMap();
vehicleDataMap.remove(vin);
}
}
diff --git a/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java b/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java
index 820246f..e2ac24a 100644
--- a/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java
+++ b/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java
@@ -62,8 +62,6 @@ public class VehicleConfiguration implements ApplicationRunner {
*/
@PreDestroy
public void destroy(){
-
-
log.info("数据库同步");
vehicleInfoService.syncDb();
diff --git a/src/main/java/com/muyu/web/service/impl/OverviewServiceImpl.java b/src/main/java/com/muyu/web/service/impl/OverviewServiceImpl.java
index 1a71c82..d32f7d2 100644
--- a/src/main/java/com/muyu/web/service/impl/OverviewServiceImpl.java
+++ b/src/main/java/com/muyu/web/service/impl/OverviewServiceImpl.java
@@ -4,8 +4,6 @@ import com.muyu.vehicle.VehicleInstance;
import com.muyu.vehicle.core.LocalContainer;
import com.muyu.web.domain.model.OverviewModel;
import com.muyu.web.service.OverviewService;
-import com.muyu.web.service.VehicleInstanceService;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
@@ -27,7 +25,7 @@ public class OverviewServiceImpl implements OverviewService {
@Override
public OverviewModel overview () {
// 车辆实例对象
- Collection instanceList = LocalContainer.vehicleDataMap.values();
+ Collection instanceList = LocalContainer.getTenantVehicleDataMap().values();
return OverviewModel.builder()
diff --git a/src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java b/src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java
index 7928ac5..a35d81c 100644
--- a/src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java
+++ b/src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java
@@ -3,6 +3,7 @@ package com.muyu.web.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.muyu.system.handle.SystemHandler;
import com.muyu.web.domain.VehicleInfo;
import com.muyu.web.mapper.VehicleInfoMapper;
import com.muyu.web.service.VehicleInstanceService;
@@ -65,6 +66,7 @@ public class VechileInfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(VehicleInfo::getVin, vin);
+ queryWrapper.eq(VehicleInfo::getTenantId, SystemHandler.getTenantId());
long count = this.count(queryWrapper);
if (count == 1) {
errorMsg.append("vin[").append(vin).append("]").append("已经存在\n");
diff --git a/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java b/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java
index e11394f..089033b 100644
--- a/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java
+++ b/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java
@@ -70,7 +70,7 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
*/
@Override
public PageList queryList (VehicleInstanceListReq vehicleInstanceListReq) {
- Stream stream = LocalContainer.vehicleDataMap.values()
+ Stream stream = LocalContainer.getTenantVehicleDataMap().values()
.stream();
if (StringUtils.isNotBlank(vehicleInstanceListReq.getVin())){
stream = stream.filter(vehicleInstance ->
@@ -116,7 +116,9 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
Result result = clientAdmin.getVehicleLoadAddr(connectionReq);
if (result.getCode() != 200){
log.error("车辆:[{}],申请上线异常:[{}]", vin, result.getMsg());
- throw new RuntimeException("远程服务器没有【"+vin+"】车辆");
+ throw new RuntimeException(
+ String.format("车辆:[%s],申请上线异常:[%s]", vin, result.getMsg())
+ );
}
MqttServerModel mqttServerModel = result.getData();
MqttProperties mqttProperties = MqttProperties.builder()