package com.ruoyi.integration.iotda.utils.api;
|
|
import com.huaweicloud.sdk.core.auth.AbstractCredentials;
|
import com.huaweicloud.sdk.core.auth.ICredential;
|
import com.huaweicloud.sdk.core.exception.ConnectionException;
|
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
|
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
|
import com.huaweicloud.sdk.iotda.v5.IoTDAClient;
|
import com.huaweicloud.sdk.iotda.v5.model.*;
|
import com.ruoyi.common.core.utils.CodeGenerateUtils;
|
import com.ruoyi.common.core.utils.uuid.UUID;
|
import com.ruoyi.integration.iotda.builder.IotBuilder;
|
import com.ruoyi.integration.iotda.config.IotAccountConfig;
|
import com.ruoyi.integration.iotda.config.IotDAConfig;
|
import com.ruoyi.integration.iotda.constant.IotConstant;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.text.MessageFormat;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* iot接口调用工具类
|
*/
|
@Slf4j
|
@RestController
|
public class IotInterfaceUtil {
|
|
private static final String dataFormat = "json";
|
private static final String protocolType = "HTTPS";
|
private static final String deviceType = "充电桩";
|
private static final String serviceType = "直流充电";
|
|
@Autowired
|
private IotBuilder iotBuilder;
|
@Autowired
|
private IotDAConfig iotDAConfig;
|
|
private String decodeUrl(String url) {
|
return MessageFormat.format(url, iotDAConfig.getProjectId());
|
}
|
|
/**
|
* 创建产品
|
* @param productId 产品ID,使用UUID.randomUUID().toString()生成 需替换特殊字符 "-" 为空
|
* @param productName 产品名称
|
* @return CreateProductResponse
|
*/
|
public CreateProductResponse createProductSolution(String productId,String productName) {
|
CreateProductRequest request = new CreateProductRequest();
|
AddProduct body = new AddProduct();
|
List<ServiceCapability> listbodyServiceCapabilities = new ArrayList<>();
|
listbodyServiceCapabilities.add(
|
new ServiceCapability()
|
.withServiceId(CodeGenerateUtils.generateVolumeSn())
|
.withServiceType(serviceType)
|
);
|
body.withServiceCapabilities(listbodyServiceCapabilities);
|
body.withDataFormat(dataFormat);
|
body.withProtocolType(protocolType);
|
body.withDeviceType(deviceType);
|
body.withName(productName);
|
body.withProductId(productId);
|
request.withBody(body);
|
request.withInstanceId(iotDAConfig.getInstanceId());
|
try {
|
CreateProductResponse response = iotBuilder.buildIot().createProduct(request);
|
log.info("创建产品:{}",response.toString());
|
return response;
|
} catch (ConnectionException | RequestTimeoutException e) {
|
e.printStackTrace();
|
} catch (ServiceResponseException e) {
|
e.printStackTrace();
|
log.info(String.valueOf(e.getHttpStatusCode()));
|
log.info(e.getRequestId());
|
log.info(e.getErrorCode());
|
log.info(e.getErrorMsg());
|
}
|
return null;
|
}
|
|
|
/**
|
* 删除产品
|
* @param productId 产品ID,使用UUID.randomUUID().toString()生成 需替换特殊字符 "-" 为空
|
* @return DeleteProductResponse
|
*/
|
public DeleteProductResponse deleteProductRequest(String productId) {
|
DeleteProductRequest request = new DeleteProductRequest();
|
request.withProductId(productId);
|
request.withInstanceId(iotDAConfig.getInstanceId());
|
try {
|
DeleteProductResponse response = iotBuilder.buildIot().deleteProduct(request);
|
log.info("删除产品:{}",response.toString());
|
return response;
|
} catch (ConnectionException e) {
|
e.printStackTrace();
|
} catch (RequestTimeoutException e) {
|
e.printStackTrace();
|
} catch (ServiceResponseException e) {
|
e.printStackTrace();
|
System.out.println(e.getHttpStatusCode());
|
System.out.println(e.getRequestId());
|
System.out.println(e.getErrorCode());
|
System.out.println(e.getErrorMsg());
|
}
|
return null;
|
}
|
|
/**
|
* 创建设备
|
* @param productId 产品ID
|
* @param nodeId 设备标识码 设备编号
|
* @param deviceName 设备名称
|
* @param description 设备描述
|
* @return AddDeviceResponse
|
*/
|
public AddDeviceResponse addDeviceRequest(String productId,String nodeId,String deviceName,String description) {
|
AddDeviceRequest request = new AddDeviceRequest();
|
AddDevice body = new AddDevice();
|
body.withDeviceId(nodeId);
|
body.withNodeId(nodeId);
|
body.withDeviceName(deviceName);
|
body.withProductId(productId);
|
body.withDescription(description);
|
request.withBody(body);
|
try {
|
AddDeviceResponse response = iotBuilder.buildIot().addDevice(request);
|
log.info("创建设备:{}",response.toString());
|
return response;
|
} catch (ConnectionException e) {
|
e.printStackTrace();
|
} catch (RequestTimeoutException e) {
|
e.printStackTrace();
|
} catch (ServiceResponseException e) {
|
e.printStackTrace();
|
System.out.println(e.getHttpStatusCode());
|
System.out.println(e.getRequestId());
|
System.out.println(e.getErrorCode());
|
System.out.println(e.getErrorMsg());
|
}
|
return null;
|
}
|
|
/**
|
* 修改设备
|
* @param deviceId 设备ID 使用已有设备编号
|
* @param deviceName 设备名称
|
* @param description 设备描述
|
* @return UpdateDeviceResponse
|
*/
|
public UpdateDeviceResponse updateDeviceRequest(String deviceId,String deviceName,String description) {
|
UpdateDeviceRequest request = new UpdateDeviceRequest();
|
request.withDeviceId(deviceId);
|
UpdateDevice body = new UpdateDevice();
|
body.withDescription(description);
|
body.withDeviceName(deviceName);
|
request.withBody(body);
|
try {
|
UpdateDeviceResponse response = iotBuilder.buildIot().updateDevice(request);
|
log.info("修改设备:{}",response.toString());
|
return response;
|
} catch (ConnectionException e) {
|
e.printStackTrace();
|
} catch (RequestTimeoutException e) {
|
e.printStackTrace();
|
} catch (ServiceResponseException e) {
|
e.printStackTrace();
|
System.out.println(e.getHttpStatusCode());
|
System.out.println(e.getRequestId());
|
System.out.println(e.getErrorCode());
|
System.out.println(e.getErrorMsg());
|
}
|
return null;
|
}
|
|
/**
|
* 冻结设备
|
* @param deviceId 设备ID 使用已有设备编号
|
* @return FreezeDeviceResponse
|
*/
|
public FreezeDeviceResponse freezeDeviceRequest(String deviceId) {
|
FreezeDeviceRequest request = new FreezeDeviceRequest();
|
request.withDeviceId(deviceId);
|
try {
|
FreezeDeviceResponse response = iotBuilder.buildIot().freezeDevice(request);
|
log.info("冻结设备:{}",response.toString());
|
return response;
|
} catch (ConnectionException e) {
|
e.printStackTrace();
|
} catch (RequestTimeoutException e) {
|
e.printStackTrace();
|
} catch (ServiceResponseException e) {
|
e.printStackTrace();
|
System.out.println(e.getHttpStatusCode());
|
System.out.println(e.getRequestId());
|
System.out.println(e.getErrorCode());
|
System.out.println(e.getErrorMsg());
|
}
|
return null;
|
}
|
|
/**
|
* 解冻设备
|
* @param deviceId 设备ID 使用已有设备编号
|
* @return UnfreezeDeviceResponse
|
*/
|
public UnfreezeDeviceResponse unfreezeDeviceRequest(String deviceId) {
|
UnfreezeDeviceRequest request = new UnfreezeDeviceRequest();
|
request.withDeviceId(deviceId);
|
try {
|
UnfreezeDeviceResponse response = iotBuilder.buildIot().unfreezeDevice(request);
|
log.info("解冻设备:{}",response.toString());
|
return response;
|
} catch (ConnectionException e) {
|
e.printStackTrace();
|
} catch (RequestTimeoutException e) {
|
e.printStackTrace();
|
} catch (ServiceResponseException e) {
|
e.printStackTrace();
|
System.out.println(e.getHttpStatusCode());
|
System.out.println(e.getRequestId());
|
System.out.println(e.getErrorCode());
|
System.out.println(e.getErrorMsg());
|
}
|
return null;
|
}
|
|
/**
|
* 删除设备
|
* @param deviceId 设备ID 使用已有设备编号
|
* @return DeleteDeviceResponse
|
*/
|
public DeleteDeviceResponse deleteDeviceRequest(String deviceId) {
|
DeleteDeviceRequest request = new DeleteDeviceRequest();
|
request.withDeviceId(deviceId);
|
try {
|
DeleteDeviceResponse response = iotBuilder.buildIot().deleteDevice(request);
|
log.info("删除设备:{}",response.toString());
|
return response;
|
} catch (ConnectionException e) {
|
e.printStackTrace();
|
} catch (RequestTimeoutException e) {
|
e.printStackTrace();
|
} catch (ServiceResponseException e) {
|
e.printStackTrace();
|
System.out.println(e.getHttpStatusCode());
|
System.out.println(e.getRequestId());
|
System.out.println(e.getErrorCode());
|
System.out.println(e.getErrorMsg());
|
}
|
return null;
|
}
|
}
|