From a0ae2cb2fe95630bb13795b94dd5f2cfadea7a97 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sat, 07 Oct 2023 14:28:47 +0800
Subject: [PATCH] 高德地图api接口请求
---
src/main/java/com/dji/sample/amap/controller/AmapController.java | 23 +++++++++++
src/main/java/com/dji/sample/amap/service/impl/AmapServiceImpl.java | 58 +++++++++++++++++++++++++++++
src/main/java/com/dji/sample/wayline/service/IWaylineRedisService.java | 2 +
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java | 8 +++
src/main/java/com/dji/sample/CloudApiSampleApplication.java | 7 +++
src/main/java/com/dji/sample/amap/service/IAmapService.java | 5 ++
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java | 3 +
7 files changed, 105 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/dji/sample/CloudApiSampleApplication.java b/src/main/java/com/dji/sample/CloudApiSampleApplication.java
index a3619ab..4c1963c 100644
--- a/src/main/java/com/dji/sample/CloudApiSampleApplication.java
+++ b/src/main/java/com/dji/sample/CloudApiSampleApplication.java
@@ -3,7 +3,10 @@
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.client.RestTemplate;
@MapperScan("com.dji.sample.*.dao")
@SpringBootApplication
@@ -15,4 +18,8 @@
SpringApplication.run(CloudApiSampleApplication.class, args);
}
+ @Bean
+ public RestTemplate restTemplate(RestTemplateBuilder builder){
+ return builder.build();
+ }
}
diff --git a/src/main/java/com/dji/sample/amap/controller/AmapController.java b/src/main/java/com/dji/sample/amap/controller/AmapController.java
new file mode 100644
index 0000000..a98c378
--- /dev/null
+++ b/src/main/java/com/dji/sample/amap/controller/AmapController.java
@@ -0,0 +1,23 @@
+package com.dji.sample.amap.controller;
+
+import com.dji.sample.amap.service.IAmapService;
+import com.dji.sample.common.model.ResponseResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("map/amap")
+public class AmapController {
+
+ @Autowired
+ private IAmapService amapService;
+
+
+ @GetMapping("/searchByKeyword")
+ public ResponseResult searchByKeyword(String keyword) {
+ return ResponseResult.success(amapService.searchByKeyword(keyword));
+ }
+
+}
diff --git a/src/main/java/com/dji/sample/amap/service/IAmapService.java b/src/main/java/com/dji/sample/amap/service/IAmapService.java
new file mode 100644
index 0000000..a04b959
--- /dev/null
+++ b/src/main/java/com/dji/sample/amap/service/IAmapService.java
@@ -0,0 +1,5 @@
+package com.dji.sample.amap.service;
+
+public interface IAmapService {
+ Object searchByKeyword(String keyword);
+}
diff --git a/src/main/java/com/dji/sample/amap/service/impl/AmapServiceImpl.java b/src/main/java/com/dji/sample/amap/service/impl/AmapServiceImpl.java
new file mode 100644
index 0000000..149e03d
--- /dev/null
+++ b/src/main/java/com/dji/sample/amap/service/impl/AmapServiceImpl.java
@@ -0,0 +1,58 @@
+package com.dji.sample.amap.service.impl;
+
+import com.alibaba.druid.support.json.JSONUtils;
+import com.dji.sample.amap.service.IAmapService;
+import org.codehaus.jettison.json.JSONArray;
+import org.codehaus.jettison.json.JSONObject;
+import org.codehaus.jettison.json.JSONString;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+@Service
+public class AmapServiceImpl implements IAmapService {
+
+ private final String AMAP_KEY = "6c3ea75b215f0c0efcbcfdf13273991b";
+ private final String searchByKeywordUrl = "https://restapi.amap.com/v3/assistant/inputtips?&datatype=poi&key=" + AMAP_KEY + "&keywords=";
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @Override
+ public Object searchByKeyword(String keyword) {
+
+ Object result = apiRequestResult(searchByKeywordUrl+keyword);
+
+
+ return result;
+ }
+
+ private Object apiRequestResult(String url) {
+ //设置请求头
+ HttpHeaders headers = new HttpHeaders();
+ //封装请求头
+ HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
+ try {
+ //有请求头,有参数请求
+ ResponseEntity<String> responseEntity =
+ restTemplate.exchange(url,
+ HttpMethod.GET,
+ formEntity,
+ String.class);
+ String body = responseEntity.getBody();
+
+ Object parse = JSONUtils.parse(body);
+
+ // 返回
+ return parse;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
index ec04134..ee4f8a6 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -44,6 +44,7 @@
/**
* Issue wayline mission to the dock.
+ * 向机场发出航线任务
* @param param
* @param customClaim user info
* @return
@@ -52,6 +53,7 @@
/**
* Issue wayline mission to the dock.
+ * 向机场添加航线任务指令
* @param waylineJob
* @return
* @throws SQLException
@@ -60,6 +62,7 @@
/**
* Execute the task immediately.
+ * 执行立即任务
* @param jobId
* @throws SQLException
* @return
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineRedisService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineRedisService.java
index 0f8408c..27c95ca 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineRedisService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineRedisService.java
@@ -79,6 +79,7 @@
/**
* Save the conditional wayline job by the dock to redis.
+ * 将条件航线任务保存到redis中
* @param waylineJob
*/
void setConditionalWaylineJob(WaylineJobDTO waylineJob);
@@ -99,6 +100,7 @@
/**
* Add the wayline job that needs to be issued.
+ * 添加需要发布的航路线作业
* @param waylineJob
* @return
*/
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 a1ae787..6270787 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
@@ -179,6 +179,7 @@
}
WaylineJobDTO waylineJob = waylineJobOpt.get();
// If it is a conditional task type, add conditions to the job parameters.
+ //如果是条件任务类型,需要在任务参数中添加条件。
addPreparedJob(waylineJob, param, beginTime, endTime);
ResponseResult response = this.publishOneFlightTask(waylineJob);
@@ -208,7 +209,7 @@
// value: {workspace_id}:{dock_sn}:{job_id}
boolean isAdd = waylineRedisService.addPreparedWaylineJob(waylineJob);
if (!isAdd) {
- throw new RuntimeException("创建准备任务失败。");
+ throw new RuntimeException("创建任务失败。");
}
}
@@ -220,6 +221,7 @@
}
// Issue an immediate task execution command.
+ //发出立即任务执行命令
if (WaylineTaskTypeEnum.IMMEDIATE == waylineJob.getTaskType()) {
boolean isExecuted = executeFlightTask(waylineJob.getWorkspaceId(), waylineJob.getJobId());
if (!isExecuted) {
@@ -244,6 +246,7 @@
}
// get file url
+ //获取航线文件地址
URL url = waylineFileService.getObjectUrl(waylineJob.getWorkspaceId(), waylineFile.get().getWaylineId());
WaylineTaskCreateDTO flightTask = WaylineTaskCreateDTO.builder()
@@ -259,6 +262,7 @@
.build())
.build();
+ //当任务类型为条件时
if (WaylineTaskTypeEnum.CONDITION == waylineJob.getTaskType()) {
if (Objects.isNull(waylineJob.getConditions())) {
throw new IllegalArgumentException();
@@ -267,10 +271,12 @@
flightTask.setExecutableConditions(waylineJob.getConditions().getExecutableConditions());
}
+ //发布飞行指令
ServiceReply serviceReply = messageSender.publishServicesTopic(
waylineJob.getDockSn(), WaylineMethodEnum.FLIGHT_TASK_PREPARE.getMethod(), flightTask, waylineJob.getJobId());
if (ResponseResult.CODE_SUCCESS != serviceReply.getResult()) {
log.info("Prepare task ====> Error code: {}", serviceReply.getResult());
+ //飞行失败,更新数据库信息
this.updateJob(WaylineJobDTO.builder()
.workspaceId(waylineJob.getWorkspaceId())
.jobId(waylineJob.getJobId())
--
Gitblit v1.9.3