From 8f22c7b297417ac7df12cb07eb9edd3a77dd01a1 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 31 十二月 2024 17:44:22 +0800 Subject: [PATCH] 修改华为云设备相关功能 --- ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java | 10 +- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java | 30 +++++++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java | 2 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java | 12 +++ ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java | 9 ++ ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java | 68 +++++++++++++++++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java | 6 - ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 77 +++++++++++++++---- 8 files changed, 188 insertions(+), 26 deletions(-) diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java index c7050fa..741048a 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java @@ -3,10 +3,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.integration.api.feignClient.IotInterfaceClient; import com.ruoyi.integration.api.feignClient.SwitchwayGateClient; -import com.ruoyi.integration.api.vo.AddDevice; -import com.ruoyi.integration.api.vo.AddDeviceResp; -import com.ruoyi.integration.api.vo.DeleteDeviceResp; -import com.ruoyi.integration.api.vo.SwitchwayGateReq; +import com.ruoyi.integration.api.vo.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @@ -35,6 +32,11 @@ public R<DeleteDeviceResp> deleteDevice(String deviceId) { return R.fail("删除设备失败:" + throwable.getMessage()); } + + @Override + public R<ShowDeviceResp> showDeviceRequest(String deviceId) { + return R.fail("查询设备失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java index 13f7b58..207907f 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java @@ -6,6 +6,7 @@ import com.ruoyi.integration.api.vo.AddDevice; import com.ruoyi.integration.api.vo.AddDeviceResp; import com.ruoyi.integration.api.vo.DeleteDeviceResp; +import com.ruoyi.integration.api.vo.ShowDeviceResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -35,4 +36,12 @@ */ @PostMapping("/iotInterface/deleteDevice") R<DeleteDeviceResp> deleteDevice(@RequestParam("deviceId") String deviceId); + + /** + * 查询设备 + * @param deviceId + * @return + */ + @PostMapping("/iotInterface/showDeviceRequest") + R<ShowDeviceResp> showDeviceRequest(@RequestParam("deviceId") String deviceId); } diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java new file mode 100644 index 0000000..fc2a57c --- /dev/null +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java @@ -0,0 +1,68 @@ +package com.ruoyi.integration.api.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + + +/** + * @author zhibing.pu + * @Date 2024/12/31 16:19 + */ +@Data +public class ShowDeviceResp { + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("app_id") + private String appId; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("app_name") + private String appName; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("device_id") + private String deviceId; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("node_id") + private String nodeId; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("gateway_id") + private String gatewayId; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("device_name") + private String deviceName; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("node_type") + private String nodeType; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("description") + private String description; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("fw_version") + private String fwVersion; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("sw_version") + private String swVersion; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("device_sdk_version") + private String deviceSdkVersion; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("product_id") + private String productId; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("product_name") + private String productName; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("status") + private String status; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("create_time") + private String createTime; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("connection_status_update_time") + private String connectionStatusUpdateTime; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("active_time") + private String activeTime; + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("extension_info") + private Object extensionInfo; +} diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index 470d14c..5c6bf3b 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -30,6 +30,10 @@ import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.QrCodeDelivery; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; +import com.ruoyi.integration.api.vo.AddDevice; +import com.ruoyi.integration.api.vo.AddDeviceResp; +import com.ruoyi.integration.api.vo.DeleteDeviceResp; +import com.ruoyi.integration.api.vo.ShowDeviceResp; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; @@ -173,18 +177,23 @@ return AjaxResult.error("设备编号已存在"); } //调用华为Iot创建设备 -// AddDevice addDevice = new AddDevice(); -// addDevice.setProductId("66da68d21837002b28b34ec0"); -// addDevice.setNodeId(chargingPile.getCode()); -// addDevice.setDeviceName(chargingPile.getName()); -// addDevice.setDescription(chargingPile.getNumber().toString()); -// AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData(); -// if(null != deviceResp){ -// int httpStatusCode = deviceResp.getHttpStatusCode(); -// if(httpStatusCode == 201){ -// chargingPile.setIotdDeviceId(deviceResp.getDeviceId()); -// } -// } + AddDevice addDevice = new AddDevice(); + addDevice.setProductId("66da68d21837002b28b34ec0"); + addDevice.setNodeId(chargingPile.getCode()); + addDevice.setDeviceName(chargingPile.getName()); + addDevice.setDescription(chargingPile.getNumber().toString()); + AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData(); + if(null != deviceResp){ + int httpStatusCode = deviceResp.getHttpStatusCode(); + if(httpStatusCode == 201){ + chargingPile.setIotdDeviceId(deviceResp.getDeviceId()); + }else{ + log.error("华为创建设备失败" + JSON.toJSONString(deviceResp)); + return AjaxResult.error("华为创建设备失败"); + } + }else{ + return AjaxResult.error("华为创建设备失败"); + } this.save(chargingPile); return AjaxResult.success(); } @@ -248,6 +257,34 @@ if(null != one && !one.getId().equals(chargingPile.getId())){ return AjaxResult.error("设备编号已存在"); } + TChargingPile tChargingPile = this.getById(chargingPile.getId()); + ShowDeviceResp showDeviceResp = iotInterfaceClient.showDeviceRequest(tChargingPile.getCode()).getData(); + if(null != showDeviceResp){ + DeleteDeviceResp deleteDeviceResp = iotInterfaceClient.deleteDevice(tChargingPile.getCode()).getData(); + if(null == deleteDeviceResp || (deleteDeviceResp.getHttpStatusCode() != 200 && deleteDeviceResp.getHttpStatusCode() != 201 && deleteDeviceResp.getHttpStatusCode() != 204)){ + return AjaxResult.error("删除设备异常,请查看华为设备管理"); + } + } + + + //调用华为Iot创建设备 + AddDevice addDevice = new AddDevice(); + addDevice.setProductId("66da68d21837002b28b34ec0"); + addDevice.setNodeId(chargingPile.getCode()); + addDevice.setDeviceName(chargingPile.getName()); + addDevice.setDescription(chargingPile.getNumber().toString()); + AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData(); + if(null != deviceResp){ + int httpStatusCode = deviceResp.getHttpStatusCode(); + if(httpStatusCode == 201){ + chargingPile.setIotdDeviceId(deviceResp.getDeviceId()); + }else{ + log.error("华为创建设备失败" + JSON.toJSONString(deviceResp)); + return AjaxResult.error("华为创建设备失败"); + } + }else{ + return AjaxResult.error("华为创建设备失败"); + } this.updateById(chargingPile); List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)); @@ -288,11 +325,17 @@ for (Integer id : ids) { TChargingPile chargingPile = this.getById(id); //调用华为Iot删除设备 -// if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){ -// DeleteDeviceResp deviceResp = iotInterfaceClient.deleteDevice(chargingPile.getIotdDeviceId()).getData(); -// if(null != deviceResp && deviceResp.getHttpStatusCode() == 0){ -// } -// } + if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){ + ShowDeviceResp showDeviceResp = iotInterfaceClient.showDeviceRequest(chargingPile.getCode()).getData(); + if(null != showDeviceResp){ + DeleteDeviceResp deleteDeviceResp = iotInterfaceClient.deleteDevice(chargingPile.getCode()).getData(); + if(null == deleteDeviceResp || (deleteDeviceResp.getHttpStatusCode() != 200 && deleteDeviceResp.getHttpStatusCode() != 201 && deleteDeviceResp.getHttpStatusCode() != 204)){ + return AjaxResult.error("删除设备异常,请查看华为设备管理"); + } + chargingPile.setIotdDeviceId(""); + } + + } this.removeById(chargingPile); } return AjaxResult.success(); diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java index e68a21f..19db25a 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java @@ -6,6 +6,7 @@ import com.ruoyi.integration.api.vo.AddDevice; import com.ruoyi.integration.api.vo.AddDeviceResp; import com.ruoyi.integration.api.vo.DeleteDeviceResp; +import com.ruoyi.integration.api.vo.ShowDeviceResp; import com.ruoyi.integration.iotda.utils.api.IotInterfaceUtil; import org.springframework.web.bind.annotation.*; @@ -45,4 +46,15 @@ public R<DeleteDeviceResp> deleteDevice(@RequestParam("deviceId") String deviceId){ return iotInterfaceUtil.deleteDeviceRequest(deviceId); } + + + /** + * 查询设备 + * @param deviceId + * @return + */ + @PostMapping("/showDeviceRequest") + public R<ShowDeviceResp> showDeviceRequest(@RequestParam("deviceId") String deviceId){ + return iotInterfaceUtil.showDeviceRequest(deviceId); + } } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java index bd76411..3ae6927 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java @@ -1,5 +1,6 @@ package com.ruoyi.integration.iotda.controller; +import com.alibaba.fastjson.JSON; import com.ruoyi.integration.api.model.*; import com.ruoyi.integration.iotda.enums.ServiceIdMenu; import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce; @@ -235,6 +236,7 @@ */ @PostMapping("/qrCodeDelivery") public String qrCodeDelivery(@RequestBody QrCodeDelivery qrCodeDelivery){ + log.info("二维码下发:{}", JSON.toJSONString(qrCodeDelivery)); return iotMessageProduce.sendMessage(qrCodeDelivery.getCharging_pile_code(), ServiceIdMenu.QR_CODE_DELIVERY.getKey(),messageUtil.qrCodeDelivery(qrCodeDelivery)); } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java index 0f2fb02..657165a 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java @@ -8,6 +8,7 @@ import com.ruoyi.common.core.utils.CodeGenerateUtils; import com.ruoyi.integration.api.vo.AddDeviceResp; import com.ruoyi.integration.api.vo.DeleteDeviceResp; +import com.ruoyi.integration.api.vo.ShowDeviceResp; import com.ruoyi.integration.iotda.builder.IotBuilder; import com.ruoyi.integration.iotda.config.IotDAConfig; import lombok.extern.slf4j.Slf4j; @@ -256,4 +257,33 @@ } return R.fail(); } + + + /** + * 查询设备 + * @param deviceId + * @return + */ + public R<ShowDeviceResp> showDeviceRequest(String deviceId) { + ShowDeviceRequest request = new ShowDeviceRequest(); + request.withDeviceId(deviceId); + try { + ShowDeviceResponse response = iotBuilder.buildIot().showDevice(request); + log.info("查询设备:{}",response.toString()); + ShowDeviceResp showDeviceResp = new ShowDeviceResp(); + BeanUtils.copyProperties(response, showDeviceResp); + return R.ok(showDeviceResp); + } 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 R.fail(); + } } \ No newline at end of file diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java index 009e8f1..69cf6c7 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java @@ -42,11 +42,7 @@ CreateMessageRequest request = new CreateMessageRequest(); System.err.println(code); System.err.println(JSONObject.toJSONString(config)); - if(config.getTest() && code.equals(config.getTestDriverCode())){ - request.withDeviceId(config.getTestDeviceId()); - }else{ - request.withDeviceId(config.getDeviceId()); - } + request.withDeviceId(code); DeviceMessageRequest body = new DeviceMessageRequest(); body.withMessageId(UUID.randomUUID().toString()); body.withName(name); -- Gitblit v1.7.1