aijinhui
2023-11-22 f065e0997f11eb3507ea7f97d8879103c47f6785
清淤越界处理
已修改4个文件
134 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/qymqtt/PushCallback.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -443,74 +443,75 @@
        }else if("施封".equals(type)){
            fengType = 0;
        }
        //1解封
        if(fengType==1){
            //如果不是解封封状态,则发送施封命令
            if(ardSyCarLocks.get(0).getRelayInfo()==0){
                Map<String,Object> map = new HashMap<>();
                map.put("A01", 110000);//导通第一路继电器
                map.put("A02", 110000);//导通第二路继电器
                map.put("res", String.valueOf(System.currentTimeMillis()));
                String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
                MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
                mqttCustomerClient.connect(carId+"change");
                mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
                log.info("车辆"+carId+"解封命令发送成功!");
//                mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"解封");
            }
        }
        //0施封
        if(fengType==0){
            //锁开关状态
            int lockCloseNum = 0;
            //如果不是施封状态,则发送施封命令
            if(ardSyCarLocks.get(0).getRelayInfo()==1){
                for (int j = 0; j < ardSyCarLocks.size(); j++) {
                    ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j);
                    String currents = ardSyCarLock.getCurrents();
                    Double currentInfo = ardSyCarLock.getCurrentInfo();
                    //电流值为4.0是关锁状态
                    if(currentInfo.equals(4.00) || currentInfo.equals(4)){
                        lockCloseNum += 1;
                    }else {
                        String key = "";
                        if(currents.equals("C01")){
                            key = "D03";
                        }else if(currents.equals("C02")){
                            key = "D04";
                        }
                        Map<String,Object> map = new HashMap();
                        map.put(key, 0.01);
                        map.put("res", String.valueOf(System.currentTimeMillis()));
                        String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
                        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
                        mqttCustomerClient.connect(carId+"change");
                        mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
//                        mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"开锁:"+currents);
                        while(true){
                            ArdSyCarLock ardSyCarLock1 = lockService.getCurrentInfo(ardSyCarRtu.getId(),currents);
                            Double currentInfo1 = ardSyCarLock1.getCurrentInfo();
                            if(currentInfo1.equals(4.00) || currentInfo1.equals(4)){
                                lockCloseNum +=1;
                                break;
                            }
                        }
                    }
                }
                if(lockCloseNum == 2){
        if(ardSyCarLocks.size()>0){
            //1解封
            if(fengType==1){
                //如果不是解封封状态,则发送施封命令
                if(ardSyCarLocks.get(0).getRelayInfo()==0){
                    Map<String,Object> map = new HashMap<>();
                    map.put("A01", 100000);//断开第一路继电器
                    map.put("A02", 100000);//断开第二路继电器
                    map.put("A01", 110000);//导通第一路继电器
                    map.put("A02", 110000);//导通第二路继电器
                    map.put("res", String.valueOf(System.currentTimeMillis()));
                    String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
                    MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
                    mqttCustomerClient.connect(carId+"change");
                    mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
                    log.info("车辆"+carId+"施封命令发送成功!");
                    log.info("车辆"+carId+"解封命令发送成功!");
//                mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"解封");
                }
            }
            //0施封
            if(fengType==0){
                //锁开关状态
                int lockCloseNum = 0;
                //如果不是施封状态,则发送施封命令
                if(ardSyCarLocks.get(0).getRelayInfo()==1){
                    for (int j = 0; j < ardSyCarLocks.size(); j++) {
                        ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j);
                        String currents = ardSyCarLock.getCurrents();
                        Double currentInfo = ardSyCarLock.getCurrentInfo();
                        //电流值为4.0是关锁状态
                        if(currentInfo.equals(4.00) || currentInfo.equals(4)){
                            lockCloseNum += 1;
                        }else {
                            String key = "";
                            if(currents.equals("C01")){
                                key = "D03";
                            }else if(currents.equals("C02")){
                                key = "D04";
                            }
                            Map<String,Object> map = new HashMap();
                            map.put(key, 0.01);
                            map.put("res", String.valueOf(System.currentTimeMillis()));
                            String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
                            MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
                            mqttCustomerClient.connect(carId+"change");
                            mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
//                        mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"开锁:"+currents);
                            while(true){
                                ArdSyCarLock ardSyCarLock1 = lockService.getCurrentInfo(ardSyCarRtu.getId(),currents);
                                Double currentInfo1 = ardSyCarLock1.getCurrentInfo();
                                if(currentInfo1.equals(4.00) || currentInfo1.equals(4)){
                                    lockCloseNum +=1;
                                    break;
                                }
                            }
                        }
                    }
                    if(lockCloseNum == 2){
                        Map<String,Object> map = new HashMap<>();
                        map.put("A01", 100000);//断开第一路继电器
                        map.put("A02", 100000);//断开第二路继电器
                        map.put("res", String.valueOf(System.currentTimeMillis()));
                        String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
                        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
                        mqttCustomerClient.connect(carId+"change");
                        mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
                        log.info("车辆"+carId+"施封命令发送成功!");
//                    mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"施封");
                    }
                }
            }
        }
    }
}
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
@@ -340,13 +340,13 @@
        }else if(currents.equals("C02")){
            key = "D04";
        }
        Number lockState = (Number) lockTypeParam.getNum();
        if(lockState.equals(100)){
        double lockState = lockTypeParam.getNum();
        if(lockState==100){
            lockState = 99.99;
        }else if(lockState.equals(0)){
        }else if(lockState==0){
            lockState = 0.01;
        }else{
            lockState = lockState.doubleValue() + 0.01;
            lockState = lockState + 0.01;
        }
        Map<String,Object> map = new HashMap();
        map.put(key, lockState);//范围是0.01到99.99
@@ -354,7 +354,7 @@
        String mapString = JSON.toJSONString(map);
        System.out.println(mapString);
        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
        mqttCustomerClient.connect(lockTypeParam.getCarId()+"change");
        mqttCustomerClient.connect(lockTypeParam.getCarId()+"change"+UUID.randomUUID());
        mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
        return AjaxResult.success("开关锁命令发送成功,发送进度为"+lockTypeParam.getNum());
//        QueryWrapper<SysConfig> queryWrapper1 = new QueryWrapper<>();
ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java
@@ -8,6 +8,7 @@
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.UUID;
@Slf4j
@Component
@@ -28,7 +29,7 @@
            String subscribe = rtu.getTopicSubscribe();
            try {
                MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
                mqttCustomerClient.connect(carId+"mqtt");
                mqttCustomerClient.connect(carId+"mqtt"+ UUID.randomUUID());
                mqttCustomerClient.subscribe(subscribe);
            }catch (Exception e) {
                e.printStackTrace();
ard-work/src/main/java/com/ruoyi/utils/qymqtt/PushCallback.java
@@ -46,7 +46,7 @@
    @Override
    public void messageArrived(String topic, MqttMessage message) throws Exception {
        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