From 12c3f4de5ce151b50e187066a3c105260523abb8 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 30 四月 2026 10:04:56 +0800
Subject: [PATCH] 充电机代码提交
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java | 34 +++++++++++++++++++++++++++-------
1 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
index 23ecd1d..8a47f01 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
@@ -26,6 +26,7 @@
private final Map<String, ModbusTCPMaster> CHARGE_CACHE = new ConcurrentHashMap<>();
+ private final Map<String, Object> deviceLocks = new ConcurrentHashMap<>();
@PostConstruct
public void init() {
@@ -42,22 +43,41 @@
public void add(FuncSta funcSta) {
ModbusTCPMaster modbusTcp = new ModbusTCPMaster(funcSta.getIp(), funcSta.getPort(), true);
+ try {
+ modbusTcp.connect();
+ } catch (Exception e) {
+ log.info("杩炴帴澶辫触");
+ }
CHARGE_CACHE.put(funcSta.getUuid(), modbusTcp);
}
public void remove(String chargePointId) {
- CHARGE_CACHE.remove(chargePointId);
+ ModbusTCPMaster master = CHARGE_CACHE.remove(chargePointId);
+ if (master != null && master.isConnected()) {
+ master.disconnect();
+ }
}
public ModbusTCPMaster get(String chargePointId) {
- ModbusTCPMaster modbusTcp = CHARGE_CACHE.get(chargePointId);
- if (modbusTcp != null) {
+ // 鑾峰彇鎴栧垱寤鸿澶囬攣
+ Object lock = deviceLocks.computeIfAbsent(chargePointId, k -> new Object());
+ synchronized (lock) {
+ ModbusTCPMaster modbusTcp = CHARGE_CACHE.get(chargePointId);
+ if (modbusTcp != null) {
+ return modbusTcp;
+ }
+ FuncSta funcSta = funcStaService.getOne(new LambdaQueryWrapper<FuncSta>().eq(FuncSta::getUuid, chargePointId));
+ modbusTcp = new ModbusTCPMaster(funcSta.getIp(), funcSta.getPort(),true);
+ try {
+ modbusTcp.connect();
+ } catch (Exception e) {
+ log.info("杩炴帴澶辫触");
+ return null;
+ }
+ CHARGE_CACHE.put(chargePointId, modbusTcp);
return modbusTcp;
}
- FuncSta funcSta = funcStaService.getOne(new LambdaQueryWrapper<FuncSta>().eq(FuncSta::getUuid, chargePointId));
- modbusTcp = new ModbusTCPMaster(funcSta.getIp(), funcSta.getPort(),true);
- CHARGE_CACHE.put(chargePointId, modbusTcp);
- return modbusTcp;
+
}
--
Gitblit v1.9.1