From 6ee2875c30a89e2e6ef7369b442f9ccce7ac5253 Mon Sep 17 00:00:00 2001 From: wangshilong Date: Fri, 20 Dec 2024 17:41:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/Redis2DBPersistenceService.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java b/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java index 7409045..c7d3de4 100644 --- a/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java +++ b/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java @@ -22,10 +22,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -54,7 +51,7 @@ public class Redis2DBPersistenceService { @Scheduled(cron = "20/30 * * * * ? ") public void write() { - Map idGatewayMappingMap = getOnlineGateway(); + Map idGatewayMappingMap = writeOnlineGateway(); HashOperations operations = this.redisTemplate.opsForHash(); try (Cursor cursor = this.redisTemplate.scan(ScanOptions.scanOptions() .match(PersistenceHandler.DEVICE_DATA_CACHE + "*").build())) { @@ -74,10 +71,7 @@ public class Redis2DBPersistenceService { } try { if (Objects.nonNull(idGatewayMappingMap)) { - operations.put(PersistenceHandler.DEVICE_DATA_CACHE + deviceId, - "online", String.valueOf(idGatewayMappingMap.containsKey(deviceId))); - operations.put(PersistenceHandler.ONLINE_DEVICE_CACHE, String.valueOf(deviceId), - String.valueOf(idGatewayMappingMap.containsKey(deviceId))); + updateDeviceOnlineStatus(operations, deviceId, String.valueOf(idGatewayMappingMap.containsKey(deviceId))); } String modbusDeviceProductCode = (String) operations.get( PersistenceHandler.DEVICE_INFO_CACHE + deviceId, "modbus_device_product_code"); @@ -120,15 +114,18 @@ public class Redis2DBPersistenceService { } } - private Map getOnlineGateway() { + private Map writeOnlineGateway() { try { RequestEntity request = RequestEntity.get("http://localhost:9999/modbus-tcp/online").build(); ResponseEntity>> response = this.restTemplate.exchange(request, new ParameterizedTypeReference>>() { }); - if (Objects.isNull(response) || Objects.isNull(response.getBody()) || ObjectUtils.isEmpty(response.getBody().getData())) { + if (Objects.isNull(response) || Objects.isNull(response.getBody())) { return null; } + if (ObjectUtils.isEmpty(response.getBody().getData())) { + return Collections.emptyMap(); + } List> idGatewayMappingList = this.jdbcTemplate.queryForList("select id, gateway_sn" + " from device where gateway_sn in (" + response.getBody() @@ -140,9 +137,12 @@ public class Redis2DBPersistenceService { if (ObjectUtils.isEmpty(idGatewayMappingList)) { return null; } + Long deviceId; + HashOperations operations = this.redisTemplate.opsForHash(); Map idGatewayMappingMap = new HashMap(); for (Map map : idGatewayMappingList) { - idGatewayMappingMap.put(MapUtil.getLong(map, "id"), MapUtil.getStr(map, "gateway_sn")); + idGatewayMappingMap.put(deviceId = MapUtil.getLong(map, "id"), MapUtil.getStr(map, "gateway_sn")); + updateDeviceOnlineStatus(operations, deviceId, String.valueOf(idGatewayMappingMap.containsKey(deviceId))); } return idGatewayMappingMap; } catch (Exception e) { @@ -151,4 +151,9 @@ public class Redis2DBPersistenceService { } } + private void updateDeviceOnlineStatus(HashOperations operations, Long deviceId, String onlineStatus) { + operations.put(PersistenceHandler.ONLINE_DEVICE_CACHE, String.valueOf(deviceId), onlineStatus); + operations.put(PersistenceHandler.DEVICE_DATA_CACHE + deviceId, "online", onlineStatus); + } + }