| ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java | ●●●●● patch | view | raw | blame | history | |
| ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarRtuService.java | ●●●●● patch | view | raw | blame | history | |
| ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarRtuServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
| ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java | ●●●●● patch | view | raw | blame | history | |
| ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java | ●●●●● patch | view | raw | blame | history |
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -8,19 +8,18 @@ package com.ruoyi.sy.gps31; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.gps31.push.netty.PushClient; import com.gps31.push.netty.PushMsg; import com.gps31.push.netty.client.TcpClient; import com.gps31.push.util.MapUtil; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.sy.domain.ArdAccessNum; import com.ruoyi.sy.domain.ArdOilWall; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.*; import com.ruoyi.sy.service.ArdAccessFenceService; import com.ruoyi.sy.service.ArdOilWallService; import com.ruoyi.sy.service.impl.*; import com.ruoyi.utils.gps.GeoTools; import com.ruoyi.utils.mqtt.MqttConsumer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -183,7 +182,6 @@ break; } } ((ArdAccessFenceServiceImpl)SpringUtils.getBean("ArdAccessFenceServiceImpl")).updAccess(ardAccessFence); }else { //如果有进入围栏ID,判断是否开出装油点 String out = ardAccessFence.getOutShipmentId(); @@ -212,9 +210,10 @@ //如果unload为空,判断是否进入卸油点 if (unload == null) { //车辆未进入卸油点 List<ArdOilWall> ardOilWallUpload = SpringUtils.getBean(ArdOilWallService.class).uploadAll(); List<ArdOilWall> ardOilWallUpload = ((ArdOilWallServiceImpl)SpringUtils.getBean("ArdOilWallServiceImpl")).uploadAll(); //是否在路上 Boolean isRoad = true; //判断是否进去卸油点 for (int i = 0; i < ardOilWallUpload.size(); i++) { pts.clear(); ArdOilWall ardOilWall = ardOilWallUpload.get(i); @@ -231,6 +230,17 @@ ardAccessFence.setNowWallName(ardOilWall.getName()); ardAccessFence.setLastTime(time); ((ArdAccessFenceServiceImpl) SpringUtils.getBean("ArdAccessFenceServiceImpl")).updAccess(ardAccessFence); //发送解封指令 ArdSyCarRtu ardSyCarRtu = ((ArdSyCarRtuServiceImpl) SpringUtils.getBean("ArdSyCarRtuServiceImpl")).one(carId); if(ardSyCarRtu!=null){ Map<String,Object> map = new HashMap<>(); map.put("A01", 110000);//导通第一路继电器 // map.put("A02", 110000);//导通第二路继电器 map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicSubscribe(), String.valueOf(new JSONObject(map))); }else { log.error("车辆"+carId+"无锁状态"); } //已经进入卸油点,不在路上不需要停车报警 isRoad = false; break; @@ -273,6 +283,15 @@ } if (!GeoTools.IsPtInPoly(point, pts)) { //开出了卸油点围栏,删除该条车辆数据 //发送解封指令 ArdSyCarRtu ardSyCarRtu = ((ArdSyCarRtuServiceImpl) SpringUtils.getBean("ArdSyCarRtuServiceImpl")).one(carId); if(ardSyCarRtu!=null) { Map<String, Object> map = new HashMap<>(); map.put("A01", 100000);//断开第一路继电器 // map.put("A02", 100000);//断开第二路继电器 map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicSubscribe(), String.valueOf(new JSONObject(map))); } ((ArdAccessFenceServiceImpl) SpringUtils.getBean("ArdAccessFenceServiceImpl")).delAccess(carId); }else { //未开出卸油点,更新经纬度保存 ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarRtuService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.sy.service; import com.ruoyi.sy.domain.ArdSyCarRtu; import java.util.List; /** * @author Administrator */ public interface ArdSyCarRtuService { String allCarTopic(); ArdSyCarRtu one(String carId); } ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarRtuServiceImpl.java
New file @@ -0,0 +1,41 @@ package com.ruoyi.sy.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.mapper.ArdSyCarRtuMapper; import com.ruoyi.sy.service.ArdSyCarRtuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author Administrator */ @Service public class ArdSyCarRtuServiceImpl implements ArdSyCarRtuService { @Autowired private ArdSyCarRtuMapper ardSyCarRtuMapper; @Override public String allCarTopic() { List<ArdSyCarRtu> carRtus = ardSyCarRtuMapper.selectList(null); List<String> list = new ArrayList<>(); for (int i = 0; i < carRtus.size(); i++) { list.add(carRtus.get(i).getTopicPublish()); } String[] topicArray = list.toArray(new String[list.size()]); return Arrays.toString(topicArray); } @Override public ArdSyCarRtu one(String carId) { QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("car_id",carId); return ardSyCarRtuMapper.selectOne(queryWrapper); } } ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
@@ -91,6 +91,9 @@ ArdRadarService ardRadarService = SpringUtils.getBean(ArdRadarService.class); ardRadarService.forceGuide(new String(message.getPayload(), StandardCharsets.UTF_8)); } if(topic.contains("/p")){ System.out.println(new String(message.getPayload(), StandardCharsets.UTF_8)); } } catch (Exception e) { log.debug("处理mqtt消息异常:" + e); } ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java
New file @@ -0,0 +1,32 @@ package com.ruoyi.utils.mqtt; import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.mapper.ArdSyCarRtuMapper; import com.ruoyi.sy.service.ArdSyCarRtuService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author Administrator */ @Slf4j @Component public class MqttOnce implements CommandLineRunner { @Autowired private ArdSyCarRtuService ardSyCarRtuService; @Override public void run(String... args) throws Exception { String topic = ardSyCarRtuService.allCarTopic(); MqttConsumer mqttConsumer = new MqttConsumer(); mqttConsumer.subscribe(topic,2); log.info("mqtt订阅清淤车辆锁信息:"+topic); } }