diff --git a/iot-module/iot-openapi/pom.xml b/iot-module/iot-openapi/pom.xml
index f694ef63..5a5bf0cf 100644
--- a/iot-module/iot-openapi/pom.xml
+++ b/iot-module/iot-openapi/pom.xml
@@ -13,8 +13,6 @@
-
-
joda-time
joda-time
@@ -101,11 +99,49 @@
cc.iotkit
iot-manager
+
+ io.github.linpeilie
+ mapstruct-plus-spring-boot-starter
+ ${mapstruct-plus.version}
+
11
11
+ 1.3.4
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+
+ ${java.version}
+ utf8
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+ io.github.linpeilie
+ mapstruct-plus-processor
+ ${mapstruct-plus.version}
+
+
+ org.projectlombok
+ lombok-mapstruct-binding
+ 0.2.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/controller/OpenDeviceController.java b/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/controller/OpenDeviceController.java
index ed85fec2..d32ed79c 100644
--- a/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/controller/OpenDeviceController.java
+++ b/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/controller/OpenDeviceController.java
@@ -5,6 +5,7 @@ import cc.iotkit.model.InvokeResult;
import cc.iotkit.model.device.DeviceInfo;
import cc.iotkit.openapi.dto.bo.device.OpenapiDeviceBo;
import cc.iotkit.openapi.dto.bo.device.OpenapiSetDeviceServicePropertyBo;
+import cc.iotkit.openapi.dto.vo.OpenDevicePropertyVo;
import cc.iotkit.openapi.service.OpenBaseService;
import cc.iotkit.openapi.service.OpenDeviceService;
import io.swagger.annotations.Api;
@@ -57,7 +58,7 @@ public class OpenDeviceController {
@ApiOperation("查询指定设备的属性快照")
@PostMapping("/v1/queryDevicePropertyStatus")
- public Map getDevicePropertyStatus(@RequestBody @Validated Request bo) {
- return openDeviceService.getDetail(bo.getData()).getProperty();
+ public OpenDevicePropertyVo getDevicePropertyStatus(@RequestBody @Validated Request bo) {
+ return openDeviceService.getDevicePropertyStatus(bo.getData());
}
}
diff --git a/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/dto/vo/OpenDevicePropertyVo.java b/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/dto/vo/OpenDevicePropertyVo.java
new file mode 100644
index 00000000..6f4f79d1
--- /dev/null
+++ b/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/dto/vo/OpenDevicePropertyVo.java
@@ -0,0 +1,29 @@
+package cc.iotkit.openapi.dto.vo;
+
+import cc.iotkit.model.product.ProductModel;
+import cc.iotkit.model.product.ThingModel;
+import io.github.linpeilie.annotations.AutoMapper;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@ApiModel(value = "OpenDevicePropertyVo")
+@Data
+@AutoMapper(target = ThingModel.class)
+public class OpenDevicePropertyVo {
+
+ @ApiModelProperty(value="设备属性")
+ private Map property = new HashMap<>();
+
+ @ApiModelProperty(value = "主键")
+ private String id;
+
+ @ApiModelProperty(value = "模型内容")
+ private ThingModel.Model model;
+
+ @ApiModelProperty(value = "产品key")
+ private String productKey;
+}
diff --git a/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/OpenDeviceService.java b/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/OpenDeviceService.java
index 504a93b5..567a7fca 100644
--- a/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/OpenDeviceService.java
+++ b/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/OpenDeviceService.java
@@ -2,6 +2,7 @@ package cc.iotkit.openapi.service;
import cc.iotkit.model.device.DeviceInfo;
import cc.iotkit.openapi.dto.bo.device.OpenapiDeviceBo;
+import cc.iotkit.openapi.dto.vo.OpenDevicePropertyVo;
import java.util.Map;
@@ -22,4 +23,6 @@ public interface OpenDeviceService {
* 设备属性设置
*/
String setProperty(String productKey, String deviceName, Map properties);
+
+ OpenDevicePropertyVo getDevicePropertyStatus(OpenapiDeviceBo data);
}
diff --git a/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/impl/OpenDeviceServiceImpl.java b/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/impl/OpenDeviceServiceImpl.java
index 69a6d95e..0e148d84 100644
--- a/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/impl/OpenDeviceServiceImpl.java
+++ b/iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/impl/OpenDeviceServiceImpl.java
@@ -3,13 +3,18 @@ package cc.iotkit.openapi.service.impl;
import cc.iotkit.common.enums.ErrCode;
import cc.iotkit.common.exception.BizException;
import cc.iotkit.common.utils.DeviceUtil;
+import cc.iotkit.common.utils.MapstructUtils;
import cc.iotkit.data.manager.IDeviceInfoData;
import cc.iotkit.data.manager.IProductData;
+import cc.iotkit.data.manager.IThingModelData;
+import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo;
import cc.iotkit.manager.service.DeviceService;
import cc.iotkit.model.device.DeviceInfo;
import cc.iotkit.model.device.message.ThingModelMessage;
import cc.iotkit.model.product.Product;
+import cc.iotkit.model.product.ThingModel;
import cc.iotkit.openapi.dto.bo.device.OpenapiDeviceBo;
+import cc.iotkit.openapi.dto.vo.OpenDevicePropertyVo;
import cc.iotkit.openapi.service.OpenDeviceService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +37,10 @@ public class OpenDeviceServiceImpl implements OpenDeviceService {
@Qualifier("productDataCache")
private IProductData productData;
+ @Autowired
+ @Qualifier("thingModelDataCache")
+ private IThingModelData thingModelData;
+
@Autowired
private DeviceService deviceService;
@@ -98,5 +107,16 @@ public class OpenDeviceServiceImpl implements OpenDeviceService {
return deviceService.setProperty(deviceRepetition.getDeviceId(), args, true);
}
+ @Override
+ public OpenDevicePropertyVo getDevicePropertyStatus(OpenapiDeviceBo bo) {
+ ThingModel thingModel = thingModelData.findByProductKey(bo.getProductKey());
+ OpenDevicePropertyVo propertyVo = MapstructUtils.convert(thingModel, OpenDevicePropertyVo.class);
+ DeviceInfo deviceInfo = deviceInfoData.findByProductKeyAndDeviceName(bo.getProductKey(), bo.getDeviceName());
+ if (propertyVo != null){
+ propertyVo.setProperty(deviceInfoData.getProperties(deviceInfo.getDeviceId()));
+ }
+ return propertyVo;
+ }
+
}