Browse Source

取消负载控制验证

dev
吴远 3 days ago
parent
commit
4a63ca8a32
  1. 3
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/control/api/AbstractControlService.java
  2. 4
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceVideoEnum.java
  3. 23
      dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java
  4. 5
      dk-common/common-websocket/pom.xml
  5. 18
      dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DockController.java
  6. 10
      dk-modules/sample/src/main/java/org/dromara/sample/control/model/enums/PayloadCommandsEnum.java
  7. 14
      dk-modules/sample/src/main/java/org/dromara/sample/control/model/param/DronePayloadParam.java
  8. 6
      dk-modules/sample/src/main/java/org/dromara/sample/control/service/IControlService.java
  9. 54
      dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java
  10. 22
      dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringAreaSetImpl.java
  11. 23
      dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringModeSetImpl.java
  12. 22
      dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringPointSetImpl.java
  13. 14
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
  14. 10
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/enums/PropertySetFieldEnum.java
  15. 41
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java
  16. 36
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalGaiModeReceiver.java
  17. 36
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermLowerLimitReceiver.java
  18. 36
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermStateReceiver.java
  19. 36
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermUpperLimitReceiver.java
  20. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java
  21. 35
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java
  22. 37
      dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java
  23. 1
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java
  24. 4
      dk-visual/nacos/src/main/resources/application.properties
  25. 2
      pom.xml

3
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/control/api/AbstractControlService.java

