| | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @author Administrator |
| | | */ |
| | | @Slf4j |
| | | @Slf4j(topic = "mqttCar") |
| | | @Service |
| | | public class ArdSyCarLockServiceImpl implements ArdSyCarLockService { |
| | | |
| | |
| | | ArdSyCarRtu ardSyCarRtu = new ArdSyCarRtu(); |
| | | ardSyCarRtu.setId(String.valueOf(UUID.randomUUID())); |
| | | ardSyCarRtu.setCarId(addRtuParam.getCarId()); |
| | | ardSyCarRtu.setTopicPublish("/p"+addRtuParam.getCarId()+"/"); |
| | | ardSyCarRtu.setTopicSubscribe("/p"+addRtuParam.getCarId()+"/set/"); |
| | | ardSyCarRtu.setTopicPublish("/p"+addRtuParam.getCarId()+"/set/"); |
| | | ardSyCarRtu.setTopicSubscribe("/p"+addRtuParam.getCarId()+"/"); |
| | | ardSyCarRtu.setInstallType(addRtuParam.getInstallType()); |
| | | ardSyCarRtu.setUnloadType(addRtuParam.getUnloadType()); |
| | | int num = rtuMapper.insert(ardSyCarRtu); |
| | |
| | | rtuVo.setRtu(ardSyCar.getReserved1()); |
| | | rtuVo.setTopicPublish(ardSyCarRtu.getTopicPublish()); |
| | | rtuVo.setTopicSubscribe(ardSyCarRtu.getTopicSubscribe()); |
| | | rtuVo.setInstallType(ardSyCarRtu.getInstallType()); |
| | | rtuVo.setUnloadType(ardSyCarRtu.getUnloadType()); |
| | | return rtuVo; |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public List<CarVo> queryCar(List<String> list) { |
| | | QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.ne("reserved_1","").notIn("car_id",list); |
| | | List<ArdSyCar> ardSyCars = ardSyCarMapper.selectList(queryWrapper); |
| | | // QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); |
| | | // if(list.size()>0){ |
| | | // queryWrapper.ne("reserved_1","").notIn("car_id",list); |
| | | // }else { |
| | | // queryWrapper.ne("reserved_1",""); |
| | | // } |
| | | // List<ArdSyCar> ardSyCars = ardSyCarMapper.selectList(queryWrapper); |
| | | List<ArdSyCar> ardSyCars = new ArrayList<>(); |
| | | if(list.size()>0){ |
| | | QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.notIn("car_id",list); |
| | | ardSyCars = ardSyCarMapper.selectList(queryWrapper); |
| | | }else { |
| | | ardSyCars = ardSyCarMapper.selectList(null); |
| | | } |
| | | return carAnalysis(ardSyCars); |
| | | } |
| | | |
| | |
| | | @Override |
| | | public AjaxResult seal(RtuTypeParam rtuTypeParam) { |
| | | QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("carId",rtuTypeParam.getCarId()); |
| | | queryWrapper.eq("car_id",rtuTypeParam.getCarId()); |
| | | ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper); |
| | | //1解封 |
| | | if(rtuTypeParam.getType()==1){ |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("A01", 110000);//导通第一路继电器 |
| | | map.put("A02", 110000);//导通第二路继电器 |
| | | map.put("res", String.valueOf(System.currentTimeMillis())); |
| | | String mapString = JSON.toJSONString(map); |
| | | // Map<String,Object> map = new HashMap<>(); |
| | | // map.put("A01", 110000);//导通第一路继电器 |
| | | // map.put("A02", 110000);//导通第二路继电器 |
| | | // map.put("res", String.valueOf(System.currentTimeMillis())); |
| | | // String mapString = JSON.toJSONString(map); |
| | | String mapString = "{\"A01\":110000,\"A02\":110000,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; |
| | | log.debug("解封:"+mapString); |
| | | EmqClient emqClient = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); |
| | | emqClient.connect(); |
| | | emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); |
| | |
| | | int lockCloseNum = 0; |
| | | //查询锁信息 |
| | | List<ArdSyCarLock> ardSyCarLocks = carLock(ardSyCarRtu.getId()); |
| | | String mapString1 = "{\"A01\":100000,\"A02\":100000,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; |
| | | System.out.println("施封:"+mapString1); |
| | | EmqClient emqClient1 = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); |
| | | emqClient1.connect(); |
| | | emqClient1.publish(ardSyCarRtu.getTopicPublish(),mapString1, QosEnum.QoS2,false); |
| | | for (int j = 0; j < ardSyCarLocks.size(); j++) { |
| | | ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j); |
| | | String currents = ardSyCarLock.getCurrents(); |
| | |
| | | }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 = JSON.toJSONString(map); |
| | | // Map<String,Object> map = new HashMap(); |
| | | // map.put(key, 0.01); |
| | | // map.put("res", String.valueOf(System.currentTimeMillis())); |
| | | // String mapString = JSON.toJSONString(map); |
| | | String mapString = "{\""+key+"\":0.01,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; |
| | | log.debug("关锁:"+mapString); |
| | | EmqClient emqClient = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); |
| | | emqClient.connect(); |
| | | emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); |
| | | // mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"开锁:"+currents); |
| | | // long startTime = System.currentTimeMillis(); // 获取循环开始时间 |
| | | // long endTime = startTime + 30000; // 设置循环结束时间为开始时间加上5秒钟 |
| | | while(true){ |
| | | ArdSyCarLock ardSyCarLock1 = getCurrentInfo(ardSyCarRtu.getId(),currents); |
| | | Double currentInfo1 = ardSyCarLock1.getCurrentInfo(); |
| | |
| | | } |
| | | } |
| | | 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 = JSON.toJSONString(map); |
| | | EmqClient emqClient = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); |
| | | emqClient.connect(); |
| | | emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); |
| | | // Map<String,Object> map = new HashMap<>(); |
| | | // map.put("A01", 100000);//断开第一路继电器 |
| | | // map.put("A02", 100000);//断开第二路继电器 |
| | | // map.put("res", String.valueOf(System.currentTimeMillis())); |
| | | // String mapString = JSON.toJSONString(map); |
| | | return AjaxResult.success("施封命令发生成功!"); |
| | | // return AjaxResult.success(mqttOnce.publishCar(rtuTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"施封")); |
| | | } |
| | |
| | | ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper); |
| | | ArdSyCarLock ardSyCarLock = lockMapper.selectById(lockTypeParam.getLockId()); |
| | | Integer relay = ardSyCarLock.getRelayInfo(); |
| | | if(relay.equals("1")){ |
| | | return AjaxResult.error(0,"该锁处于解封状态,远程无法操控,请先执行施封操作!"); |
| | | if(relay!=null){ |
| | | if(relay.equals(1)){ |
| | | return AjaxResult.error(0,"该锁处于解封状态,远程无法操控,请先执行施封操作!"); |
| | | } |
| | | } |
| | | String key = ""; |
| | | String currents = ardSyCarLock.getCurrents(); |
| | |
| | | }else{ |
| | | lockState = lockState + 0.01; |
| | | } |
| | | 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); |
| | | // 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); |
| | | String mapString = "{\""+key+"\":"+lockState+",\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; |
| | | log.debug("开关锁:"+mapString); |
| | | EmqClient emqClient = new EmqClient(lockTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); |
| | | emqClient.connect(); |
| | | emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); |
| | | // MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); |
| | | // mqttCustomerClient.connect(lockTypeParam.getCarId()+"change"+UUID.randomUUID()); |
| | | // mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString); |
| | | try { |
| | | while(true){ |
| | | TimeUnit.SECONDS.sleep(5); |
| | | break; |
| | | } |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return AjaxResult.success("开关锁命令发送成功,发送进度为"+lockTypeParam.getNum()); |
| | | } |
| | | |
| | | @Override |
| | | public List<ArdSyCarLock> lockIng(String carId) { |
| | | public AjaxResult lockIng(String carId) { |
| | | QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("car_id",carId); |
| | | ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper); |
| | | List<ArdSyCarLock> locks = lockMapper.lockList(ardSyCarRtu.getId()); |
| | | for (int i = 0; i < locks.size(); i++) { |
| | | ArdSyCarLock ardSyCarLock = locks.get(i); |
| | | double info = ardSyCarLock.getCurrentInfo(); |
| | | int d = (int) ((int)(info*150/138.3 - 4)/0.16); |
| | | ardSyCarLock.setCurrentInfo((double) d); |
| | | if(locks.size()>0){ |
| | | for (int i = 0; i < locks.size(); i++) { |
| | | ArdSyCarLock ardSyCarLock = locks.get(i); |
| | | double info = ardSyCarLock.getCurrentInfo(); |
| | | int d = (int) ((int)(info*150/138.3 - 4)/0.16); |
| | | ardSyCarLock.setCurrentInfo((double) d); |
| | | } |
| | | return AjaxResult.success(locks); |
| | | }else { |
| | | return AjaxResult.error("无该车的锁数据!"); |
| | | } |
| | | return locks; |
| | | } |
| | | |
| | | |