From 2db1aa88e8ab53096a936163d686b90d8e056a99 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Wed, 21 Aug 2024 23:18:33 +0800
Subject: [PATCH] 国土对接返回信息加密
---
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 101 insertions(+), 0 deletions(-)
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 56d741d..12e77fe 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
@@ -128,6 +132,29 @@
if (Objects.isNull(param)) {
return Optional.empty();
}
+ if (param.getJobId()!=null){
+ WaylineJobEntity jobEntity = WaylineJobEntity.builder()
+ .name(param.getName())
+ .dockSn(param.getDockSn())
+ .fileId(param.getFileId())
+ .username(username)
+ .workspaceId(workspaceId)
+ .jobId(param.getJobId())
+ .beginTime(beginTime)
+ .endTime(endTime)
+ .status(WaylineJobStatusEnum.PENDING.getVal())
+ .taskType(param.getTaskType().getVal())
+ .waylineType(param.getWaylineType().getVal())
+ .outOfControlAction(param.getOutOfControlAction())
+ .rthAltitude(param.getRthAltitude())
+ .rthMode(param.getRthMode())
+ .mediaCount(0)
+ .build();
+ if (StringUtils.hasText(param.getJobId())) {
+ jobEntity.setJobId(param.getJobId());
+ }
+ return insertWaylineJob(jobEntity);
+ }
// Immediate tasks, allocating time on the backend.
WaylineJobEntity jobEntity = WaylineJobEntity.builder()
.name(param.getName())
@@ -143,6 +170,7 @@
.waylineType(param.getWaylineType().getVal())
.outOfControlAction(param.getOutOfControlAction())
.rthAltitude(param.getRthAltitude())
+ .rthMode(param.getRthMode())
.mediaCount(0)
.build();
if (StringUtils.hasText(param.getJobId())) {
@@ -655,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(THING_MODEL_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(THING_MODEL_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>()
@@ -1110,6 +1210,7 @@
.taskType(WaylineTaskTypeEnum.find(entity.getTaskType()))
.waylineType(WaylineTemplateTypeEnum.find(entity.getWaylineType()))
.rthAltitude(entity.getRthAltitude())
+ .rthMode(entity.getRthMode())
.outOfControlAction(entity.getOutOfControlAction())
.mediaCount(entity.getMediaCount())
.hasChildren(entity.getHasChildren());
--
Gitblit v1.9.3