fix():修改BUG

master
DongZeLiang 2024-09-14 11:26:58 +08:00
parent 135448c504
commit 67a64a51bb
7 changed files with 60 additions and 12 deletions

17
pom.xml
View File

@ -96,5 +96,20 @@
<version>${jjwt.version}</version>
</dependency>
</dependencies>
<build>
<finalName>vehicle-simulation-${version}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -52,6 +52,7 @@ public class VehicleInstance {
/**
*
*/
@Builder.Default
private LinkedBlockingQueue<PositionModel> 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

View File

@ -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<String, Map<String, VehicleInstance>> tenantVehicleDataMap
= new ConcurrentHashMap<>();
/**
*
* ID
* @param tenantId ID
* @return
*/
public static final Map<String, VehicleInstance> vehicleDataMap = new HashMap<>();
public static Map<String, VehicleInstance> getVehicleDataMap(String tenantId) {
return tenantVehicleDataMap
.computeIfAbsent(tenantId, k -> new ConcurrentHashMap<>());
}
/**
*
* @return
*/
public static Map<String, VehicleInstance> getTenantVehicleDataMap() {
return getVehicleDataMap(SystemHandler.getTenantId());
}
/**
*
@ -28,6 +45,7 @@ public class LocalContainer {
}
public static void setVehicleInstance(VehicleInstance vehicleInstance){
String vin = vehicleInstance.getVehicleInfo().getVin();
Map<String, VehicleInstance> 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<String, VehicleInstance> vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.get(vin);
}
@ -47,10 +66,12 @@ public class LocalContainer {
* @return
*/
public static long total () {
Map<String, VehicleInstance> vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.size();
}
public static Collection<VehicleInstance> getVehicleInstanceAll () {
Map<String, VehicleInstance> vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.values();
}
@ -60,6 +81,7 @@ public class LocalContainer {
* @return 线
*/
public static List<VehicleInstance> getOnlineVehicleInstance(){
Map<String, VehicleInstance> vehicleDataMap = getTenantVehicleDataMap();
return vehicleDataMap.values().stream().filter(VehicleInstance::isOnline).toList();
}
/**
@ -78,6 +100,7 @@ public class LocalContainer {
* @return 线
*/
public static List<VehicleInstance> getOfflineVehicleInstance(){
Map<String, VehicleInstance> 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<String, VehicleInstance> vehicleDataMap = getTenantVehicleDataMap();
vehicleDataMap.remove(vin);
}
}

View File

@ -62,8 +62,6 @@ public class VehicleConfiguration implements ApplicationRunner {
*/
@PreDestroy
public void destroy(){
log.info("数据库同步");
vehicleInfoService.syncDb();

View File

@ -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<VehicleInstance> instanceList = LocalContainer.vehicleDataMap.values();
Collection<VehicleInstance> instanceList = LocalContainer.getTenantVehicleDataMap().values();
return OverviewModel.builder()

View File

@ -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<VehicleInfoMapper, Vehic
} else {
LambdaQueryWrapper<VehicleInfo> 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");

View File

@ -70,7 +70,7 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
*/
@Override
public PageList<VehicleInstanceResp> queryList (VehicleInstanceListReq vehicleInstanceListReq) {
Stream<VehicleInstance> stream = LocalContainer.vehicleDataMap.values()
Stream<VehicleInstance> stream = LocalContainer.getTenantVehicleDataMap().values()
.stream();
if (StringUtils.isNotBlank(vehicleInstanceListReq.getVin())){
stream = stream.filter(vehicleInstance ->
@ -116,7 +116,9 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
Result<MqttServerModel> 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()