diff --git a/pom.xml b/pom.xml
index 37963c4..d0e8c70 100644
--- a/pom.xml
+++ b/pom.xml
@@ -139,6 +139,12 @@
org.springframework.boot
spring-boot-starter-amqp
+
+
+ com.github.ben-manes.caffeine
+ caffeine
+ 2.9.0
+
diff --git a/src/main/java/com/bootdo/datasend/dianxin/cache/DeviceCache.java b/src/main/java/com/bootdo/datasend/dianxin/cache/DeviceCache.java
new file mode 100644
index 0000000..d8fbabb
--- /dev/null
+++ b/src/main/java/com/bootdo/datasend/dianxin/cache/DeviceCache.java
@@ -0,0 +1,72 @@
+package com.bootdo.datasend.dianxin.cache;
+
+import com.alibaba.fastjson.JSON;
+import com.bootdo.datasend.dianxin.domain.DevopsDeviceInfo;
+import com.bootdo.datasend.dianxin.service.DevopsDeviceInfoService;
+import com.bootdo.util.StringKit;
+import com.github.benmanes.caffeine.cache.Cache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 区域缓存
+ *
+ * @since 2023-09-16 11:04
+ */
+@Component
+public class DeviceCache {
+ private static final Logger logger = LoggerFactory.getLogger(DeviceCache.class);
+
+ /**
+ *
+ */
+ private static final Cache cache = Caffeine.newBuilder().build();
+
+ private static DevopsDeviceInfoService devopsDeviceInfoService;
+
+ @Autowired
+ DeviceCache(DevopsDeviceInfoService devopsDeviceInfoService) {
+ DeviceCache.devopsDeviceInfoService = devopsDeviceInfoService;
+ //初始化
+ load();
+ }
+
+ public static String get(String key) {
+ return cache.get(key, s -> {
+ try {
+ return "";
+ } catch (Exception e) {
+ return "";
+ }
+ });
+ }
+
+ public static void put(DevopsDeviceInfo bean) {
+ cache.put(bean.getGbsChannelNo(), JSON.toJSONString(bean));
+ }
+
+ /**
+ * 缓存刷新
+ */
+ @Scheduled(cron = "0 */30 * * * ?")
+ public static void refresh() {
+ load();
+ }
+
+ private static void load() {
+ logger.info("设备表缓存重新加载");
+ List list = devopsDeviceInfoService.list();
+ Map dictMapCode = list.stream().collect(Collectors.toMap(
+ e -> "".equals(StringKit.toString(e.getDeviceIp())) ? "err" : e.getDeviceIp(),
+ e -> JSON.toJSONString(e), (v1, v2) -> v2));
+ cache.putAll(dictMapCode);
+ }
+}
diff --git a/src/main/java/com/bootdo/datasend/dianxin/config/RabbitConfig.java b/src/main/java/com/bootdo/datasend/dianxin/config/RabbitConfig.java
index 28e768e..ed5d302 100644
--- a/src/main/java/com/bootdo/datasend/dianxin/config/RabbitConfig.java
+++ b/src/main/java/com/bootdo/datasend/dianxin/config/RabbitConfig.java
@@ -13,7 +13,7 @@ public class RabbitConfig {
@Bean
public Queue myQueue() {
// 创建队列 myQueue
- return new Queue("myQueue", true);
+ return new Queue("warnrecord", true);
}
@Bean
public TopicExchange exchange() {
diff --git a/src/main/java/com/bootdo/datasend/dianxin/listener/MessageConsumer.java b/src/main/java/com/bootdo/datasend/dianxin/listener/MessageConsumer.java
index 059b547..38b0ec5 100644
--- a/src/main/java/com/bootdo/datasend/dianxin/listener/MessageConsumer.java
+++ b/src/main/java/com/bootdo/datasend/dianxin/listener/MessageConsumer.java
@@ -12,12 +12,12 @@ public class MessageConsumer {
private static final Logger logger = LoggerFactory.getLogger(MessageConsumer.class);
//测试消费kafka
- // 监听队列 "myQueue"
-// @RabbitListener(queues = "myQueue")
+ // 监听队列 "warnrecord"
+// @RabbitListener(queues = "warnrecord")
public void receiveMessage(String message) {
try {
// 处理接收到的消息
- logger.info("Received message: " + message.toString());
+ logger.info("Received message: " + message);
// 在这里添加你对消息的处理逻辑
} catch (Exception e) {
// 捕获并打印异常
diff --git a/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java b/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java
index b0f1d9c..db0ea0a 100644
--- a/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java
+++ b/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java
@@ -1,8 +1,11 @@
package com.bootdo.datasend.dianxin.task;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.parser.Feature;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.bootdo.datasend.dianxin.cache.DeviceCache;
import com.bootdo.datasend.dianxin.domain.BaseHighThrowRecord;
+import com.bootdo.datasend.dianxin.domain.DevopsDeviceInfo;
import com.bootdo.datasend.dianxin.domain.dto.HighThrowDto;
import com.bootdo.datasend.dianxin.domain.dto.HighThrowRequestDataDTO;
import com.bootdo.datasend.dianxin.domain.dto.HighThrowRequestDataListDTO;
@@ -40,13 +43,25 @@ public class StandardTask {
for (BaseHighThrowRecord h : highThrowRecords) {
+ String deviceId = h.getDeviceIp();
+ String deviceCacheStr = DeviceCache.get(deviceId);
+ DevopsDeviceInfo deviceInfo = null;
+ if ("".equals(StringKit.toString(deviceCacheStr))) {
+ logger.info("当前设备缓存中不存在:" + deviceId);
+ }else {
+ logger.info("当前设备获取到缓存:" + deviceId);
+ deviceInfo = JSON.parseObject(deviceCacheStr, DevopsDeviceInfo.class, Feature.IgnoreNotMatch);
+ }
+
HighThrowDto dto = new HighThrowDto();
HighThrowRequestDataDTO dataDTO = new HighThrowRequestDataDTO();
dataDTO.setRequestFlag("1");
HighThrowRequestDataListDTO requestDataListDTO = new HighThrowRequestDataListDTO();
- requestDataListDTO.setGatewaySN(h.getGeminiSn());
+ if(deviceInfo!=null){
+ requestDataListDTO.setGatewaySN(deviceInfo.getGeminiSn());
+ }
requestDataListDTO.setWarnType("1001");
requestDataListDTO.setDeviceType("302");
requestDataListDTO.setDeviceSN(h.getGbsChannelNo());
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 13a0512..21a7d91 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -4,7 +4,7 @@ spring:
username: root
password: '1qaz!QAZ'
# url: jdbc:mysql://221.229.107.118:30519/multidimensional_box?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT
- url: jdbc:mysql://127.0.0.1:30519/multidimensional_box?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT
+ url: jdbc:mysql://127.0.0.1:55306/multidimensional_box?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT
driver-class-name: com.mysql.cj.jdbc.Driver
initialSize: 5 # 配置初始化大小、最小、最大
minIdle: 5
@@ -31,18 +31,18 @@ spring:
properties:
hibernate:
format_sql: true
- rabbitmq:
- host: 221.229.107.118
- port: 30529
- username: root
- password: 'sm@rtC@m!n23ty'
- dynamic: true
# rabbitmq:
-# host: 110.1.200.11
-# port: 19000
+# host: 221.229.107.118
+# port: 30529
# username: root
# password: 'sm@rtC@m!n23ty'
# dynamic: true
+ rabbitmq:
+ host: 110.1.200.11
+ port: 19000
+ username: root
+ password: 'sm@rtC@m!n23ty'
+ dynamic: true