From b0dd7ca693fcd13e539316cfc8c63150182a0315 Mon Sep 17 00:00:00 2001
From: aix <vip_xiaobin810@163.com>
Date: Tue, 20 Aug 2024 15:18:12 +0800
Subject: [PATCH] 红外设置

---
 src/main/java/com/dji/sample/manage/model/enums/DeviceSetPropertyEnum.java                 |    4 
 src/main/java/com/dji/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java |   49 ++++++++++++
 src/main/java/com/dji/sample/manage/model/enums/ThermalPaletteStyleEnum.java               |   72 ++++++++++++++++++
 src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java                    |   35 ++++++++
 src/main/java/com/dji/sample/manage/controller/DeviceController.java                       |   19 ++++
 src/main/java/com/dji/sample/manage/model/receiver/BasicDeviceProperty.java                |    4 +
 src/main/java/com/dji/sample/manage/model/receiver/OsdSubDeviceReceiver.java               |    2 
 src/main/java/com/dji/sample/manage/service/IDeviceService.java                            |    9 ++
 8 files changed, 193 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/dji/sample/manage/controller/DeviceController.java b/src/main/java/com/dji/sample/manage/controller/DeviceController.java
index 2fa7308..135be37 100644
--- a/src/main/java/com/dji/sample/manage/controller/DeviceController.java
+++ b/src/main/java/com/dji/sample/manage/controller/DeviceController.java
@@ -236,4 +236,23 @@
         deviceService.devicePropertySet(workspaceId, dockSn, propertyEnumOpt.get(), param.get(property));
         return ResponseResult.success();
     }
+
+    /**
+     * 红外设置方法
+     * @param workspaceId
+     * @param dockSn
+     * @param param
+     * @return
+     */
+    @PutMapping("/{workspace_id}/devices/{device_sn}/property2")
+    public ResponseResult devicePropertySet2(@PathVariable("workspace_id") String workspaceId,
+                                             @PathVariable("device_sn") String dockSn,
+                                             @RequestBody JsonNode param) {
+        if (param.size() != 1) {
+            return ResponseResult.error(CommonErrorEnum.ILLEGAL_ARGUMENT);
+        }
+        int result = deviceService.devicePropertySet(workspaceId, dockSn, param);
+        return ResponseResult.success().getCode() == result ?ResponseResult.success():ResponseResult.error();
+    }
+
 }
diff --git a/src/main/java/com/dji/sample/manage/model/enums/DeviceSetPropertyEnum.java b/src/main/java/com/dji/sample/manage/model/enums/DeviceSetPropertyEnum.java
index 07c6658..0ca5f32 100644
--- a/src/main/java/com/dji/sample/manage/model/enums/DeviceSetPropertyEnum.java
+++ b/src/main/java/com/dji/sample/manage/model/enums/DeviceSetPropertyEnum.java
@@ -24,7 +24,9 @@
 
     RTH_ALTITUDE("rth_altitude", RthAltitudeReceiver.class),
 
-    OUT_OF_CONTROL_ACTION("out_of_control_action", OutOfControlActionReceiver.class);
+    OUT_OF_CONTROL_ACTION("out_of_control_action", OutOfControlActionReceiver.class),
+
+    THERMAL_CURRENT_PALETTE_STYLE("thermal_current_palette_style", ThermalCurrentPaletteStyleReceiver.class);
 
     String property;
 
diff --git a/src/main/java/com/dji/sample/manage/model/enums/ThermalPaletteStyleEnum.java b/src/main/java/com/dji/sample/manage/model/enums/ThermalPaletteStyleEnum.java
new file mode 100644
index 0000000..0c0e04f
--- /dev/null
+++ b/src/main/java/com/dji/sample/manage/model/enums/ThermalPaletteStyleEnum.java
@@ -0,0 +1,72 @@
+package com.dji.sample.manage.model.enums;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum ThermalPaletteStyleEnum {
+
+    WHITE_HOT(0),
+
+    BLACK_HOT(1),
+
+    RED_HOT(2),
+
+    GREEN_HOT(3),
+
+    FUSION(4),
+
+    RAINBOW(5),
+
+    IRONBOW1(6),
+
+    IRONBOW2(7),
+
+    ICE_FIRE(8),
+
+    SEPIA(9),
+
+    GLOWBOW(10),
+
+    COLOR1(11),
+
+    COLOR2(12),
+
+    RAIN(13),
+
+    HOT_SPOT(14),
+
+    RAINBOW2(15),
+
+    GRAY(16),
+
+    METAL(17),
+
+    COLD_SPOT(18),
+    ;
+
+    private final int style;
+
+    ThermalPaletteStyleEnum(int style) {
+        this.style = style;
+    }
+
+    @JsonValue
+    public int getStyle() {
+        return style;
+    }
+
+    @JsonCreator
+    public static ThermalPaletteStyleEnum find(int style) {
+        return Arrays.stream(values()).filter(styleEnum -> styleEnum.style == style).findAny()
+//            .orElseThrow(() -> new CloudSDKException(ThermalPaletteStyleEnum.class, style));
+            .orElseThrow(() -> new IllegalArgumentException("Invalid enum value: " + style));
+    }
+
+}
diff --git a/src/main/java/com/dji/sample/manage/model/receiver/BasicDeviceProperty.java b/src/main/java/com/dji/sample/manage/model/receiver/BasicDeviceProperty.java
index f32273d..4072b5b 100644
--- a/src/main/java/com/dji/sample/manage/model/receiver/BasicDeviceProperty.java
+++ b/src/main/java/com/dji/sample/manage/model/receiver/BasicDeviceProperty.java
@@ -11,6 +11,10 @@
         return false;
     }
 
