Pu Zhibing
2024-12-31 8f22c7b297417ac7df12cb07eb9edd3a77dd01a1
修改华为云设备相关功能
1个文件已添加
7个文件已修改
214 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/IotInterfaceFallbackFactory.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/IotInterfaceClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/IotInterfaceController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
            }
        };
    }
}
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);
}
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/vo/ShowDeviceResp.java
New file
@@ -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;
}
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();
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);
    }
}
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));
    }
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();
    }
}
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);