Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions src/main/java/org/jetlinks/sdk/model/device/enums/DeviceType.java
Original file line number Diff line number Diff line change
@@ -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<String> {
device("直连设备"),
childrenDevice("网关子设备"),
gateway("网关设备")
;

private final String text;

@Override
public String getValue() {
return name();
}

// @Override
// public boolean isWriteJSONObjectEnabled() {
// return false;
// }
}
119 changes: 119 additions & 0 deletions src/main/java/org/jetlinks/sdk/model/device/info/DeviceProduct.java
Original file line number Diff line number Diff line change
@@ -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<String> 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<String> deviceType;


@Schema(description = "协议相关配置")
private Map<String, Object> 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<String, Object> storePolicyConfiguration;


@Schema(description = "修改人")
private String modifierId;


@Schema(description = "修改时间")
private Long modifyTime;


}
Original file line number Diff line number Diff line change
@@ -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<DeviceProduct> addDeviceProduct(DeviceProduct deviceProduct){
return SimpleApiRequest
.<DeviceProduct>builder()
.post()
.uri("/device/product")
.body(deviceProduct)
.responseType(ResolvableType
.forClass(
DeviceProduct.class
))
.build();
}

/**
* 根据id删除设备
* @param productId 产品id
* @return
*/

public static SimpleApiRequest<DeviceProduct> deleteDeviceProduct(String productId){
URI uri = UriComponentsBuilder
.fromUriString("/device-product/{id}")
.build(productId);
return SimpleApiRequest
.<DeviceProduct>builder()
.method(HttpMethod.DELETE)
.uri(uri.toString())
.responseType(ResolvableType
.forClass(
DeviceProduct.class
))
.build();
}

/**
*
* @param productId 产品id
* @param deviceProduct 修改后的设备产品
* @return
*/

public static SimpleApiRequest<DeviceProduct> updateDeviceProduct(String productId, DeviceProduct deviceProduct){
URI uri = UriComponentsBuilder
.fromUriString("/device-product/{id}")
.build(productId);

return SimpleApiRequest
.<DeviceProduct>builder()
.method(HttpMethod.PUT)
.uri(uri.toString())
.body(deviceProduct)
.responseType(ResolvableType
.forClass(
Boolean.class
))
.build();
}

/**
*
* @param query 查询条件
* @return
*/
public static SimpleApiRequest<DeviceProduct> queryDeviceProduct(QueryParamEntity query){
return SimpleApiRequest
.<DeviceProduct>builder()
.post()
.uri("/device-product/_query")
.body(query)
.responseType(ResolvableType
.forClassWithGenerics(
PagerResult.class,
DeviceProduct.class
))
.build();
}

}
Original file line number Diff line number Diff line change
@@ -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<String> deviceType = new EnumInfo<>();
deviceType.setValue("device");
deviceProduct.setDeviceType(deviceType);
ApiResponse<DeviceProduct> request = client
.request(DeviceProductRequset.addDeviceProduct(deviceProduct));
System.out.println(JSON.toJSONString(request, SerializerFeature.PrettyFormat));
}


@Test
public void deleteDeviceInstanceTest(){
String productId = "demo_id";
ApiResponse<DeviceProduct> 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<String> deviceType = new EnumInfo<>();
deviceType.setValue("device");
deviceProduct.setDeviceType(deviceType);
ApiResponse<DeviceProduct> 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<DeviceProduct> request = client
.request(DeviceProductRequset.queryDeviceProduct(queryParamEntity));
System.out.println(JSON.toJSONString(request, SerializerFeature.PrettyFormat));
}
}