+    public boolean canPublish(OsdSubDeviceReceiver osd) {
+        return valid();
+    }
+
     public boolean canPublish(String fieldName, OsdSubDeviceReceiver osd) {
         return valid();
     }
diff --git a/src/main/java/com/dji/sample/manage/model/receiver/OsdSubDeviceReceiver.java b/src/main/java/com/dji/sample/manage/model/receiver/OsdSubDeviceReceiver.java
index b8dc76b..6202ea1 100644
--- a/src/main/java/com/dji/sample/manage/model/receiver/OsdSubDeviceReceiver.java
+++ b/src/main/java/com/dji/sample/manage/model/receiver/OsdSubDeviceReceiver.java
@@ -66,6 +66,8 @@
 
     private Integer heightLimit;
 
+    private Integer thermalCurrentPaletteStyle;
+
     private DistanceLimitStatusReceiver distanceLimitStatus;
 
     private ObstacleAvoidanceReceiver obstacleAvoidance;
diff --git a/src/main/java/com/dji/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java b/src/main/java/com/dji/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java
new file mode 100644
index 0000000..d0f6c94
--- /dev/null
+++ b/src/main/java/com/dji/sample/manage/model/receiver/ThermalCurrentPaletteStyleReceiver.java
@@ -0,0 +1,49 @@
+package com.dji.sample.manage.model.receiver;
+
+import com.dji.sample.manage.model.enums.DroneRcLostActionEnum;
+import com.dji.sample.manage.model.enums.ThermalPaletteStyleEnum;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/3/3
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@AllArgsConstructor
+public class ThermalCurrentPaletteStyleReceiver extends BasicDeviceProperty {
+
+    @NotNull
+    @Valid
+    private String payloadIndex;
+
+    @NotNull
+    private ThermalPaletteStyleEnum thermalCurrentPaletteStyle;
+
+    public ThermalCurrentPaletteStyleReceiver() {
+    }
+
+    @Override
+    public String toString() {
+        return "ThermalCurrentPaletteStyleSet{" +
+                "payloadIndex=" + payloadIndex +
+                ", thermalCurrentPaletteStyle=" + thermalCurrentPaletteStyle +
+                '}';
+    }
+
+    @JsonValue
+    public Map<String, Object> toMap() {
+        return Map.of(payloadIndex.toString(), Map.of("thermal_current_palette_style", thermalCurrentPaletteStyle.getStyle()));
+    }
+
+}
diff --git a/src/main/java/com/dji/sample/manage/service/IDeviceService.java b/src/main/java/com/dji/sample/manage/service/IDeviceService.java
index 7ae6af8..6789f6f 100644
--- a/src/main/java/com/dji/sample/manage/service/IDeviceService.java
+++ b/src/main/java/com/dji/sample/manage/service/IDeviceService.java
@@ -196,6 +196,15 @@
     void devicePropertySet(String workspaceId, String dockSn, DeviceSetPropertyEnum propertyEnum, JsonNode param);
 
     /**
+     * Set the property parameters of the drone.
+     * @param workspaceId
+     * @param dockSn
+     * @param param
+     * @return
+     */
+    int devicePropertySet(String workspaceId, String dockSn, JsonNode param);
+
+    /**
      * Set one property parameters of the drone.
      * @param topic
      * @param propertyEnum
diff --git a/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java b/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
index 1aebd88..5c35d52 100644
--- a/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
@@ -1010,6 +1010,41 @@
     }
 
     @Override
+    public int devicePropertySet(String workspaceId, String dockSn, JsonNode value) {
+
+        Optional<DeviceDTO> dockOpt = deviceRedisService.getDeviceOnline(dockSn);
+        if (dockOpt.isEmpty()) {
+            throw new RuntimeException("机场离线");
+        }
+        String childSn = dockOpt.get().getChildDeviceSn();
+        boolean deviceOnline = deviceRedisService.checkDeviceOnline(childSn);
+        Optional<OsdSubDeviceReceiver> osdOpt = deviceRedisService.getDeviceOsd(childSn, OsdSubDeviceReceiver.class);
+        if (!deviceOnline || osdOpt.isEmpty()) {
+            throw new RuntimeException("设备离线");
+        }
+
+
+        String topic = THING_MODEL_PRE + PRODUCT + dockSn + PROPERTY_SUF + SET_SUF;
+
+        Map reply = messageSender.publishWithReply(
+                Map.class, topic,
+                CommonTopicResponse.builder()
+                        .bid(UUID.randomUUID().toString())
+                        .tid(UUID.randomUUID().toString())
+                        .timestamp(System.currentTimeMillis())
+                        .data(value)
+                        .build());
+
+
+        SetReply setReply = objectMapper.convertValue(reply, SetReply.class);
+        if (SetReplyStatusResultEnum.SUCCESS.getVal() != setReply.getResult()) {
+            throw new RuntimeException("设置失败" + reply + "; 错误码: " + setReply.getResult());
+        }
+
+        return ResponseResult.success().getCode();
+    }
+
+    @Override
     public void deviceOnePropertySet(String topic, DeviceSetPropertyEnum propertyEnum, Map.Entry<String, Object> value) {
         if (Objects.isNull(value) || Objects.isNull(value.getValue())) {
             throw new IllegalArgumentException(CommonErrorEnum.ILLEGAL_ARGUMENT.getErrorMsg());

--
Gitblit v1.9.3