aijinhui
2023-11-24 c2e9f82dfe87e9bd967d8445bd4b5b632f3f0d1a
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -17,7 +17,9 @@
import com.ruoyi.sy.service.*;
import com.ruoyi.sy.service.impl.*;
import com.ruoyi.utils.gps.GeoTools;
import com.ruoyi.utils.qymqtt.MqttCustomerClient;
import com.ruoyi.utils.qymqtt.newM.EmqClient;
import com.ruoyi.utils.qymqtt.newM.QosEnum;
import com.ruoyi.utils.qymqtt.oldM.MqttCustomerClient;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.paho.client.mqttv3.MqttException;
@@ -443,74 +445,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+"解封命令发送成功!");
        if(ardSyCarLocks.size()>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);
                    EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID());
                    emqClient.connect();
                    emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false);
                    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);
            //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);
                            EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID());
                            emqClient.connect();
                            emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false);
//                        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;
                            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+"施封命令发送成功!");
                    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);
                        EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID());
                        emqClient.connect();
                        emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false);
                        log.info("车辆"+carId+"施封命令发送成功!");
//                    mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"施封");
                    }
                }
            }
        }
    }
}