From cbd3cf974ad09570684737b22687905da1dde8f4 Mon Sep 17 00:00:00 2001
From: wuyuan <15505152113@163.com>
Date: Mon, 12 May 2025 15:18:06 +0800
Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=92=AD=E6=94=BE=E7=9B=B4?=
=?UTF-8?q?=E6=92=AD=E6=B5=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../sdk/cloudapi/device/DeviceEnum.java | 13 +++
.../cloudapi/device/DeviceTypeVideoEnum.java | 39 +++++++++
.../sdk/cloudapi/device/DeviceVideoEnum.java | 80 +++++++++++++++++++
.../common/core/utils/StringUtils.java | 2 +
.../common/redis/config/RedisConst.java | 5 ++
dk-modules/sample/pom.xml | 4 +
.../manage/service/IDeviceRedisService.java | 9 +++
.../service/impl/DeviceRedisServiceImpl.java | 23 ++++++
.../manage/service/impl/SDKDeviceService.java | 41 +++++++++-
.../sample/rocketmq/RocketMqConsum.java | 46 +++++++++++
.../controller/WaylineJobController.java | 8 +-
.../wayline/service/IFlightTaskService.java | 2 +
.../service/impl/FlightTaskServiceImpl.java | 28 +++++++
.../src/main/resources/application.properties | 4 +-
14 files changed, 299 insertions(+), 5 deletions(-)
create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeVideoEnum.java
create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceVideoEnum.java
create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/rocketmq/RocketMqConsum.java
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java
index d63bcc3..9c5f9b5 100644
--- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java
@@ -142,4 +142,17 @@ public enum DeviceEnum {
return Arrays.stream(values()).filter(device -> device.getDevice().equals(finalKey))
.findAny().orElseThrow(() -> new CloudSDKException(DeviceEnum.class, finalKey1));
}
+
+ @JsonCreator
+ public static DeviceEnum findKey(String key) {
+ if(StringUtils.isEmpty(key)){
+ key = DeviceEnum.M3TD.getDevice();
+ }
+ String finalKey = key;
+ String finalKey1 = key;
+ return Arrays.stream(values()).filter(device -> device.toString().equals(finalKey))
+ .findAny().orElseThrow(() -> new CloudSDKException(DeviceEnum.class, finalKey1));
+ }
+
+
}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeVideoEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeVideoEnum.java
new file mode 100644
index 0000000..f3ce4d4
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeVideoEnum.java
@@ -0,0 +1,39 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import io.swagger.v3.oas.annotations.media.Schema;
+import org.dromara.common.sdk.exception.CloudSDKException;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/26
+ */
+@Schema(description = "DeviceTypeVideoEnum", enumAsRef = true)
+public enum DeviceTypeVideoEnum {
+
+ ZERO(0),
+ SEVEN(7);
+
+ ;
+
+ private final int videoType;
+
+ DeviceTypeVideoEnum(int videoType) {
+ this.videoType = videoType;
+ }
+
+ @JsonValue
+ public int getVideoType() {
+ return videoType;
+ }
+
+ @JsonCreator
+ public static DeviceTypeVideoEnum find(int videoType) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.videoType == videoType).findAny()
+ .orElseThrow(() -> new CloudSDKException(DeviceTypeVideoEnum.class, videoType));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceVideoEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceVideoEnum.java
new file mode 100644
index 0000000..c851c1c
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceVideoEnum.java
@@ -0,0 +1,80 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import io.swagger.v3.oas.annotations.media.Schema;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.sdk.exception.CloudSDKException;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/19
+ */
+@Schema(description = "device model key.", format = "domain-type-subType", enumAsRef = true, example = "0-89-0")
+public enum DeviceVideoEnum {
+
+
+ DOCK(DeviceTypeEnum.DOCK_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.SEVEN),
+
+ DJIDock2(DeviceTypeEnum.DOCK_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.SEVEN),
+
+ DOCK3(DeviceTypeEnum.DOCK_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.SEVEN),
+ Matrice30(DeviceTypeEnum.M30_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.ZERO),
+
+ Matrice30T(DeviceTypeEnum.M30T_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.ZERO),
+ M3D(DeviceTypeEnum.M3D_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.ZERO),
+
+ M3TD(DeviceTypeEnum.M3TD_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.ZERO),
+
+ M4D(DeviceTypeEnum.M4D_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.ZERO),
+
+ M4TD(DeviceTypeEnum.M4TD_CAMERA, DeviceSubTypeEnum.ZERO, DeviceTypeVideoEnum.ZERO),
+
+ ;
+
+
+ @Schema(enumAsRef = true)
+ private final DeviceTypeEnum type;
+
+ @Schema(enumAsRef = true)
+ private final DeviceSubTypeEnum subType;
+
+ @Schema(enumAsRef = true)
+ private final DeviceTypeVideoEnum videoType;
+
+ DeviceVideoEnum(DeviceTypeEnum type, DeviceSubTypeEnum subType, DeviceTypeVideoEnum videoType) {
+ this.type = type;
+ this.subType = subType;
+ this.videoType = videoType;
+ }
+
+ public DeviceTypeEnum getType() {
+ return type;
+ }
+
+ public DeviceSubTypeEnum getSubType() {
+ return subType;
+ }
+
+ public DeviceTypeVideoEnum getVideoType() {
+ return videoType;
+ }
+
+ @JsonValue
+ public String getDevice() {
+ return String.format("%s-%s-%s", type.getType(), subType.getSubType(),videoType.getVideoType());
+ }
+
+
+ @JsonCreator
+ public static DeviceVideoEnum find(String key) {
+ String finalKey = key.replaceAll(" ","");
+ return Arrays.stream(values()).filter(device -> device.toString().equals(finalKey))
+ .findAny().orElseThrow(() -> new CloudSDKException(DeviceEnum.class, finalKey));
+ }
+
+
+}
diff --git a/dk-common/common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java b/dk-common/common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java
index dd6ebb1..46bccfd 100644
--- a/dk-common/common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java
+++ b/dk-common/common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java
@@ -24,6 +24,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
public static final String SLASH = "/";
+ public static final String DASH = "-";
+
/**
* 获取参数不为空值
*
diff --git a/dk-common/common-redis/src/main/java/org/dromara/common/redis/config/RedisConst.java b/dk-common/common-redis/src/main/java/org/dromara/common/redis/config/RedisConst.java
index 68548ed..7f2713f 100644
--- a/dk-common/common-redis/src/main/java/org/dromara/common/redis/config/RedisConst.java
+++ b/dk-common/common-redis/src/main/java/org/dromara/common/redis/config/RedisConst.java
@@ -19,6 +19,8 @@ public final class RedisConst {
public static final Integer WEBSOCKET_ALIVE_SECOND = 60 * 60 * 24;
+ public static final Integer DEVICE_VIDEO_STATUE_SECOND = 60 * 50;
+
public static final String DEVICE_ONLINE_PREFIX = "online" + DELIMITER;
public static final String WEBSOCKET_PREFIX = "webSocket" + DELIMITER;
@@ -62,4 +64,7 @@ public final class RedisConst {
public static final String FILE_UPLOADING_PREFIX = "file_uploading" + DELIMITER;
public static final String DRONE_CONTROL_PREFiX = "control_source" + DELIMITER;
+
+
+ public static final String VIDEO_STATUS = "video_status" + DELIMITER;
}
diff --git a/dk-modules/sample/pom.xml b/dk-modules/sample/pom.xml
index ac6066c..1a4c98a 100644
--- a/dk-modules/sample/pom.xml
+++ b/dk-modules/sample/pom.xml
@@ -140,6 +140,10 @@
org.dromara
api-workflow
+
+ org.dromara
+ common-rocketmq
+
org.springframework.boot
spring-boot-starter
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceRedisService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceRedisService.java
index 601a862..3e78f12 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceRedisService.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceRedisService.java
@@ -1,6 +1,7 @@
package org.dromara.sample.manage.service;
import org.dromara.common.sdk.cloudapi.device.OsdDockDrone;
+import org.dromara.common.sdk.cloudapi.device.VideoId;
import org.dromara.common.sdk.cloudapi.firmware.OtaProgress;
import org.dromara.sample.component.mqtt.model.EventsReceiver;
import org.dromara.sample.manage.model.dto.DeviceDTO;
@@ -126,4 +127,12 @@ public interface IDeviceRedisService {
*/
List getDevicesOsdInfo(List snList);
+
+ Boolean checkDeviceVideo(String sn);
+
+ void setDeviceVideo(String sn, Object data);
+
+ Optional getDeviceVideo(String sn, Object data);
+
+ Boolean delDeviceVideo(String sn);
}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceRedisServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceRedisServiceImpl.java
index 2892e1d..d3310d7 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceRedisServiceImpl.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceRedisServiceImpl.java
@@ -2,7 +2,9 @@ package org.dromara.sample.manage.service.impl;
import org.dromara.common.redis.config.RedisConst;
import org.dromara.common.redis.utils.RedisOpsUtils;
+import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.sdk.cloudapi.device.OsdDockDrone;
+import org.dromara.common.sdk.cloudapi.device.VideoId;
import org.dromara.common.sdk.cloudapi.firmware.OtaProgress;
import org.dromara.sample.component.mqtt.model.EventsReceiver;
import org.dromara.sample.manage.model.dto.DeviceDTO;
@@ -133,4 +135,25 @@ public class DeviceRedisServiceImpl implements IDeviceRedisService {
return resultList;
}
+
+ @Override
+ public Boolean checkDeviceVideo(String sn) {
+
+ return RedisOpsUtils.checkExist(RedisConst.VIDEO_STATUS + sn) && RedisOpsUtils.getExpire(RedisConst.VIDEO_STATUS + sn) > 0;
+ }
+
+ @Override
+ public void setDeviceVideo(String sn, Object data) {
+ RedisOpsUtils.setWithExpire(RedisConst.VIDEO_STATUS + sn, data, RedisConst.DEVICE_VIDEO_STATUE_SECOND);
+ }
+
+ @Override
+ public Optional getDeviceVideo(String sn, Object data) {
+ return Optional.ofNullable((VideoId) RedisOpsUtils.get(RedisConst.VIDEO_STATUS + sn));
+ }
+
+ @Override
+ public Boolean delDeviceVideo(String sn) {
+ return RedisOpsUtils.del(sn);
+ }
}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java
index 87c84bb..359f8fd 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java
@@ -2,8 +2,10 @@ package org.dromara.sample.manage.service.impl;
import cn.hutool.core.util.ObjectUtil;
import org.dromara.common.redis.utils.RedisOpsUtils;
+import org.dromara.common.rocketmq.producer.MessageProducerUtil;
import org.dromara.common.sdk.cloudapi.device.*;
import org.dromara.common.sdk.cloudapi.device.api.AbstractDeviceService;
+import org.dromara.common.sdk.cloudapi.livestream.VideoTypeEnum;
import org.dromara.common.sdk.cloudapi.psdk.PsdkUiResource;
import org.dromara.common.sdk.cloudapi.psdk.PsdkWidgetValues;
import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl;
@@ -36,6 +38,9 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
+import static org.dromara.common.core.utils.StringUtils.DASH;
+import static org.dromara.common.core.utils.StringUtils.SLASH;
+
/**
* @author sean
* @version 1.7
@@ -172,6 +177,34 @@ public class SDKDeviceService extends AbstractDeviceService {
deviceService.pushOsdDataToWeb(device.getWorkspaceId(), BizCodeEnum.DOCK_OSD, from, request.getData());
}
+ @Override
+ public void dockLiveStatusUpdate(TopicStateRequest request, MessageHeaders headers){
+ Optional dockOnline = deviceRedisService.getDeviceOnline(request.getGateway());
+ Optional deviceOnline = deviceRedisService.getDeviceOnline(dockOnline.get().getChildDeviceSn());
+ if(deviceOnline.isEmpty()){
+ return;
+ }
+ if(request.getData().getLiveStatus().size() == 0 ){
+ String deviceVideoEnum = DeviceVideoEnum.find(deviceOnline.get().getDeviceName()).getDevice();
+ if(!deviceRedisService.checkDeviceVideo(deviceOnline.get().getDeviceSn())){
+ VideoId videoId = new VideoId(deviceOnline.get().getDeviceSn()+deviceVideoEnum+SLASH + VideoTypeEnum.NORMAL + DASH+DeviceTypeVideoEnum.ZERO.getVideoType());
+ deviceRedisService.setDeviceVideo(deviceOnline.get().getDeviceSn(),videoId);
+ MessageProducerUtil.sendAsyncProducerMessage("videoStartConsum","videoStopStart",deviceOnline.get().getDeviceSn(),videoId.toString());
+ }
+
+ }
+ List dockLiveStatusDataList = request.getData().getLiveStatus().stream().filter(item ->
+ item.getVideoId().getDroneSn().equals(dockOnline.get().getChildDeviceSn()) && item.getStatus() == true).collect(Collectors.toList());
+ if(dockLiveStatusDataList.size() == 0){
+ String deviceVideoEnum = DeviceVideoEnum.find(deviceOnline.get().getDeviceName()).getDevice();
+ if(!deviceRedisService.checkDeviceVideo(deviceOnline.get().getDeviceSn())){
+ VideoId videoId = new VideoId(deviceOnline.get().getDeviceSn()+deviceVideoEnum+SLASH + VideoTypeEnum.NORMAL + DASH+DeviceTypeVideoEnum.ZERO.getVideoType());
+ deviceRedisService.setDeviceVideo(deviceOnline.get().getDeviceSn(),videoId);
+ MessageProducerUtil.sendAsyncProducerMessage("videoStartConsum","videoStopStart",deviceOnline.get().getDeviceSn(),videoId.toString());
+ }
+ }
+ }
+
@Override
public void osdDockDrone(TopicOsdRequest request, MessageHeaders headers) {
String from = request.getFrom();
@@ -190,12 +223,18 @@ public class SDKDeviceService extends AbstractDeviceService {
}
DeviceDTO device = deviceOpt.get();
+ String deviceVideoEnum = DeviceVideoEnum.find(device.getDeviceName()).getDevice();
+ if(!deviceRedisService.checkDeviceVideo(device.getDeviceSn())){
+ VideoId videoId = new VideoId(device.getDeviceSn()+deviceVideoEnum+SLASH + VideoTypeEnum.NORMAL + DASH+DeviceTypeVideoEnum.ZERO.getVideoType());
+ deviceRedisService.setDeviceVideo(device.getDeviceSn(),videoId);
+ MessageProducerUtil.sendAsyncProducerMessage("videoStartConsum","videoStart",device.getDeviceSn(),videoId.toString());
+ }
deviceRedisService.setDeviceOnline(device);
deviceRedisService.setDeviceOsd(from, request.getData());
-
deviceService.pushOsdDataToWeb(device.getWorkspaceId(), BizCodeEnum.DEVICE_OSD, from, request.getData());
}
+
@Override
public void osdRemoteControl(TopicOsdRequest request, MessageHeaders headers) {
String from = request.getFrom();
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/rocketmq/RocketMqConsum.java b/dk-modules/sample/src/main/java/org/dromara/sample/rocketmq/RocketMqConsum.java
new file mode 100644
index 0000000..0341e00
--- /dev/null
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/rocketmq/RocketMqConsum.java
@@ -0,0 +1,46 @@
+package org.dromara.sample.rocketmq;
+
+import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.dromara.common.sdk.cloudapi.device.VideoId;
+import org.dromara.common.sdk.cloudapi.livestream.LensChangeVideoTypeEnum;
+import org.dromara.common.sdk.cloudapi.livestream.UrlTypeEnum;
+import org.dromara.common.sdk.cloudapi.livestream.VideoQualityEnum;
+import org.dromara.sample.manage.model.dto.LiveTypeDTO;
+import org.dromara.sample.manage.service.ILiveStreamService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+/**
+ * @auther wuyuan
+ * @data 2025/5/12
+ */
+@RocketMQMessageListener(consumerGroup = "videoStart",topic = "videoStartConsum")
+@Component
+public class RocketMqConsum implements RocketMQListener {
+
+ @Autowired
+ private ILiveStreamService liveStreamService;
+
+ @Override
+ public void onMessage(MessageExt message) {
+ String tags = message.getTags();
+ String videoIds = new String(message.getBody());
+ VideoId videoId = new VideoId(videoIds);
+ LiveTypeDTO liveTypeDTO = new LiveTypeDTO();
+ liveTypeDTO.setUrlType(UrlTypeEnum.WHIP);
+ liveTypeDTO.setVideoType(LensChangeVideoTypeEnum.WIDE);
+ liveTypeDTO.setVideoQuality(VideoQualityEnum.ULTRA_HD);
+ liveTypeDTO.setVideoId(videoId);
+ if(tags.equals("videoStart")){
+ liveStreamService.liveStart(liveTypeDTO);
+ }else if(tags.equals("videoStopStart")){
+ liveStreamService.liveStop(videoId);
+ liveStreamService.liveStart(liveTypeDTO);
+ }
+
+
+ }
+}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java
index a28e0a5..0182596 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java
@@ -127,10 +127,14 @@ public class WaylineJobController {
@RequestParam(name = "device_sn") String deviceSn, HttpServletRequest req, HttpServletResponse rsp) {
try {
Optional> runningWaylineJob = waylineRedisService.getRunningWaylineJob(deviceSn);
- if(runningWaylineJob.isEmpty())return;
+ if(runningWaylineJob.isEmpty()) {
+ return;
+ }
String jobId = runningWaylineJob.get().getOutput().getExt().getFlightId();
Optional waylineJobDTO = waylineJobService.getJobByJobId(workspaceId, jobId);
- if(waylineJobDTO.isEmpty())return;
+ if(waylineJobDTO.isEmpty()) {
+ return;
+ }
URL url = waylineFileService.getObjectUrl(workspaceId, waylineJobDTO.get().getFileId());
rsp.sendRedirect(url.toString());
} catch (IOException | SQLException e) {
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IFlightTaskService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IFlightTaskService.java
index 4b4bb20..c4a2bce 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IFlightTaskService.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IFlightTaskService.java
@@ -74,5 +74,7 @@ public interface IFlightTaskService {
*/
void updateJobStatus(String workspaceId, String jobId, UpdateJobParam param);
+ void updateJobDeviceSnStatus(String workspaceId, String deviceSn, UpdateJobParam param);
+
void retryPrepareJob(ConditionalWaylineJobKey jobKey, WaylineJobDTO waylineJob);
}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java
index e3011e4..f87d1f6 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java
@@ -505,6 +505,34 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl
}
+ @Override
+ public void updateJobDeviceSnStatus(String workspaceId, String deviceSn, UpdateJobParam param) {
+ Optional> runningWaylineJob = waylineRedisService.getRunningWaylineJob(deviceSn);
+ if(runningWaylineJob.isEmpty()) {
+ return;
+ }
+ String jobId = runningWaylineJob.get().getOutput().getExt().getFlightId();
+ Optional waylineJobOpt = waylineJobService.getJobByJobId(workspaceId, jobId);
+ if (waylineJobOpt.isEmpty()) {
+ throw new RuntimeException("作业不存在。");
+ }
+ WaylineJobDTO waylineJob = waylineJobOpt.get();
+ WaylineJobStatusEnum statusEnum = waylineJobService.getWaylineState(waylineJob.getDockSn());
+ if (statusEnum.getEnd() || WaylineJobStatusEnum.PENDING == statusEnum) {
+ throw new RuntimeException("路线作业状态不匹配,因此无法执行该操作。");
+ }
+
+ switch (param.getStatus()) {
+ case PAUSE:
+ pauseJob(workspaceId, waylineJob.getDockSn(), jobId, statusEnum);
+ break;
+ case RESUME:
+ resumeJob(workspaceId, waylineJob.getDockSn(), jobId, statusEnum);
+ break;
+ }
+
+ }
+
private void pauseJob(String workspaceId, String dockSn, String jobId, WaylineJobStatusEnum statusEnum) {
if (WaylineJobStatusEnum.PAUSED == statusEnum && jobId.equals(waylineRedisService.getPausedWaylineJobId(dockSn))) {
waylineRedisService.setPausedWaylineJob(dockSn, jobId);
diff --git a/dk-visual/nacos/src/main/resources/application.properties b/dk-visual/nacos/src/main/resources/application.properties
index 972740f..44fe8a3 100644
--- a/dk-visual/nacos/src/main/resources/application.properties
+++ b/dk-visual/nacos/src/main/resources/application.properties
@@ -40,9 +40,9 @@ spring.sql.init.platform=mysql
db.num=1
### Connect URL of DB:
-db.url.0=jdbc:mysql://127.0.0.1:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
+db.url.0=jdbc:mysql://114.235.183.147:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
db.user.0=root
-db.password.0=123456
+db.password.0=dkcy@yf
### the maximum retry times for push
nacos.config.push.maxRetryTime=50