Skip to content

Commit 9df9883

Browse files
committed
fix(vehicle): 持久化车辆驱动配置
- 车辆注册时将驱动配置序列化并存库,重启后可恢复连接 - 移除车辆未注册时的异常抛出,避免离线车辆干扰调度
1 parent 7367f4c commit 9df9883

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

opentcs-applications/opentcs-vehicle/src/main/java/org/opentcs/vehicle/application/VehicleApplicationService.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.opentcs.vehicle.persistence.entity.VehicleEntity;
2727
import org.opentcs.vehicle.persistence.service.VehicleRepository;
2828

29+
import com.fasterxml.jackson.databind.ObjectMapper;
2930
import lombok.RequiredArgsConstructor;
3031
import lombok.extern.slf4j.Slf4j;
3132
import org.springframework.stereotype.Service;
@@ -53,6 +54,7 @@ public class VehicleApplicationService {
5354
private final VehicleRepository vehicleService;
5455
private final VehicleRegistry vehicleRegistry;
5556
private final TransportOrderRegistry orderRegistry;
57+
private final ObjectMapper objectMapper;
5658
private final OrderLifecycleApi orderLifecycleApi;
5759
private final DriverRegistry driverRegistry;
5860
private final List<Map<String, Object>> opsActionRecords = new CopyOnWriteArrayList<>();
@@ -117,6 +119,14 @@ public boolean registerVehicle(VehicleBO command, DriverConfig driverConfig) {
117119

118120
entity.setState("UNAVAILABLE");
119121
entity.setIntegrationLevel("TO_BE_UTILIZED");
122+
// 持久化驱动配置(用于服务重启后恢复连接)
123+
if (driverConfig != null) {
124+
try {
125+
entity.setProperties(objectMapper.writeValueAsString(driverConfig));
126+
} catch (Exception e) {
127+
log.warn("驱动配置序列化失败,将跳过持久化: {}", e.getMessage());
128+
}
129+
}
120130
vehicleService.save(entity);
121131

122132
// 2. 注册到内核
@@ -125,7 +135,7 @@ public boolean registerVehicle(VehicleBO command, DriverConfig driverConfig) {
125135
kernelVehicle.updateState(VehicleState.UNAVAILABLE);
126136
vehicleRegistry.registerVehicleDomain(kernelVehicle);
127137

128-
// 3. 配置驱动连接(延迟连接)
138+
// 3. 配置驱动连接
129139
if (driverConfig != null) {
130140
driverRegistry.registerVehicle(entity.getName(), driverConfig);
131141
}

opentcs-driver/opentcs-driver-adapter-vda5050/src/main/java/org/opentcs/driver/gateway/VehicleGatewayImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ public void sendInstantAction(String vehicleId, InstantAction action) {
150150

151151
DriverConfig config = vehicleConfigs.get(vehicleId);
152152
if (config == null) {
153-
throw new IllegalArgumentException("车辆未注册: " + vehicleId);
153+
//throw new IllegalArgumentException("车辆未注册: " + vehicleId);
154+
return;
154155
}
155156

156157
DriverAdapter adapter = adapters.get(config.getDriverType());

0 commit comments

Comments
 (0)