@ -436,7 +436,6 @@ public abstract class AbstractControlService {
* @param request data
* @return services_reply
*/
@CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2, include = GatewayTypeEnum.DOCK)
public TopicServicesResponse<ServicesReplyData> irMeteringModeSet(GatewayManager gateway, IrMeteringModeSetRequest request) {
return servicesPublish.publish(
gateway.getGatewaySn(),
@ -450,7 +449,6 @@ public abstract class AbstractControlService {
* @param request data
* @return services_reply
*/
@CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2, include = GatewayTypeEnum.DOCK)
public TopicServicesResponse<ServicesReplyData> irMeteringPointSet(GatewayManager gateway, IrMeteringPointSetRequest request) {
return servicesPublish.publish(
gateway.getGatewaySn(),
@ -464,7 +462,6 @@ public abstract class AbstractControlService {
* @param request data
* @return services_reply
*/
@CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2, include = GatewayTypeEnum.DOCK)
public TopicServicesResponse<ServicesReplyData> irMeteringAreaSet(GatewayManager gateway, IrMeteringAreaSetRequest request) {
return servicesPublish.publish(
gateway.getGatewaySn(),

4
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceVideoEnum.java

@ -76,5 +76,9 @@ public enum DeviceVideoEnum {
.findAny().orElseThrow(() -> new CloudSDKException(DeviceEnum.class, finalKey));
}
public static void main(String[] args) {
System.out.println(DeviceVideoEnum.find("Matrice 30T").getDevice());
}
}

23
dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java

@ -309,6 +309,29 @@ public class OssClient {
}
}
public long downloadZip(String key, OutputStream out) {
try {
// 构建下载请求
DownloadRequest<ResponseInputStream<GetObjectResponse>> downloadRequest = DownloadRequest.builder()
// 文件对象
.getObjectRequest(y -> y.bucket(properties.getBucketName())
.key(key)
.build())
.addTransferListener(LoggingTransferListener.create())
// 使用订阅转换器
.responseTransformer(AsyncResponseTransformer.toBlockingInputStream())
.build();
// 使用 S3TransferManager 下载文件
Download<ResponseInputStream<GetObjectResponse>> responseFuture = transferManager.download(downloadRequest);
// 输出到流中
try (ResponseInputStream<GetObjectResponse> responseStream = responseFuture.completionFuture().join().result()) { // auto-closeable stream
return responseStream.transferTo(out); // 阻塞调用线程 blocks the calling thread
}
} catch (Exception e) {
throw new OssException("文件下载失败,错误信息:[" + e.getMessage() + "]");
}
}
/**
* 删除云存储服务中指定路径下文件
*

5
dk-common/common-websocket/pom.xml

@ -48,6 +48,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<!--<dependency>
<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
<version>2.0.12</version>
</dependency>-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>common-cloudsdk</artifactId>

18
dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DockController.java

@ -71,5 +71,23 @@ public class DockController {
return controlService.payloadCommands(param);
}
@PostMapping("/{sn}/payload/irMeteringModeSet")
public HttpResultResponse irMeteringModeSet(@PathVariable String sn, @Valid @RequestBody PayloadCommandsParam param) throws Exception {
param.setSn(sn);
return controlService.irMeteringModeSet(param);
}
@PostMapping("/{sn}/payload/irMeteringPointSet")
public HttpResultResponse irMeteringPointSet(@PathVariable String sn, @Valid @RequestBody PayloadCommandsParam param) throws Exception {
param.setSn(sn);
return controlService.irMeteringPointSet(param);
}
@PostMapping("/{sn}/payload/irMeteringAreaSet")
public HttpResultResponse irMeteringAreaSet(@PathVariable String sn, @Valid @RequestBody PayloadCommandsParam param) throws Exception {
param.setSn(sn);
return controlService.irMeteringAreaSet(param);
}
}

10
dk-modules/sample/src/main/java/org/dromara/sample/control/model/enums/PayloadCommandsEnum.java

@ -2,6 +2,8 @@ package org.dromara.sample.control.model.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import org.dromara.common.sdk.cloudapi.control.ControlMethodEnum;
import org.dromara.common.sdk.cloudapi.control.IrMeteringModeSetRequest;
import org.dromara.common.sdk.cloudapi.control.PayloadControlMethodEnum;
import java.util.Arrays;
@ -25,7 +27,13 @@ public enum PayloadCommandsEnum {
CAMERA_FOCAL_LENGTH_SET(PayloadControlMethodEnum.CAMERA_FOCAL_LENGTH_SET, org.dromara.sample.control.service.impl.CameraFocalLengthSetImpl.class),
GIMBAL_RESET(PayloadControlMethodEnum.GIMBAL_RESET, org.dromara.sample.control.service.impl.GimbalResetImpl.class);
GIMBAL_RESET(PayloadControlMethodEnum.GIMBAL_RESET, org.dromara.sample.control.service.impl.GimbalResetImpl.class),
IR_METERING_MODE_SET(PayloadControlMethodEnum.IR_METERING_MODE_SET, org.dromara.sample.control.service.impl.IrMeteringModeSetImpl.class),
IR_METERING_POINT_SET(PayloadControlMethodEnum.IR_METERING_POINT_SET, org.dromara.sample.control.service.impl.IrMeteringPointSetImpl.class),
IR_METERING_AREA_SET(PayloadControlMethodEnum.IR_METERING_AREA_SET, org.dromara.sample.control.service.impl.IrMeteringAreaSetImpl.class);
PayloadControlMethodEnum cmd;

14
dk-modules/sample/src/main/java/org/dromara/sample/control/model/param/DronePayloadParam.java

@ -1,6 +1,8 @@
package org.dromara.sample.control.model.param;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
@ -29,6 +31,18 @@ public class DronePayloadParam {
private CameraModeEnum cameraMode;
private Integer mode;
@Min(0)
@Max(1)
private Float width;
/**
* Temperature measurement area height
*/
@Min(0)
@Max(1)
private Float height;
/**
* true: Lock the gimbal, the gimbal and the drone rotate together.
* false: Only the gimbal rotates, but the drone does not.

6
dk-modules/sample/src/main/java/org/dromara/sample/control/service/IControlService.java

@ -70,4 +70,10 @@ public interface IControlService {
* @return
*/
HttpResultResponse payloadCommands(PayloadCommandsParam param) throws Exception;
HttpResultResponse irMeteringModeSet(PayloadCommandsParam param) throws Exception;
HttpResultResponse irMeteringPointSet(PayloadCommandsParam param) throws Exception;
HttpResultResponse irMeteringAreaSet(PayloadCommandsParam param) throws Exception;
}

54
dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java

@ -301,4 +301,58 @@ public class ControlServiceImpl implements IControlService {
HttpResultResponse.success()
: HttpResultResponse.error(serviceReply.getResult());
}
@Override
public HttpResultResponse irMeteringModeSet(PayloadCommandsParam param) throws Exception {
param.getCmd().getClazz()
.getDeclaredConstructor(DronePayloadParam.class)
.newInstance(param.getData())
.checkCondition(param.getSn());
TopicServicesResponse<ServicesReplyData> response = abstractControlService.irMeteringModeSet(
SDKManager.getDeviceSDK(param.getSn()),
mapper.convertValue(param.getData(), IrMeteringModeSetRequest.class));
ServicesReplyData serviceReply = response.getData();
return serviceReply.getResult().isSuccess() ?
HttpResultResponse.success()
: HttpResultResponse.error(serviceReply.getResult());
}
@Override
public HttpResultResponse irMeteringPointSet(PayloadCommandsParam param) throws Exception {
param.getCmd().getClazz()
.getDeclaredConstructor(DronePayloadParam.class)
.newInstance(param.getData())
.checkCondition(param.getSn());
TopicServicesResponse<ServicesReplyData> response = abstractControlService.irMeteringPointSet(
SDKManager.getDeviceSDK(param.getSn()),
mapper.convertValue(param.getData(), IrMeteringPointSetRequest.class));
ServicesReplyData serviceReply = response.getData();
return serviceReply.getResult().isSuccess() ?
HttpResultResponse.success()
: HttpResultResponse.error(serviceReply.getResult());
}
@Override
public HttpResultResponse irMeteringAreaSet(PayloadCommandsParam param) throws Exception {
param.getCmd().getClazz()
.getDeclaredConstructor(DronePayloadParam.class)
.newInstance(param.getData())
.checkCondition(param.getSn());
TopicServicesResponse<ServicesReplyData> response = abstractControlService.irMeteringAreaSet(
SDKManager.getDeviceSDK(param.getSn()),
mapper.convertValue(param.getData(), IrMeteringAreaSetRequest.class));
ServicesReplyData serviceReply = response.getData();
return serviceReply.getResult().isSuccess() ?
HttpResultResponse.success()
: HttpResultResponse.error(serviceReply.getResult());
}
}

22
dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringAreaSetImpl.java

@ -0,0 +1,22 @@
package org.dromara.sample.control.service.impl;
import org.dromara.sample.control.model.param.DronePayloadParam;
/**
* @author sean
* @version 1.4
* @date 2023/4/23
*/
public class IrMeteringAreaSetImpl extends PayloadCommandsHandler {
public IrMeteringAreaSetImpl(DronePayloadParam param) {
super(param);
}
@Override
public boolean canPublish(String deviceSn) {
super.canPublish(deviceSn);
return true;
}
}

23
dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringModeSetImpl.java

@ -0,0 +1,23 @@
package org.dromara.sample.control.service.impl;
import org.dromara.common.sdk.cloudapi.device.CameraStateEnum;
import org.dromara.sample.control.model.param.DronePayloadParam;
/**
* @author sean
* @version 1.4
* @date 2023/4/23
*/
public class IrMeteringModeSetImpl extends PayloadCommandsHandler {
public IrMeteringModeSetImpl(DronePayloadParam param) {
super(param);
}
@Override
public boolean canPublish(String deviceSn) {
super.canPublish(deviceSn);
return true;
}
}

22
dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringPointSetImpl.java

@ -0,0 +1,22 @@
package org.dromara.sample.control.service.impl;
import org.dromara.sample.control.model.param.DronePayloadParam;
/**
* @author sean
* @version 1.4
* @date 2023/4/23
*/
public class IrMeteringPointSetImpl extends PayloadCommandsHandler {
public IrMeteringPointSetImpl(DronePayloadParam param) {
super(param);
}
@Override
public boolean canPublish(String deviceSn) {
super.canPublish(deviceSn);
return true;
}
}

14
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java

@ -257,4 +257,18 @@ public class DeviceController {
return PropertySetReplyResultEnum.SUCCESS.getResult() == result ?
HttpResultResponse.success() : HttpResultResponse.error(result, String.valueOf(result));
}
@Operation(summary = "设置无人机的属性参数。", description = "设置无人机的属性参数。")
@PutMapping("/{workspace_id}/devices/{device_sn}/propertyData")
public HttpResultResponse devicePropertySetData(@PathVariable("workspace_id") String workspaceId,
@PathVariable("device_sn") String dockSn,
@RequestBody JsonNode param) {
if (param.size() != 1) {
return HttpResultResponse.error(CloudSDKErrorEnum.INVALID_PARAMETER);
}
int result = deviceService.devicePropertySetData(workspaceId, dockSn, param);
return PropertySetReplyResultEnum.SUCCESS.getResult() == result ?
HttpResultResponse.success() : HttpResultResponse.error(result, String.valueOf(result));
}
}

10
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/enums/PropertySetFieldEnum.java

@ -27,15 +27,15 @@ public enum PropertySetFieldEnum {
// EXIT_WAYLINE_WHEN_RC_LOST(PropertySetEnum.EXIT_WAYLINE_WHEN_RC_LOST, .class),
//
// THERMAL_CURRENT_PALETTE_STYLE(PropertySetEnum.THERMAL_CURRENT_PALETTE_STYLE, .class),
THERMAL_CURRENT_PALETTE_STYLE(PropertySetEnum.THERMAL_CURRENT_PALETTE_STYLE, ThermalCurrentPaletteStyleReceiver.class),
//
// THERMAL_GAIN_MODE(PropertySetEnum.THERMAL_GAIN_MODE, .class),
THERMAL_GAIN_MODE(PropertySetEnum.THERMAL_GAIN_MODE, ThermalGaiModeReceiver.class),
//
// THERMAL_ISOTHERM_STATE(PropertySetEnum.THERMAL_ISOTHERM_STATE, .class),
THERMAL_ISOTHERM_STATE(PropertySetEnum.THERMAL_ISOTHERM_STATE, ThermalIsothermStateReceiver.class),
//
// THERMAL_ISOTHERM_UPPER_LIMIT(PropertySetEnum.THERMAL_ISOTHERM_UPPER_LIMIT, .class),
THERMAL_ISOTHERM_UPPER_LIMIT(PropertySetEnum.THERMAL_ISOTHERM_UPPER_LIMIT, ThermalIsothermUpperLimitReceiver.class),
//
// THERMAL_ISOTHERM_LOWER_LIMIT(PropertySetEnum.THERMAL_ISOTHERM_LOWER_LIMIT, .class),
THERMAL_ISOTHERM_LOWER_LIMIT(PropertySetEnum.THERMAL_ISOTHERM_LOWER_LIMIT, ThermalIsothermLowerLimitReceiver.class),
;

41
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java

@ -0,0 +1,41 @@
package org.dromara.sample.manage.model.receiver;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.device.OsdDockDrone;
import org.dromara.common.sdk.cloudapi.device.PayloadIndex;
import org.dromara.common.sdk.cloudapi.device.ThermalPaletteStyleEnum;
import org.dromara.common.sdk.cloudapi.property.ThermalCurrentPaletteStyleSet;
import java.util.Map;
import java.util.Objects;
/**
* @author sean.zhou
* @date 2021/11/18
* @version 0.1
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ThermalCurrentPaletteStyleReceiver extends BasicDeviceProperty {
private String payloadIndex;
private int thermalCurrentPaletteStyle;
@Override
public boolean valid() {
return Objects.nonNull(payloadIndex) && Objects.nonNull(thermalCurrentPaletteStyle);
}
@Override
public boolean canPublish(OsdDockDrone osd) {
return true;
}
}

36
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalGaiModeReceiver.java

@ -0,0 +1,36 @@
package org.dromara.sample.manage.model.receiver;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.device.OsdDockDrone;
import java.util.Objects;
/**
* @author sean.zhou
* @date 2021/11/18
* @version 0.1
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ThermalGaiModeReceiver extends BasicDeviceProperty {
private String payloadIndex;
private int thermalGainMde;
@Override
public boolean valid() {
return Objects.nonNull(payloadIndex) && Objects.nonNull(thermalGainMde);
}
@Override
public boolean canPublish(OsdDockDrone osd) {
return true;
}
}

36
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermLowerLimitReceiver.java

@ -0,0 +1,36 @@
package org.dromara.sample.manage.model.receiver;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.device.OsdDockDrone;
import java.util.Objects;
/**
* @author sean.zhou
* @date 2021/11/18
* @version 0.1
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ThermalIsothermLowerLimitReceiver extends BasicDeviceProperty {
private String payloadIndex;
private int thermalIsothermLowerLimit;
@Override
public boolean valid() {
return Objects.nonNull(payloadIndex) && Objects.nonNull(thermalIsothermLowerLimit);
}
@Override
public boolean canPublish(OsdDockDrone osd) {
return true;
}
}

36
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermStateReceiver.java

@ -0,0 +1,36 @@
package org.dromara.sample.manage.model.receiver;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.device.OsdDockDrone;
import java.util.Objects;
/**
* @author sean.zhou
* @date 2021/11/18
* @version 0.1
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ThermalIsothermStateReceiver extends BasicDeviceProperty {
private String payloadIndex;
private int thermalIsothermState;
@Override
public boolean valid() {
return Objects.nonNull(payloadIndex) && Objects.nonNull(thermalIsothermState);
}
@Override
public boolean canPublish(OsdDockDrone osd) {
return true;
}
}

36
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermUpperLimitReceiver.java

@ -0,0 +1,36 @@
package org.dromara.sample.manage.model.receiver;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.device.OsdDockDrone;
import java.util.Objects;
/**
* @author sean.zhou
* @date 2021/11/18
* @version 0.1
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ThermalIsothermUpperLimitReceiver extends BasicDeviceProperty {
private String payloadIndex;
private int thermalIsothermUpperLimit;
@Override
public boolean valid() {
return Objects.nonNull(payloadIndex) && Objects.nonNull(thermalIsothermUpperLimit);
}
@Override
public boolean canPublish(OsdDockDrone osd) {
return true;
}
}

2
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java

@ -167,6 +167,8 @@ public interface IDeviceService {
*/
int devicePropertySet(String workspaceId, String dockSn, JsonNode param);
int devicePropertySetData(String workspaceId, String dockSn, JsonNode param);
/**
* Check the working status of the dock.
* @param dockSn

35
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java

@ -687,12 +687,45 @@ public class DeviceServiceImpl implements IDeviceService {
if (!isPublish) {
return PropertySetReplyResultEnum.SUCCESS.getResult();
}
BaseModel baseModel = objectMapper.convertValue(param, propertyEnum.getProperty().getClazz());
BaseModel baseModel = objectMapper.convertValue(param.get("thermal_current_palette_style"), propertyEnum.getProperty().getClazz());
PropertySetReplyResultEnum result = abstractPropertyService.propertySet(
SDKManager.getDeviceSDK(dockSn), propertyEnum.getProperty(), baseModel);
return result.getResult();
}
@Override
public int devicePropertySetData(String workspaceId, String dockSn, JsonNode param) {
String property = param.fieldNames().next();
PropertySetFieldEnum propertyEnum = PropertySetFieldEnum.find(property);
Optional<DeviceDTO> dockOpt = deviceRedisService.getDeviceOnline(dockSn);
if (dockOpt.isEmpty()) {
throw new RuntimeException("Dock处于脱机状态。");
}
String childSn = dockOpt.get().getChildDeviceSn();
Optional<OsdDockDrone> osdOpt = deviceRedisService.getDeviceOsd(childSn, OsdDockDrone.class);
if (osdOpt.isEmpty()) {
throw new RuntimeException("设备处于脱机状态。");
}
// Make sure the data is valid.
BasicDeviceProperty basicDeviceProperty = objectMapper.convertValue(param.get(property), propertyEnum.getClazz());
boolean valid = basicDeviceProperty.valid();
if (!valid) {
throw new IllegalArgumentException(CommonErrorEnum.ILLEGAL_ARGUMENT.getMessage());
}
boolean isPublish = basicDeviceProperty.canPublish(osdOpt.get());
if (!isPublish) {
return PropertySetReplyResultEnum.SUCCESS.getResult();
}
BaseModel baseModel = objectMapper.convertValue(param.get(property), propertyEnum.getProperty().getClazz());
PropertySetReplyResultEnum result = abstractPropertyService.propertySet(
SDKManager.getDeviceSDK(dockSn), propertyEnum.getProperty(), baseModel);
return result.getResult();
}
@Override
public DockModeCodeEnum getDockMode(String dockSn) {
return deviceRedisService.getDeviceOsd(dockSn, OsdDock.class)

37
dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java

@ -1,8 +1,11 @@
package org.dromara.sample.media.controller;
import com.amazonaws.util.IOUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.oss.core.OssClient;
import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.common.sdk.common.PaginationData;
@ -13,9 +16,12 @@ import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.io.*;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author sean
@ -86,6 +92,35 @@ public class FileController {
return HttpResultResponse.success(filesList);
}
@GetMapping("/{workspace_id}/file/downloadZip/{job_id}")
public void downloadZip(HttpServletResponse response, @PathVariable(name = "workspace_id") String workspaceId,
@PathVariable(name = "job_id") String jobId, @RequestParam(name = "jobName", required = false) String jobName) throws UnsupportedEncodingException {
List<MediaFileDTO> mediaFileDTO = fileService.getFilesByWorkspaceAndJobId(workspaceId, jobId);
String fileName = "jobName.zip";
response.setContentType("application/zip");
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
try (OutputStream out = response.getOutputStream();
ZipOutputStream zs = new ZipOutputStream(new BufferedOutputStream(out))) {
zs.setMethod(ZipOutputStream.DEFLATED); // 设置压缩方法
for (MediaFileDTO mediaFile : mediaFileDTO) {
OssClient storage = OssFactory.instance("mediafile");
//String privateUrlURL = storage.getPrivateUrl(mediaFile.getObjectKey(), 3600);
InputStream is = storage.getObjectContent(mediaFile.getObjectKey());
String uniqueFileName = mediaFile.getFileName(); // 假设MediaFileDTO有getFileName方法
ZipEntry entry = new ZipEntry(uniqueFileName); // 使用每个文件的实际名称
zs.putNextEntry(entry);
IOUtils.copy(is, zs);
zs.closeEntry();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根据文件id查询图片的偏航角
* @param fileId

1
dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java

@ -109,6 +109,7 @@ public class FileServiceImpl implements IFileService {
.collect(Collectors.toList());
}
@Override
public PaginationData<MediaFileDTO> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize,List<Integer> proIds) {
LoginUser loginUser = LoginHelper.getLoginUser();

4
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

2
pom.xml

@ -87,7 +87,7 @@
<id>dev</id>
<properties>
<!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active>
<profiles.active>wuyuan</profiles.active>
<nacos.server>127.0.0.1:8848</nacos.server>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>

Loading…
Cancel
Save