From 4a63ca8a324b5570bb9b5bc16c876dcad7c65a28 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 18 Jun 2025 14:17:33 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../control/api/AbstractControlService.java | 3 -- .../sdk/cloudapi/device/DeviceVideoEnum.java | 4 ++ .../dromara/common/oss/core/OssClient.java | 23 ++++++++ dk-common/common-websocket/pom.xml | 5 ++ .../control/controller/DockController.java | 18 +++++++ .../model/enums/PayloadCommandsEnum.java | 10 +++- .../model/param/DronePayloadParam.java | 14 +++++ .../control/service/IControlService.java | 6 +++ .../service/impl/ControlServiceImpl.java | 54 +++++++++++++++++++ .../service/impl/IrMeteringAreaSetImpl.java | 22 ++++++++ .../service/impl/IrMeteringModeSetImpl.java | 23 ++++++++ .../service/impl/IrMeteringPointSetImpl.java | 22 ++++++++ .../manage/controller/DeviceController.java | 14 +++++ .../model/enums/PropertySetFieldEnum.java | 10 ++-- .../ThermalCurrentPaletteStyleReceiver.java | 41 ++++++++++++++ .../receiver/ThermalGaiModeReceiver.java | 36 +++++++++++++ .../ThermalIsothermLowerLimitReceiver.java | 36 +++++++++++++ .../ThermalIsothermStateReceiver.java | 36 +++++++++++++ .../ThermalIsothermUpperLimitReceiver.java | 36 +++++++++++++ .../sample/manage/service/IDeviceService.java | 2 + .../service/impl/DeviceServiceImpl.java | 35 +++++++++++- .../media/controller/FileController.java | 37 ++++++++++++- .../media/service/impl/FileServiceImpl.java | 1 + .../src/main/resources/application.properties | 4 +- pom.xml | 2 +- 25 files changed, 480 insertions(+), 14 deletions(-) create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringAreaSetImpl.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringModeSetImpl.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringPointSetImpl.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalGaiModeReceiver.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermLowerLimitReceiver.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermStateReceiver.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermUpperLimitReceiver.java diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/control/api/AbstractControlService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/control/api/AbstractControlService.java index b6cbce4..c89ec69 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/control/api/AbstractControlService.java +++ b/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 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 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 irMeteringAreaSet(GatewayManager gateway, IrMeteringAreaSetRequest request) { return servicesPublish.publish( gateway.getGatewaySn(), 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 index c851c1c..ae36205 100644 --- 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 @@ -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()); + } + } diff --git a/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index 311ac1f..5ec82f0 100644 --- a/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/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> downloadRequest = DownloadRequest.builder() + // 文件对象 + .getObjectRequest(y -> y.bucket(properties.getBucketName()) + .key(key) + .build()) + .addTransferListener(LoggingTransferListener.create()) + // 使用订阅转换器 + .responseTransformer(AsyncResponseTransformer.toBlockingInputStream()) + .build(); + // 使用 S3TransferManager 下载文件 + Download> responseFuture = transferManager.download(downloadRequest); + // 输出到流中 + try (ResponseInputStream responseStream = responseFuture.completionFuture().join().result()) { // auto-closeable stream + return responseStream.transferTo(out); // 阻塞调用线程 blocks the calling thread + } + } catch (Exception e) { + throw new OssException("文件下载失败,错误信息:[" + e.getMessage() + "]"); + } + } + /** * 删除云存储服务中指定路径下文件 * diff --git a/dk-common/common-websocket/pom.xml b/dk-common/common-websocket/pom.xml index ac54281..0a7c953 100644 --- a/dk-common/common-websocket/pom.xml +++ b/dk-common/common-websocket/pom.xml @@ -48,6 +48,11 @@ org.springframework.boot spring-boot-starter-websocket + org.dromara common-cloudsdk diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DockController.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DockController.java index 4e7e0ef..bfba184 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DockController.java +++ b/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); + } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/model/enums/PayloadCommandsEnum.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/model/enums/PayloadCommandsEnum.java index 0b25499..5b24a74 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/model/enums/PayloadCommandsEnum.java +++ b/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; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/model/param/DronePayloadParam.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/model/param/DronePayloadParam.java index 5738863..3069ccc 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/model/param/DronePayloadParam.java +++ b/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. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/IControlService.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/IControlService.java index ee64f0d..78aa6a3 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/IControlService.java +++ b/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; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java index 263f291..7032db1 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java +++ b/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 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 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 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()); + } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringAreaSetImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringAreaSetImpl.java new file mode 100644 index 0000000..0c162c4 --- /dev/null +++ b/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; + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringModeSetImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringModeSetImpl.java new file mode 100644 index 0000000..f1bd86d --- /dev/null +++ b/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; + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringPointSetImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/IrMeteringPointSetImpl.java new file mode 100644 index 0000000..bf45348 --- /dev/null +++ b/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; + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java index a95ce9b..194b144 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java +++ b/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)); + } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/enums/PropertySetFieldEnum.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/enums/PropertySetFieldEnum.java index 94dab47..4007bef 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/enums/PropertySetFieldEnum.java +++ b/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), ; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java new file mode 100644 index 0000000..b78b974 --- /dev/null +++ b/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; + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalGaiModeReceiver.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalGaiModeReceiver.java new file mode 100644 index 0000000..7eb6fdc --- /dev/null +++ b/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; + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermLowerLimitReceiver.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermLowerLimitReceiver.java new file mode 100644 index 0000000..f171bad --- /dev/null +++ b/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; + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermStateReceiver.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermStateReceiver.java new file mode 100644 index 0000000..d657528 --- /dev/null +++ b/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; + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermUpperLimitReceiver.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/receiver/ThermalIsothermUpperLimitReceiver.java new file mode 100644 index 0000000..e9ad205 --- /dev/null +++ b/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; + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java index 80e69e1..0067570 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java +++ b/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 diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index bda7cef..c555847 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/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 dockOpt = deviceRedisService.getDeviceOnline(dockSn); + if (dockOpt.isEmpty()) { + throw new RuntimeException("Dock处于脱机状态。"); + } + String childSn = dockOpt.get().getChildDeviceSn(); + Optional 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) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java index 905b9fb..b20daaf 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java +++ b/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 = 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 diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java index 3d0a0b9..4fcfc1a 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java +++ b/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 getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize,List proIds) { LoginUser loginUser = LoginHelper.getLoginUser(); 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 diff --git a/pom.xml b/pom.xml index ff3f610..e6f81b4 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,7 @@ dev - dev + wuyuan 127.0.0.1:8848 DEFAULT_GROUP DEFAULT_GROUP From caef6c0cff8c098518a069e2bc3f412fcf7932b1 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 18 Jun 2025 16:11:43 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/sample/manage/service/impl/DeviceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index c555847..d4137ea 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -687,7 +687,7 @@ public class DeviceServiceImpl implements IDeviceService { if (!isPublish) { return PropertySetReplyResultEnum.SUCCESS.getResult(); } - BaseModel baseModel = objectMapper.convertValue(param.get("thermal_current_palette_style"), propertyEnum.getProperty().getClazz()); + BaseModel baseModel = objectMapper.convertValue(param, propertyEnum.getProperty().getClazz()); PropertySetReplyResultEnum result = abstractPropertyService.propertySet( SDKManager.getDeviceSDK(dockSn), propertyEnum.getProperty(), baseModel); return result.getResult(); From 6c2650bd403f4132302b7088adf7710882b36ad8 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Thu, 19 Jun 2025 19:01:18 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/oss/core/OssClient.java | 23 ------ .../media/controller/FileController.java | 80 ++++++++++++++----- .../sample/media/service/IFileService.java | 6 ++ .../media/service/impl/FileServiceImpl.java | 16 ++++ .../controller/WaylineJobController.java | 5 +- .../model/entity/WaylineJobEntity.java | 4 + .../wayline/service/IWaylineJobService.java | 6 +- .../service/impl/FlightTaskServiceImpl.java | 5 +- .../service/impl/WaylineJobServiceImpl.java | 39 +++++---- .../resources/mapper/WaylineJobMapper.xml | 23 ++++++ 10 files changed, 140 insertions(+), 67 deletions(-) create mode 100644 dk-modules/sample/src/main/resources/mapper/WaylineJobMapper.xml diff --git a/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index 5ec82f0..311ac1f 100644 --- a/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java @@ -309,29 +309,6 @@ public class OssClient { } } - public long downloadZip(String key, OutputStream out) { - try { - // 构建下载请求 - DownloadRequest> downloadRequest = DownloadRequest.builder() - // 文件对象 - .getObjectRequest(y -> y.bucket(properties.getBucketName()) - .key(key) - .build()) - .addTransferListener(LoggingTransferListener.create()) - // 使用订阅转换器 - .responseTransformer(AsyncResponseTransformer.toBlockingInputStream()) - .build(); - // 使用 S3TransferManager 下载文件 - Download> responseFuture = transferManager.download(downloadRequest); - // 输出到流中 - try (ResponseInputStream responseStream = responseFuture.completionFuture().join().result()) { // auto-closeable stream - return responseStream.transferTo(out); // 阻塞调用线程 blocks the calling thread - } - } catch (Exception e) { - throw new OssException("文件下载失败,错误信息:[" + e.getMessage() + "]"); - } - } - /** * 删除云存储服务中指定路径下文件 * diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java index b20daaf..edb5495 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java @@ -1,9 +1,12 @@ package org.dromara.sample.media.controller; +import cn.hutool.core.util.ObjectUtil; 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.core.exception.ServiceException; +import org.dromara.common.core.utils.file.FileUtils; import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.satoken.utils.LoginHelper; @@ -11,15 +14,19 @@ import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.PaginationData; import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.media.model.MediaFileDTO; +import org.dromara.sample.media.model.MediaFileEntity; import org.dromara.sample.media.service.IFileService; +import org.dromara.sample.wayline.service.IWaylineJobService; import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import java.io.*; import java.net.URL; import java.net.URLEncoder; import java.util.List; +import java.util.Optional; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -36,6 +43,9 @@ public class FileController { @Autowired private IFileService fileService; + @Autowired + private IWaylineJobService waylineJobService; + /** @@ -87,40 +97,68 @@ public class FileController { @RequestParam(name = "type", required = false) Integer type) { PaginationData filesList = fileService.getMediaFilesPaginationByJobId(workspaceId, page, pageSize,jobId,type); for (MediaFileDTO mediaFileDTO :filesList.getList()){ - mediaFileDTO.setUrl(fileService.getObjectUrl(workspaceId, mediaFileDTO.getFileId()).toString()); + mediaFileDTO.setUrl(fileService.getObjectUrl(mediaFileDTO.getObjectKey()).toString()); } 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 = fileService.getFilesByWorkspaceAndJobId(workspaceId, jobId); - String fileName = "jobName.zip"; + 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 IOException { + List mediaFileDTO = fileService.getFilesByWorkspaceAndJobId(workspaceId, jobId).stream().map(MediaFileDTO::getObjectKey).toList(); + if(mediaFileDTO.size() == 0){ + throw new ServiceException("文件不存在"); + } + OssClient storage = OssFactory.instance("mediafile"); 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(); + if(ObjectUtil.isNull(jobName)){ + jobName = waylineJobService.getJobByJobId(workspaceId,jobId).get().getJobName(); + } + String encodedJobName = URLEncoder.encode(jobName, "UTF-8"); + response.setHeader("Content-Disposition", "attachment; filename="+encodedJobName+".zip"); + try (ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) { + byte[] buffer = new byte[1024]; + for (String objectKey : mediaFileDTO) { + try (InputStream inputStream = storage.getObjectContent(objectKey)) { + // 创建一个新的 ZIP 条目 + zipOut.putNextEntry(new ZipEntry(objectKey)); + + int len; + // 读取文件内容并写入到 ZIP 输出流 + while ((len = inputStream.read(buffer)) != -1) { + zipOut.write(buffer, 0, len); + } + + // 完成当前条目的写入 + zipOut.closeEntry(); + } catch (IOException e) { + e.printStackTrace(); // 如果有某个文件出错,跳过该文件并继续处理其他文件 + } } - } catch (Exception e) { + + zipOut.flush(); + } catch (IOException e) { e.printStackTrace(); } } + @GetMapping("/{workspace_id}/file/download/{file_id}") + public void downloadZip( HttpServletResponse response, @PathVariable(name = "workspace_id") String workspaceId, + @PathVariable(name = "file_id") String fileId) throws IOException { + Optional mediaFileDTO = fileService.getObjectByFileId(workspaceId,fileId); + + OssClient storage = OssFactory.instance("mediafile"); + String jobName = waylineJobService.getJobByJobId(workspaceId,mediaFileDTO.get().getJobId()).get().getJobName(); + String[] filePaths = mediaFileDTO.get().getObjectKey().split("\\."); + FileUtils.setAttachmentResponseHeader(response, jobName+"."+filePaths[filePaths.length-1]); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8"); + long contentLength = storage.download(mediaFileDTO.get().getObjectKey(), response.getOutputStream()); + response.setContentLengthLong(contentLength); + } + + /** * 根据文件id查询图片的偏航角 * @param fileId diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java index 86e0221..f04cfd2 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java @@ -4,9 +4,11 @@ import org.dromara.common.sdk.cloudapi.media.FlightTask; import org.dromara.common.sdk.cloudapi.media.MediaUploadCallbackRequest; import org.dromara.common.sdk.common.PaginationData; import org.dromara.sample.media.model.MediaFileDTO; +import org.dromara.sample.media.model.MediaFileEntity; import java.net.URL; import java.util.List; +import java.util.Optional; /** * @author sean @@ -55,6 +57,10 @@ public interface IFileService { */ URL getObjectUrl(String workspaceId, String fileId); + Optional getObjectByFileId(String workspaceId, String fileId); + + URL getObjectUrl(String objectKey); + /** * Query all media files of a job. * @param workspaceId diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java index 4fcfc1a..f99b84a 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java @@ -140,6 +140,22 @@ public class FileServiceImpl implements IFileService { return storage.getPrivateUrlURL(mediaFileOpt.get().getObjectKey(),3600); } + @Override + public URL getObjectUrl(String objectKey) { + OssClient storage = OssFactory.instance("mediafile"); + return storage.getPrivateUrlURL(objectKey,3600); + } + + + @Override + public Optional getObjectByFileId(String workspaceId, String fileId) { + Optional mediaFileOpt = getMediaByFileId(workspaceId, fileId); + if (mediaFileOpt.isEmpty()) { + throw new IllegalArgumentException("{} 不存在。"); + } + return mediaFileOpt; + } + @Override public List getFilesByWorkspaceAndJobId(String workspaceId, String jobId) { return mapper.selectList(new LambdaQueryWrapper() 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 7edd719..f5c508c 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 @@ -89,8 +89,9 @@ public class WaylineJobController { @PathVariable(name = "workspace_id") String workspaceId, @RequestParam(name = "proIds" , required = false) List proIds, @RequestParam(name = "fileId" , required = false) String fileId, - @RequestParam(name = "name" , required = false) String name) { - PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,fileId,proIds,name); + @RequestParam(name = "name" , required = false) String name, + @RequestParam(name = "mediaCount" , required = false) Integer mediaCount) { + PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,fileId,proIds,name,mediaCount); return HttpResultResponse.success(data); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java index eada478..a99588f 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java @@ -97,4 +97,8 @@ public class WaylineJobEntity implements Serializable { @TableField("pro_id") private Integer proId; + + + @TableField("dock_name") + private String dockName; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java index 36e4064..38d7037 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java @@ -28,7 +28,7 @@ public interface IWaylineJobService { * @param endTime The time the job ended. * @return */ - Optional createWaylineJob(CreateJobParam param, String workspaceId, String username, Date beginTime, Date endTime, Integer proId); + Optional createWaylineJob(CreateJobParam param, String workspaceId, String username, Date beginTime, Date endTime, Integer proId,String dockName); /** * Create a sub-task based on the information of the parent task. @@ -71,7 +71,9 @@ public interface IWaylineJobService { * @param pageSize * @return */ - PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,String fileId,List proIds,String name); + PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,String fileId,List proIds,String name,Integer mediaCount); + + /** * Query the wayline execution status of the dock. 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 cc9b9d9..b7638b7 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 @@ -248,7 +248,7 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl if(deviceOnline.get().getProId() == null){ throw new SQLException("项目组不存在"); } - Optional waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, loginUser.getUsername(), new Date(beginTime), new Date(endTime),deviceOnline.get().getProId()); + Optional waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, loginUser.getUsername(), new Date(beginTime), new Date(endTime),deviceOnline.get().getProId(),deviceOnline.get().getNickname()); if (waylineJobOpt.isEmpty()) { throw new SQLException("无法创建路线作业。"); } @@ -286,7 +286,7 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl if(deviceOnline.get().getProId() == null){ throw new SQLException("项目组不存在"); } - Optional waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, username, new Date(beginTime), new Date(endTime),deviceOnline.get().getProId()); + Optional waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, username, new Date(beginTime), new Date(endTime),deviceOnline.get().getProId(),deviceOnline.get().getNickname()); if (waylineJobOpt.isEmpty()) { throw new SQLException("无法创建路线作业。"); } @@ -342,6 +342,7 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl if (waylineFile.isEmpty()) { throw new SQLException("路线文件不存在。"); } + waylineJob.setWaylineName(waylineFile.get().getName()); // get file url URL url = waylineFileService.getObjectUrl(waylineJob.getWorkspaceId(), waylineFile.get().getId()); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index f3786e7..e69f909 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -92,7 +92,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { } @Override - public Optional createWaylineJob(CreateJobParam param, String workspaceId, String username, Date beginTime, Date endTime,Integer proId) { + public Optional createWaylineJob(CreateJobParam param, String workspaceId, String username, Date beginTime, Date endTime,Integer proId,String dockName) { if (Objects.isNull(param)) { return Optional.empty(); } @@ -116,6 +116,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { .breakPoint(param.getBreakPoint()) .jobType(param.getJobType().getType()) .proId(proId) + .dockSn(dockName) .build(); return insertWaylineJob(jobEntity); @@ -175,7 +176,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { } @Override - public PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,String fileId,List proIds,String name) { + public PaginationData getJobsByWorkspaceId(String workspaceId, long page, long pageSize,String fileId,List proIds,String name,Integer mediaCount) { LoginUser loginUser = LoginHelper.getLoginUser(); if(ObjectUtil.isAllEmpty(proIds)){ proIds = deviceProService.listDeviceGroup(loginUser.getUserId()); @@ -185,6 +186,9 @@ public class WaylineJobServiceImpl implements IWaylineJobService { if(ObjectUtil.isNotEmpty(fileId)) { waylineJobEntityLambdaQueryWrapper.eq(WaylineJobEntity::getFileId, fileId); } + if(ObjectUtil.isNotEmpty(mediaCount)) { + waylineJobEntityLambdaQueryWrapper.ge(WaylineJobEntity::getMediaCount, mediaCount); + } waylineJobEntityLambdaQueryWrapper.in(ObjectUtil.isAllNotEmpty(proIds),WaylineJobEntity::getProId,proIds); if(ObjectUtil.isNotEmpty(name)){ waylineJobEntityLambdaQueryWrapper.and(wrapper ->{ @@ -297,11 +301,12 @@ public class WaylineJobServiceImpl implements IWaylineJobService { .jobId(entity.getJobId()) .jobName(entity.getName()) .fileId(entity.getFileId()) - .fileName(waylineFileService.getWaylineByWaylineId(entity.getWorkspaceId(), entity.getFileId()) - .orElse(new GetWaylineListResponse()).getName()) + .fileName(entity.getWaylineName()) + // .orElse(new GetWaylineListResponse()).getName()) .dockSn(entity.getDockSn()) - .dockName(deviceService.getDeviceBySn(entity.getDockSn()) - .orElse(DeviceDTO.builder().build()).getNickname()) + .dockName(entity.getDockName()) +// .dockName(deviceService.getDeviceBySn(entity.getDockSn()) +// .orElse(DeviceDTO.builder().build()).getNickname()) .username(entity.getUsername()) .workspaceId(entity.getWorkspaceId()) .status(WaylineJobStatusEnum.IN_PROGRESS.getVal() == entity.getStatus() && @@ -348,17 +353,17 @@ public class WaylineJobServiceImpl implements IWaylineJobService { .uploading(RedisOpsUtils.checkExist(key) && entity.getJobId().equals(((MediaFileCountDTO)RedisOpsUtils.get(key)).getJobId())); return builder.build(); } - - int uploadedSize = fileService.getFilesByWorkspaceAndJobId(entity.getWorkspaceId(), entity.getJobId()).size(); - // All media for this job have been uploaded. - if (uploadedSize >= entity.getMediaCount()) { - return builder.uploadedCount(uploadedSize).build(); - } - RedisOpsUtils.hashSet(countKey, entity.getJobId(), - MediaFileCountDTO.builder() - .jobId(entity.getJobId()) - .mediaCount(entity.getMediaCount()) - .uploadedCount(uploadedSize).build()); +// +// int uploadedSize = fileService.getFilesByWorkspaceAndJobId(entity.getWorkspaceId(), entity.getJobId()).size(); +// //All media for this job have been uploaded. +// if (uploadedSize >= entity.getMediaCount()) { +// return builder.uploadedCount(uploadedSize).build(); +// } +// RedisOpsUtils.hashSet(countKey, entity.getJobId(), +// MediaFileCountDTO.builder() +// .jobId(entity.getJobId()) +// .mediaCount(entity.getMediaCount()) +// .build()); return builder.build(); } } diff --git a/dk-modules/sample/src/main/resources/mapper/WaylineJobMapper.xml b/dk-modules/sample/src/main/resources/mapper/WaylineJobMapper.xml new file mode 100644 index 0000000..a301af7 --- /dev/null +++ b/dk-modules/sample/src/main/resources/mapper/WaylineJobMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + From ad7fa1598878fd56b1bd81d763835c29876a247e Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Fri, 20 Jun 2025 09:13:11 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e6f81b4..9c5a453 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,7 @@ dev - wuyuan + dev 127.0.0.1:8848 DEFAULT_GROUP DEFAULT_GROUP @@ -100,6 +100,32 @@ true + + wuyuan + + + wuyuan + 127.0.0.1:8848 + DEFAULT_GROUP + DEFAULT_GROUP + nacos + nacos + 127.0.0.1:4560 + + + + w_nantong + + + w_nantong + 192.168.0.8:8848 + DEFAULT_GROUP + DEFAULT_GROUP + nacos + nacos + 192.168.0.8:4560 + + prod From e7fe850a1401fc9e9a5bfb579a5b9ed3d783362b Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Fri, 20 Jun 2025 09:21:21 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sample/wayline/service/impl/WaylineJobServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index e69f909..6a3d9c8 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -116,7 +116,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { .breakPoint(param.getBreakPoint()) .jobType(param.getJobType().getType()) .proId(proId) - .dockSn(dockName) + .dockName(dockName) .build(); return insertWaylineJob(jobEntity); From c96f7e2a1afcb34aec071ed92397655f0e19f25d Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Sat, 21 Jun 2025 10:52:48 +0800 Subject: [PATCH 06/19] =?UTF-8?q?[feat]=E4=BF=AE=E6=94=B9=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/service/impl/FlwTaskServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index d418f6f..42cc31f 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -158,7 +158,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService { dto.setProcessInstanceId(instance.getId()); dto.setTaskId(taskList.get(0).getId()); - executeTask(taskList.get(0).getId(),true); +// executeTask(taskList.get(0).getId(),true); + executeTask(taskList.get(0).getId(),false); return dto; } From b2324331388d579a27330f7ed35be645ef387b20 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Sat, 21 Jun 2025 14:04:07 +0800 Subject: [PATCH 07/19] =?UTF-8?q?[feat]=E4=BF=AE=E6=94=B9=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=BD=93=E5=89=8D=E6=89=80=E5=9C=A8=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E7=9F=A2=E9=87=8F=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/domain/bo/SysDepartBoundaryBo.java | 31 ++++++++--------- .../impl/SysDepartBoundaryServiceImpl.java | 34 ++++++++++++------- 2 files changed, 36 insertions(+), 29 deletions(-) diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysDepartBoundaryBo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysDepartBoundaryBo.java index 45516f3..54ce3ea 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysDepartBoundaryBo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysDepartBoundaryBo.java @@ -7,27 +7,24 @@ import lombok.Getter; @Data public class SysDepartBoundaryBo { - private String departId; - /** - * 区域类别 1是市级 2是区级 + * 部门id */ - private AreaType areaType; - - private String landCategoriesJson; - + private String deptId; - @AllArgsConstructor - @Getter - public enum AreaType { - - Municipal("1","市级"), - - DistrictLevel("2","区级"); + /** + * 部门名称 + */ + private String deptName; - private String code; + /** + * 区域类别 areaType: 0:市级 1:区级(县) 2:镇级(街道) 3:村级 + */ + private Integer areaType; - private String desc; + /** + * 区域矢量数据 + */ + private String landCategoriesJson; - } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java index 32888c0..48e78f6 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java @@ -216,22 +216,32 @@ public class SysDepartBoundaryServiceImpl extends ServiceImpl listJson(SysDepartBoundary departBoundary) { - if(ObjectUtil.isEmpty(departBoundary.getDeptId())){ - throw new ServiceException("部门【id】不存在"); + + SysDepartBoundaryBo result = new SysDepartBoundaryBo(); + + //获取当前人所属部门 + Long deptId = LoginHelper.getDeptId(); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysDepartBoundary::getDeptId, deptId); + List boundaryList = baseMapper.selectList(wrapper); + + if (ObjectUtil.isEmpty(boundaryList)) { + return List.of(); } - SysDepartBoundaryBo child = new SysDepartBoundaryBo(); - child.setDepartId(String.valueOf(departBoundary.getDeptId())); - child.setAreaType(SysDepartBoundaryBo.AreaType.DistrictLevel); - child.setLandCategoriesJson(this.baseMapper.listJson(String.valueOf(departBoundary.getDeptId()))); + Integer areaType = boundaryList.getFirst().getAreaType(); + String deptName = boundaryList.getFirst().getDeptName(); + + //获取部门所属区域 + String landCategories = this.baseMapper.listJson(String.valueOf(deptId)); - SysDeptVo sysDeptVo = deptService.getByParentId(String.valueOf(departBoundary.getDeptId())); - SysDepartBoundaryBo parent = new SysDepartBoundaryBo(); - parent.setDepartId(String.valueOf(sysDeptVo.getDeptId())); - parent.setAreaType(SysDepartBoundaryBo.AreaType.Municipal); - parent.setLandCategoriesJson(this.baseMapper.listJson(String.valueOf(sysDeptVo.getDeptId()))); + result.setDeptId(String.valueOf(deptId)); + result.setDeptName(deptName); + result.setAreaType(areaType); + result.setLandCategoriesJson(landCategories); - return List.of(child,parent); + return List.of(result); } /** From 10bb20c671b3f98ae5fea79a7eaabc2e66dbaf0c Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Mon, 23 Jun 2025 11:25:00 +0800 Subject: [PATCH 08/19] =?UTF-8?q?[feat]=E4=BF=AE=E6=94=B9=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=BD=93=E5=89=8D=E6=89=80=E5=9C=A8=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E6=9F=A5=E8=AF=A2,=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BusinessAlertServiceImpl.java | 7 ++++- .../system/SysDepartBoundaryController.java | 4 +-- .../mapper/SysDepartBoundaryMapper.java | 2 +- .../service/ISysDepartBoundaryService.java | 2 +- .../system/service/ISysDeptService.java | 8 +++++ .../impl/SysDepartBoundaryServiceImpl.java | 30 ++++++------------- .../service/impl/SysDeptServiceImpl.java | 15 ++++++++++ .../mapper/system/SysDepartBoundaryMapper.xml | 8 +++-- 8 files changed, 48 insertions(+), 28 deletions(-) diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 967c377..8fb7300 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -689,7 +689,12 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { } if (ObjectUtil.isNotEmpty(bo.getDeptId())){ - wrapper.eq("t.dept_id", bo.getDeptId()); + //根据传过来的部门id查找是否存在下级部门 + List remoteDeptVos = remoteDeptService.selectListByParentId(bo.getDeptId()); + List deptIdList = StreamUtils.toList(remoteDeptVos, RemoteDeptVo::getDeptId); + deptIdList.add(Long.valueOf(bo.getDeptId())); + + wrapper.in("t.dept_id", deptIdList); } if (ObjectUtil.isNotEmpty(bo.getJobName())){ diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java index 41334c7..937ff1a 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java @@ -38,8 +38,8 @@ public class SysDepartBoundaryController extends BaseController { */ @Operation(summary ="查询部门的地理位置",description = "查询部门的地理位置") @GetMapping(value = "/listJson") - public R> listJson(SysDepartBoundary departBoundary) { - List listJson = departBoundaryService.listJson(departBoundary); + public R listJson(SysDepartBoundary departBoundary) { + String listJson = departBoundaryService.listJson(departBoundary); return R.ok("查询成功!",listJson); } /** diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDepartBoundaryMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDepartBoundaryMapper.java index e075336..f0535fe 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDepartBoundaryMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysDepartBoundaryMapper.java @@ -24,7 +24,7 @@ public interface SysDepartBoundaryMapper extends BaseMapper { void saveBatchBoundary(@Param("list") List boundaryList); - String listJson(@Param("deptId") String deptId); + String listJson(@Param("list") List deptIdList); List listDepartBoundaryByLngAndLat(@Param("lng") Double lng,@Param("lat") Double lat); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDepartBoundaryService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDepartBoundaryService.java index 74be76c..c3324d7 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDepartBoundaryService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDepartBoundaryService.java @@ -28,7 +28,7 @@ public interface ISysDepartBoundaryService extends IService{ boolean addDepartBoundary(SysDepartBoundary departBoundary); - List listJson(SysDepartBoundary departBoundary); + String listJson(SysDepartBoundary departBoundary); List listDepartBoundaryByLngAndLat(Double lng, Double lat); diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java index b259af1..85ade78 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -162,4 +162,12 @@ public interface ISysDeptService { SysDept addBoundaryDept(SysDeptBo sysDeptBo); List listTreeDeptByChild(Long deptId); + + /** + * 根据当前部门查询下一级 + * @param deptId + * @return + */ + List selectSecondByParentId(Long deptId); + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java index 48e78f6..9bac305 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysDepartBoundaryServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.dromara.system.domain.SysDepartBoundary; @@ -215,33 +216,20 @@ public class SysDepartBoundaryServiceImpl extends ServiceImpl listJson(SysDepartBoundary departBoundary) { - - SysDepartBoundaryBo result = new SysDepartBoundaryBo(); + public String listJson(SysDepartBoundary departBoundary) { //获取当前人所属部门 Long deptId = LoginHelper.getDeptId(); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(SysDepartBoundary::getDeptId, deptId); - List boundaryList = baseMapper.selectList(wrapper); - - if (ObjectUtil.isEmpty(boundaryList)) { - return List.of(); - } - - Integer areaType = boundaryList.getFirst().getAreaType(); - String deptName = boundaryList.getFirst().getDeptName(); - //获取部门所属区域 - String landCategories = this.baseMapper.listJson(String.valueOf(deptId)); + //根据当前所属部门id查询下级部门,获取部门所属区域 +// List deptVoList = deptService.selectSecondByParentId(deptId); +// +// List secondDeptIdList = StreamUtils.toList(deptVoList, SysDeptVo::getDeptId); +// secondDeptIdList.add(deptId); - result.setDeptId(String.valueOf(deptId)); - result.setDeptName(deptName); - result.setAreaType(areaType); - result.setLandCategoriesJson(landCategories); + return this.baseMapper.listJson(List.of(deptId)); - return List.of(result); } /** @@ -259,7 +247,7 @@ public class SysDepartBoundaryServiceImpl extends ServiceImpl selectSecondByParentId(Long deptId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysDept::getParentId, deptId); + wrapper.eq(SysDept::getStatus, UserConstants.DEPT_NORMAL); + + List deptVoList = this.baseMapper.selectVoList(wrapper); + + if (ObjectUtil.isEmpty(deptVoList)) { + return List.of(); + } + + return deptVoList; + } + } diff --git a/dk-modules/system/src/main/resources/mapper/system/SysDepartBoundaryMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysDepartBoundaryMapper.xml index 9c87bd2..1877558 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysDepartBoundaryMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysDepartBoundaryMapper.xml @@ -154,7 +154,8 @@ 'deptId', l.dept_id, 'deptName', l.dept_name, 'name', l.name_path, - 'community_name', l.name_path + 'community_name', l.name_path, + 'areaType',l.area_type ), 'geometry', ST_AsGeoJSON(l.boundary) @@ -167,7 +168,10 @@ sys_depart_boundary l LEFT JOIN sys_dept d ON l.dept_id = d.dept_id WHERE - d.dept_id = #{deptId} + d.dept_id in + + #{item} + + select distinct wayline_job_id from wayline_job_atmosphere + + + dock_sn = #{dockSn}; + + + + + + + + diff --git a/pom.xml b/pom.xml index 9c5a453..11db27f 100644 --- a/pom.xml +++ b/pom.xml @@ -114,7 +114,7 @@ - w_nantong + w_nantong w_nantong @@ -126,6 +126,19 @@ 192.168.0.8:4560 + + nantong-dev + + nantong-dev + 127.0.0.1:8848 + DEFAULT_GROUP + DEFAULT_GROUP + nacos + nacos + 127.0.0.1:4560 + + + prod