From 6723ddbb3326f1d566417aff95ae3a92807a41d7 Mon Sep 17 00:00:00 2001
From: zrj <646384940@qq.com>
Date: Fri, 16 Aug 2024 15:46:17 +0800
Subject: [PATCH] 新增自定义飞行区文件获取及离线地图获取协议回复

---
 src/main/java/com/dji/sample/component/mqtt/model/ChannelName.java           |    4 ++
 src/main/java/com/dji/sample/component/mqtt/model/RequestsMethodEnum.java    |    4 ++
 src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java |   76 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/dji/sample/component/mqtt/model/ChannelName.java b/src/main/java/com/dji/sample/component/mqtt/model/ChannelName.java
index cf0ef71..27ef204 100644
--- a/src/main/java/com/dji/sample/component/mqtt/model/ChannelName.java
+++ b/src/main/java/com/dji/sample/component/mqtt/model/ChannelName.java
@@ -88,4 +88,8 @@
     public static final String INBOUND_EVENTS_DRC_STATUS_NOTIFY = "inboundDrcStatusNotify";
 
     public static final String INBOUND_EVENTS_DRC_MODE_EXIT_NOTIFY = "inboundDrcModeExitNotify";
+
+    public static final String INBOUND_REQUESTS_FLIGHT_AREAS_GET = "inboundRequestsFlightAreasGet";
+
+    public static final String INBOUND_REQUESTS_OFFLINE_MAP_GET = "inboundRequestsOfflineMapGet";
 }
diff --git a/src/main/java/com/dji/sample/component/mqtt/model/RequestsMethodEnum.java b/src/main/java/com/dji/sample/component/mqtt/model/RequestsMethodEnum.java
index 8d04ceb..5e00fbe 100644
--- a/src/main/java/com/dji/sample/component/mqtt/model/RequestsMethodEnum.java
+++ b/src/main/java/com/dji/sample/component/mqtt/model/RequestsMethodEnum.java
@@ -22,6 +22,10 @@
 
     FLIGHT_TASK_RESOURCE_GET("flighttask_resource_get", ChannelName.INBOUND_REQUESTS_FLIGHT_TASK_RESOURCE_GET),
 
+    FLIGHT_AREAS_GET("flight_areas_get", ChannelName.INBOUND_REQUESTS_FLIGHT_AREAS_GET),
+
+    OFFLINE_MAP_GET("offline_map_get", ChannelName.INBOUND_REQUESTS_OFFLINE_MAP_GET),
+
     CONFIG("config", ChannelName.INBOUND_REQUESTS_CONFIG),
 
     UNKNOWN("Unknown", ChannelName.DEFAULT);
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
index 9eafe2b..310c1c9 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -67,7 +67,11 @@
 import java.sql.SQLException;
 import java.time.*;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
+
+import static com.dji.sample.component.mqtt.model.TopicConst.*;
+import static com.dji.sample.component.mqtt.model.TopicConst._REPLY_SUF;
 
 /**
  * @author sean
@@ -679,6 +683,78 @@
 
     }
 
+    /**
+     * 机场的获取离线地图协议请求回复
+     * @param receiver
+     */
+    @ServiceActivator(inputChannel = ChannelName.INBOUND_REQUESTS_OFFLINE_MAP_GET, outputChannel = ChannelName.OUTBOUND)
+    public void offlineMapGet(CommonTopicReceiver receiver) {
+        log.info("接收到机场的获取离线地图协议消息,编号:{}",receiver.getGateway());
+        // 查询在线设备,不存在就不发送了
+        Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(receiver.getGateway());
+        if (deviceOpt.isEmpty()) {
+            return;
+        }
+        // 组装数据
+        CommonTopicResponse<Object> builder = CommonTopicResponse.builder()
+                .tid(receiver.getTid())
+                .bid(receiver.getBid())
+                .method(RequestsMethodEnum.OFFLINE_MAP_GET.getMethod())
+                .timestamp(System.currentTimeMillis())
+                .build();
+        // 组装 data 数据
+        Map<String, Integer> result = new ConcurrentHashMap<>(1);
+        result.put("result", 0);
+        builder.setData(result);
+        log.info("回复机场的获取离线地图协议消息:{},{}",BASIC_PRE + PRODUCT +receiver.getGateway() + REQUESTS_SUF + _REPLY_SUF, builder );
+        // 回复消息
+        messageSender.publish(
+                new StringBuilder()
+                        .append(BASIC_PRE)
+                        .append(PRODUCT)
+                        .append(receiver.getGateway())
+                        .append(REQUESTS_SUF)
+                        .append(_REPLY_SUF)
+                        .toString(),
+                builder);
+    }
+
+    /**
+     * 自定义飞行区文件获取协议请求回复
+     * @param receiver
+     */
+    @ServiceActivator(inputChannel = ChannelName.INBOUND_REQUESTS_FLIGHT_AREAS_GET, outputChannel = ChannelName.OUTBOUND)
+    public void flightAreasGet(CommonTopicReceiver receiver) {
+        log.info("接收到自定义飞行区文件获取消息,编号:{}",receiver.getGateway());
+        // 查询在线设备,不存在就不发送了
+        Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(receiver.getGateway());
+        if (deviceOpt.isEmpty()) {
+            return;
+        }
+        // 组装数据
+        CommonTopicResponse<Object> builder = CommonTopicResponse.builder()
+                .tid(receiver.getTid())
+                .bid(receiver.getBid())
+                .method(RequestsMethodEnum.FLIGHT_AREAS_GET.getMethod())
+                .timestamp(System.currentTimeMillis())
+                .build();
+        // 组装 data 数据
+        Map<String, Integer> result = new ConcurrentHashMap<>(1);
+        result.put("result", 0);
+        builder.setData(result);
+        log.info("回复自定义飞行区文件获取消息:{},{}",BASIC_PRE + PRODUCT +receiver.getGateway() + REQUESTS_SUF + _REPLY_SUF, builder );
+        // 回复消息
+        messageSender.publish(
+                new StringBuilder()
+                        .append(BASIC_PRE)
+                        .append(PRODUCT)
+                        .append(receiver.getGateway())
+                        .append(REQUESTS_SUF)
+                        .append(_REPLY_SUF)
+                        .toString(),
+                builder);
+    }
+
     @Override
     public List<String> selectJobIdByName(String name) {
         List<WaylineJobEntity> waylineJobs = mapper.selectList(new LambdaQueryWrapper<WaylineJobEntity>()

--
Gitblit v1.9.3