aijinhui
2023-11-15 19c431878bc5d3b06fbda3f3fa8ae5023790c837
mqtt
已修改3个文件
22 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnceCallback.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.sy.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -312,10 +313,10 @@
            AjaxResult.error(0,"该锁处于解封状态,远程无法操控,请先执行施封操作!");
        }
        String key = "";
        Double currentInfo = ardSyCarLock.getCurrentInfo();
        if(currentInfo.equals("C01")){
        String currents = ardSyCarLock.getCurrents();
        if(currents.equals("C01")){
            key = "D03";
        }else if(currentInfo.equals("C02")){
        }else if(currents.equals("C02")){
            key = "D04";
        }
        Number lockState = (Number) lockTypeParam.getNum();
@@ -329,9 +330,11 @@
        Map<String,Object> map = new HashMap();
        map.put(key, lockState);//范围是0.01到99.99
        map.put("res", String.valueOf(System.currentTimeMillis()));
        String mapString = JSON.toJSONString(map);
        System.out.println(mapString);
        MqttOnce mqttOnce = new MqttOnce();
        try {
            return AjaxResult.success(mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"开关锁指令"+lockState));
            return AjaxResult.success(mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(), mapString,"开关锁指令"+lockTypeParam.getNum()));
        } catch (MqttException e) {
            log.debug("开关锁指令发送失败"+e);
        }
ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java
@@ -64,7 +64,7 @@
        ArdSyCarRtuService carRtuService = SpringUtils.getBean(ArdSyCarRtuService.class);
        //获取电磁锁地址
        String mqttUrl = carRtuService.url("ElectromagneticLockUrl");
        MqttClient client = new MqttClient(mqttUrl,carId);
        MqttClient client = new MqttClient(mqttUrl,carId+"mqTest");
        //log.debug("--创建"+carId+"号车辆电子锁mqtt客户端");
        return client;
    }
@@ -90,9 +90,14 @@
        client.connect(options);
        MqttMessage msg = new MqttMessage(message.getBytes());
        msg.setQos(2);
        try{
        client.publish(topic,msg);
        }catch (Exception e){
            log.debug("发布消息失败"+topic+"消息:"+msg);
            e.getMessage();
        }
        client.disconnect();
        return "发布"+type+"指令成功!";
        return topic+"发布"+type+"指令成功!消息:"+msg;
    }
}
ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnceCallback.java
@@ -76,7 +76,7 @@
    @Override
    public void messageArrived(String topic, MqttMessage message) {
        try {
//            System.out.println("【车辆锁主题】:"+topic+"【车辆锁信息】:"+new String(message.getPayload(), StandardCharsets.UTF_8));
            System.out.println("【车辆锁主题】:"+topic+"【车辆锁信息】:"+new String(message.getPayload(), StandardCharsets.UTF_8));
            //出来回调数据
            List<ArdSyCarLock> ardSyCarLocks = carLockService.data(new String(message.getPayload(), StandardCharsets.UTF_8));
            //根据topic查询RTUID