From 0dbdbde0d4486bbc6056d4c00929ecb465cf2251 Mon Sep 17 00:00:00 2001 From: 952936464 <101640475+952936464@users.noreply.github.com> Date: Wed, 16 Aug 2023 14:30:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E5=93=81=E7=9A=84=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E7=B1=BB=E5=8F=8A=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/model/device/enums/DeviceType.java | 29 +++++ .../sdk/model/device/info/DeviceProduct.java | 119 ++++++++++++++++++ .../device/request/DeviceProductRequset.java | 101 +++++++++++++++ .../request/DeviceProductRequsetTest.java | 71 +++++++++++ 4 files changed, 320 insertions(+) create mode 100644 src/main/java/org/jetlinks/sdk/model/device/enums/DeviceType.java create mode 100644 src/main/java/org/jetlinks/sdk/model/device/info/DeviceProduct.java create mode 100644 src/main/java/org/jetlinks/sdk/model/device/request/DeviceProductRequset.java create mode 100644 src/test/java/org/jetlinks/sdk/model/device/request/DeviceProductRequsetTest.java diff --git a/src/main/java/org/jetlinks/sdk/model/device/enums/DeviceType.java b/src/main/java/org/jetlinks/sdk/model/device/enums/DeviceType.java new file mode 100644 index 0000000..f59bb74 --- /dev/null +++ b/src/main/java/org/jetlinks/sdk/model/device/enums/DeviceType.java @@ -0,0 +1,29 @@ +package org.jetlinks.sdk.model.device.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.hswebframework.web.dict.Dict; +import org.hswebframework.web.dict.EnumDict; + + +@AllArgsConstructor +@Getter +@Dict("device-type") +public enum DeviceType implements EnumDict { + device("直连设备"), + childrenDevice("网关子设备"), + gateway("网关设备") + ; + + private final String text; + + @Override + public String getValue() { + return name(); + } + +// @Override +// public boolean isWriteJSONObjectEnabled() { +// return false; +// } +} diff --git a/src/main/java/org/jetlinks/sdk/model/device/info/DeviceProduct.java b/src/main/java/org/jetlinks/sdk/model/device/info/DeviceProduct.java new file mode 100644 index 0000000..b60bfa4 --- /dev/null +++ b/src/main/java/org/jetlinks/sdk/model/device/info/DeviceProduct.java @@ -0,0 +1,119 @@ +package org.jetlinks.sdk.model.device.info; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import org.hswebframework.web.api.crud.entity.GenericEntity; +import org.hswebframework.web.api.crud.entity.RecordCreationEntity; +import org.hswebframework.web.api.crud.entity.RecordModifierEntity; +import org.jetlinks.sdk.model.EnumInfo; + +import java.util.Map; + +@Getter +@Setter + + +public class DeviceProduct extends GenericEntity implements RecordCreationEntity, RecordModifierEntity { + + + @Schema(description = "ID") + private String id; + + @Schema(description = "产品名称") + private String name; + + @Schema(description="所属项目") + private String projectId; + + + @Schema(description = "图片地址") + private String photoUrl; + + @Schema(description="项目名称") + private String projectName; + + + @Schema(description = "说明") + private String describe; + + @Schema(description = "所属品类ID") + private String classifiedId; + + + @Schema(description = "所属品类名称") + private String classifiedName; + + + @Schema(description = "消息协议ID") + private String messageProtocol; + + + @Schema(description = "消息协议名称") + private String protocolName; + + + @Schema(description = "物模型定义") + private String metadata; + + + @Schema(description = "传输协议") + private String transportProtocol; + + + @Schema(description = "入网方式") + private String networkWay; + + + @Schema(description = "设备类型") + private EnumInfo deviceType; + + + @Schema(description = "协议相关配置") + private Map configuration; + + + @Schema(description = "产品状态 1正常,0禁用") + private Byte state; + + + @Schema(description = "创建者ID(只读)") + private String creatorId; + + + @Schema(description = "创建者时间(只读)") + private Long createTime; + + @Schema(description = "机构ID") + private String orgId; + + + @Schema(description = "设备接入方式ID") + private String accessId; + + + @Schema(description = "设备接入方式") + private String accessProvider; + + + @Schema(description = "设备接入方式名称") + private String accessName; + + + @Schema(description = "数据存储策略") + private String storePolicy; + + + @Schema(description = "数据存储策略相关配置") + private Map storePolicyConfiguration; + + + @Schema(description = "修改人") + private String modifierId; + + + @Schema(description = "修改时间") + private Long modifyTime; + + +} diff --git a/src/main/java/org/jetlinks/sdk/model/device/request/DeviceProductRequset.java b/src/main/java/org/jetlinks/sdk/model/device/request/DeviceProductRequset.java new file mode 100644 index 0000000..4fa41db --- /dev/null +++ b/src/main/java/org/jetlinks/sdk/model/device/request/DeviceProductRequset.java @@ -0,0 +1,101 @@ +package org.jetlinks.sdk.model.device.request; + +import org.hswebframework.web.api.crud.entity.QueryParamEntity; +import org.jetlinks.sdk.model.PagerResult; +import org.jetlinks.sdk.model.SimpleApiRequest; +import org.jetlinks.sdk.model.device.info.DeviceProduct; +import org.springframework.core.ResolvableType; +import org.springframework.http.HttpMethod; +import org.springframework.web.util.UriComponentsBuilder; + +import java.net.URI; + +/** + * 设备产品相关请求构造 + * @author wyj + * @since 2.1 + */ +public class DeviceProductRequset { + /** + * 新增设备产品 + * @param deviceProduct 设备产品 + * @return + */ + public static SimpleApiRequest addDeviceProduct(DeviceProduct deviceProduct){ + return SimpleApiRequest + .builder() + .post() + .uri("/device/product") + .body(deviceProduct) + .responseType(ResolvableType + .forClass( + DeviceProduct.class + )) + .build(); + } + + /** + * 根据id删除设备 + * @param productId 产品id + * @return + */ + + public static SimpleApiRequest deleteDeviceProduct(String productId){ + URI uri = UriComponentsBuilder + .fromUriString("/device-product/{id}") + .build(productId); + return SimpleApiRequest + .builder() + .method(HttpMethod.DELETE) + .uri(uri.toString()) + .responseType(ResolvableType + .forClass( + DeviceProduct.class + )) + .build(); + } + + /** + * + * @param productId 产品id + * @param deviceProduct 修改后的设备产品 + * @return + */ + + public static SimpleApiRequest updateDeviceProduct(String productId, DeviceProduct deviceProduct){ + URI uri = UriComponentsBuilder + .fromUriString("/device-product/{id}") + .build(productId); + + return SimpleApiRequest + .builder() + .method(HttpMethod.PUT) + .uri(uri.toString()) + .body(deviceProduct) + .responseType(ResolvableType + .forClass( + Boolean.class + )) + .build(); + } + + /** + * + * @param query 查询条件 + * @return + */ + public static SimpleApiRequest queryDeviceProduct(QueryParamEntity query){ + return SimpleApiRequest + .builder() + .post() + .uri("/device-product/_query") + .body(query) + .responseType(ResolvableType + .forClassWithGenerics( + PagerResult.class, + DeviceProduct.class + )) + .build(); + } + +} diff --git a/src/test/java/org/jetlinks/sdk/model/device/request/DeviceProductRequsetTest.java b/src/test/java/org/jetlinks/sdk/model/device/request/DeviceProductRequsetTest.java new file mode 100644 index 0000000..89a0bcf --- /dev/null +++ b/src/test/java/org/jetlinks/sdk/model/device/request/DeviceProductRequsetTest.java @@ -0,0 +1,71 @@ +package org.jetlinks.sdk.model.device.request; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; +import org.hswebframework.web.api.crud.entity.QueryParamEntity; +import org.jetlinks.sdk.client.ApiClient; +import org.jetlinks.sdk.client.ClientConfig; +import org.jetlinks.sdk.client.WebApiClient; +import org.jetlinks.sdk.model.ApiResponse; +import org.jetlinks.sdk.model.EnumInfo; +import org.jetlinks.sdk.model.device.info.DeviceProduct; +import org.junit.jupiter.api.Test; + +public class DeviceProductRequsetTest { + ClientConfig clientConfig = new ClientConfig( + "http://192.168.33.46:8844", + "w23y8dADCwPkRGnB", + "dH7eNKTNmca33YstE88HdYRz8x7RZiFt" + ); + ApiClient client = new WebApiClient(clientConfig); + + + @Test + public void addDeviceProductTest(){ + DeviceProduct deviceProduct = new DeviceProduct(); + deviceProduct.setId("demo_id"); + deviceProduct.setName("demo_name"); + EnumInfo deviceType = new EnumInfo<>(); + deviceType.setValue("device"); + deviceProduct.setDeviceType(deviceType); + ApiResponse request = client + .request(DeviceProductRequset.addDeviceProduct(deviceProduct)); + System.out.println(JSON.toJSONString(request, SerializerFeature.PrettyFormat)); + } + + + @Test + public void deleteDeviceInstanceTest(){ + String productId = "demo_id"; + ApiResponse request = client. + request(DeviceProductRequset.deleteDeviceProduct(productId)); + System.out.println(JSON.toJSONString(request, SerializerFeature.PrettyFormat)); + } + + + @Test + public void updateDeviceProductTest(){ + DeviceProduct deviceProduct = new DeviceProduct(); + String productId = "demo_id"; + deviceProduct.setName("demo_name"); + EnumInfo deviceType = new EnumInfo<>(); + deviceType.setValue("device"); + deviceProduct.setDeviceType(deviceType); + ApiResponse request = client + .request(DeviceProductRequset.updateDeviceProduct(productId, deviceProduct)); + System.out.println(JSON.toJSONString(request, SerializerFeature.PrettyFormat)); + } + + + @Test + public void queryDeviceProductTest(){ + QueryParamEntity queryParamEntity = new QueryParamEntity(); + queryParamEntity + .toQuery() + .where("id", "demo_id") + .doPaging(0,12); + ApiResponse request = client + .request(DeviceProductRequset.queryDeviceProduct(queryParamEntity)); + System.out.println(JSON.toJSONString(request, SerializerFeature.PrettyFormat)); + } +}