ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarLockController.java
@@ -10,6 +10,7 @@ import com.ruoyi.sy.domain.ArdSyUser; import com.ruoyi.sy.mapper.ArdAccessFenceMapper; import com.ruoyi.sy.param.AddCarParam; import com.ruoyi.sy.param.AddRtuParam; import com.ruoyi.sy.service.*; import com.ruoyi.sy.service.impl.ArdSyCarRtuServiceImpl; import com.ruoyi.sy.vo.CarLockVo; @@ -48,35 +49,35 @@ @GetMapping("/car") @ApiOperation("æ¥è¯¢æææªæéç车è¾") public Results car(){ public AjaxResult car(){ List<CarVo> list = ardSyCarLockService.car(); analysis(list); return Results.succeed(list); return AjaxResult.success(list); } @GetMapping("/carAddOne") @ApiOperation("æ¥è¯¢æææªæéç车è¾å æ¬è½¦è¾ä¿¡æ¯") public Results carAddOne(String carId){ public AjaxResult carAddOne(String carId){ List<CarVo> list = ardSyCarLockService.carAddOne(carId); analysis(list); return Results.succeed(list); return AjaxResult.success(list); } @PostMapping("/add") @ApiOperation("æ·»å rtu") public Results add(String carId){ return Results.succeed("æåæ·»å "+ardSyCarLockService.addRtu(carId)+"æ¡æ°æ®"); public AjaxResult add(@RequestBody AddRtuParam addRtuParam){ return AjaxResult.success("æåæ·»å "+ardSyCarLockService.addRtu(addRtuParam)+"æ¡æ°æ®"); } @DeleteMapping("/del") @ApiOperation("å é¤rtu") public Results del(String id){ return Results.succeed("æåå é¤"+ardSyCarLockService.delCar(id)+"æ¡æ°æ®"); public AjaxResult del(String id){ return AjaxResult.success("æåå é¤"+ardSyCarLockService.delCar(id)+"æ¡æ°æ®"); } @GetMapping("/one") @ApiOperation("æ¥è¯¢ä¸æ¡rtuåé") public Results one(String carId){ public AjaxResult one(String carId){ CarLockVo carLockVo = new CarLockVo(); CarVo carVo = ardSyCarLockService.carOne(carId); String usersId = SecurityUtils.getUserId(); @@ -94,7 +95,7 @@ carLockVo.setCar(carVo); String rtu = carVo.getRtu(); carLockVo.setCarLockList(ardSyCarLockService.carLock(rtu)); return Results.succeed(carLockVo); return AjaxResult.success(carLockVo); } @GetMapping("/query") ard-work/src/main/java/com/ruoyi/sy/domain/ArdSyCarRtu.java
@@ -12,4 +12,6 @@ private String carId; private String topicSubscribe; //订é private String topicPublish; //åå¸ private Integer installType; //è£ æ²¹ç¹ 0æ½å° 1è§£å° private Integer unloadType; //叿²¹ç¹ 0æ½å° 1è§£å° } ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java
@@ -1,6 +1,9 @@ package com.ruoyi.sy.gps31; import com.ruoyi.sy.domain.ArdSyCarLock; import java.util.HashMap; import java.util.List; import java.util.Map; public class PositionContainer { @@ -9,6 +12,17 @@ private static Map<String, Map<String,Map<String,Object>>> userPositionMap = new HashMap();//ä¾ç¨æ·åæ¾å®æ½è½¦è¾ä½ç½®:userIdï¼carIdï¼è½¦è¾ä½ç½® public static Map<String, List<ArdSyCarLock>> getTopicSubscribe() { return topicSubscribe; } public static void setTopicSubscribe(Map<String, List<ArdSyCarLock>> topicSubscribe) { PositionContainer.topicSubscribe = topicSubscribe; } public static Map<String, List<ArdSyCarLock>> topicSubscribe; public static synchronized Map<String, Map<String, Map<String,Object>>> getDeptPositionMap() { return deptPositionMap; } ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -137,6 +137,27 @@ ardAccessFence1.setDrct(drct); ardAccessFence1.setIsAlarm(0); ardAccessFenceService.access(ardAccessFence1); //æ¥è¯¢è£ æ²¹ç¹æ¢å®Rtuç¶æ ArdSyCarRtu ardSyCarRtu = carRtuService.one(carId); Integer installType = ardSyCarRtu.getInstallType(); //1è§£å° if(installType==1){ Map<String,Object> map = new HashMap<>(); map.put("A01", 110000);//导é第ä¸è·¯ç»§çµå¨ map.put("A02", 110000);//导é第äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicPublish(), String.valueOf(new JSONObject(map))); } //0æ½å° if(installType==0){ //å ³é Map<String,Object> map = new HashMap<>(); map.put("A01", 100000);//æå¼ç¬¬ä¸è·¯ç»§çµå¨ map.put("A02", 100000);//æå¼ç¬¬äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicPublish(), String.valueOf(new JSONObject(map))); } break; } } @@ -195,6 +216,27 @@ ardAccessFence.setIntoShipmentTime(time); ardAccessFence.setNowWallName(ardOilWall.getName()); ardAccessFence.setLastTime(time); //æ¥è¯¢è£ æ²¹ç¹æ¢å®Rtuç¶æ ArdSyCarRtu ardSyCarRtu = carRtuService.one(carId); Integer installType = ardSyCarRtu.getInstallType(); //1è§£å° if(installType==1){ Map<String,Object> map = new HashMap<>(); map.put("A01", 110000);//导é第ä¸è·¯ç»§çµå¨ map.put("A02", 110000);//导é第äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicPublish(), String.valueOf(new JSONObject(map))); } //0æ½å° if(installType==0){ //å ³é Map<String,Object> map = new HashMap<>(); map.put("A01", 100000);//æå¼ç¬¬ä¸è·¯ç»§çµå¨ map.put("A02", 100000);//æå¼ç¬¬äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicPublish(), String.valueOf(new JSONObject(map))); } break; } } @@ -222,9 +264,14 @@ ardAccessFence.setLat(lat); ardAccessFenceService.updAccess(ardAccessFence); //å¼åºè£ æ²¹ç¹å´æ ï¼åéä¸éåæ½å°å½ä»¤ ArdSyCarRtu ardSyCarRtu = carRtuService.one(carId); //å ³é Map<String,Object> map = new HashMap<>(); map.put("A01", 100000);//æå¼ç¬¬ä¸è·¯ç»§çµå¨ map.put("A02", 100000);//æå¼ç¬¬äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicPublish(), String.valueOf(new JSONObject(map))); } }else { @@ -255,6 +302,27 @@ ardAccessFenceService.updAccess(ardAccessFence); //å·²ç»è¿å ¥å¸æ²¹ç¹ï¼ä¸å¨è·¯ä¸ä¸éè¦å车æ¥è¦ isRoad = false; //æ¥è¯¢è£ æ²¹ç¹æ¢å®Rtuç¶æ ArdSyCarRtu ardSyCarRtu = carRtuService.one(carId); Integer unloadType = ardSyCarRtu.getUnloadType(); //1è§£å° if(unloadType==1){ Map<String,Object> map = new HashMap<>(); map.put("A01", 110000);//导é第ä¸è·¯ç»§çµå¨ map.put("A02", 110000);//导é第äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicPublish(), String.valueOf(new JSONObject(map))); } //0æ½å° if(unloadType==0){ //å ³é Map<String,Object> map = new HashMap<>(); map.put("A01", 100000);//æå¼ç¬¬ä¸è·¯ç»§çµå¨ map.put("A02", 100000);//æå¼ç¬¬äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicPublish(), String.valueOf(new JSONObject(map))); } break; } } @@ -297,9 +365,14 @@ } if (!GeoTools.IsPtInPoly(point, pts)) { //å¼åºäºå¸æ²¹ç¹å´æ ï¼åéä¸éåæ½è§£å°æä»¤ ArdSyCarRtu ardSyCarRtu = carRtuService.one(carId); //å ³é Map<String,Object> map = new HashMap<>(); map.put("A01", 100000);//æå¼ç¬¬ä¸è·¯ç»§çµå¨ map.put("A02", 100000);//æå¼ç¬¬äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); MqttConsumer.publish(ardSyCarRtu.getTopicPublish(), String.valueOf(new JSONObject(map))); //å é¤è¯¥æ¡è½¦è¾æ°æ® ardAccessFenceService.delAccess(carId); }else { ard-work/src/main/java/com/ruoyi/sy/param/AddRtuParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.ruoyi.sy.param; import lombok.Data; @Data public class AddRtuParam { private String carId; private Integer installType; //è£ æ²¹ç¹ 0æ½å° 1è§£å° private Integer unloadType; //叿²¹ç¹ 0æ½å° 1è§£å° } ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java
@@ -1,10 +1,8 @@ package com.ruoyi.sy.service; import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.sy.domain.ArdSyCar; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.vo.CarLockVo; import com.ruoyi.sy.param.AddRtuParam; import com.ruoyi.sy.vo.CarVo; import com.ruoyi.sy.vo.RtuVo; @@ -18,7 +16,7 @@ List<CarVo> car(); List<CarVo> carAddOne(String carId); int addRtu(String carId); int addRtu(AddRtuParam addRtuParam); /** * æææéçè½¦è¾ @@ -39,6 +37,8 @@ List<CarVo> addCarBefore(String id); List<ArdSyCarLock> data(String msg); int updLock(ArdSyCarLock ardSyCarLock); } ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarRtuService.java
@@ -15,4 +15,6 @@ ArdSyCarRtu one(String carId); String openLock(ArdSyCarRtu ardSyCarRtu); ArdSyCarRtu subscribeByCarId(String subscribe); } ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
@@ -1,17 +1,16 @@ package com.ruoyi.sy.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.sy.domain.ArdSyCar; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.mapper.ArdAccessFenceMapper; import com.ruoyi.sy.mapper.ArdSyCarLockMapper; import com.ruoyi.sy.mapper.ArdSyCarMapper; import com.ruoyi.sy.mapper.ArdSyCarRtuMapper; import com.ruoyi.sy.param.AddRtuParam; import com.ruoyi.sy.service.ArdSyCarLockService; import com.ruoyi.sy.vo.CarLockVo; import com.ruoyi.sy.vo.CarVo; import com.ruoyi.sy.vo.RtuVo; import com.ruoyi.system.mapper.SysDeptMapper; @@ -55,15 +54,17 @@ } @Override public int addRtu(String carId) { public int addRtu(AddRtuParam addRtuParam) { ArdSyCarRtu ardSyCarRtu = new ArdSyCarRtu(); ardSyCarRtu.setId(String.valueOf(UUID.randomUUID())); ardSyCarRtu.setCarId(carId); ardSyCarRtu.setTopicPublish("/p"+carId+"/"); ardSyCarRtu.setTopicSubscribe("/p"+carId+"/set/"); ardSyCarRtu.setCarId(addRtuParam.getCarId()); ardSyCarRtu.setTopicPublish("/p"+addRtuParam.getCarId()+"/"); ardSyCarRtu.setTopicSubscribe("/p"+addRtuParam.getCarId()+"/set/"); ardSyCarRtu.setInstallType(addRtuParam.getInstallType()); ardSyCarRtu.setUnloadType(addRtuParam.getUnloadType()); rtuMapper.insert(ardSyCarRtu); QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("car_id",carId); queryWrapper.eq("car_id",addRtuParam.getCarId()); ArdSyCar ardSyCar = ardSyCarMapper.selectOne(queryWrapper); ardSyCar.setReserved1(ardSyCarRtu.getId()); return ardSyCarMapper.updateById(ardSyCar); @@ -108,9 +109,15 @@ @Override public List<ArdSyCarLock> carLock(String rtu) { List<ArdSyCarLock> locks = new ArrayList<>(); try { QueryWrapper<ArdSyCarLock> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("rtu_id",rtu); return lockMapper.selectList(queryWrapper); locks = lockMapper.selectList(queryWrapper); }catch (Exception e){ } return locks; } @Override @@ -179,7 +186,29 @@ return carAnalysis(carList); } @Override public List<ArdSyCarLock> data(String msg) { JSONObject jsonObject = JSONObject.parseObject(msg); List<ArdSyCarLock> lockList = new ArrayList<>(); ArdSyCarLock ardSyCarLock1 = new ArdSyCarLock(); ardSyCarLock1.setRelay("A01"); ardSyCarLock1.setRelayInfo(String.valueOf(jsonObject.getInteger("A01"))); ardSyCarLock1.setCurrent("C01"); ardSyCarLock1.setCurrentInfo(String.valueOf(jsonObject.getFloat("C01"))); lockList.add(ardSyCarLock1); ArdSyCarLock ardSyCarLock2 = new ArdSyCarLock(); ardSyCarLock2.setRelay("A02"); ardSyCarLock2.setRelayInfo(String.valueOf(jsonObject.getInteger("A02"))); ardSyCarLock2.setCurrent("C02"); ardSyCarLock2.setCurrentInfo(String.valueOf(jsonObject.getFloat("C02"))); lockList.add(ardSyCarLock2); return lockList; } @Override public int updLock(ArdSyCarLock ardSyCarLock) { return lockMapper.updateById(ardSyCarLock); } //车è¾å表å°è£ ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarRtuServiceImpl.java
@@ -53,4 +53,11 @@ return "å·²åéå¼éæä»¤"; } @Override public ArdSyCarRtu subscribeByCarId(String subscribe) { QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("topic_subscribe",subscribe); return ardSyCarRtuMapper.selectOne(queryWrapper); } } ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java
@@ -29,7 +29,7 @@ @Autowired private ISysConfigService sysConfigService; // @PostConstruct @PostConstruct public void init() { //è·åçµç£éå°å String mqttUrl = sysConfigService.selectConfigByKey("ElectromagneticLockUrl"); ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnceCallback.java
@@ -1,15 +1,19 @@ package com.ruoyi.utils.mqtt; import com.ruoyi.alarm.global.service.impl.GlobalAlarmServiceImpl; import com.ruoyi.alarm.radar.service.ArdRadarService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.statistical.service.StatisticalService; import com.ruoyi.storage.minio.service.IStorageMinioEventService; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.gps31.PositionContainer; import com.ruoyi.sy.service.ArdSyCarLockService; import com.ruoyi.sy.service.ArdSyCarRtuService; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.*; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description: mqttåè°å¤çç±» @@ -25,6 +29,9 @@ private MqttConnectOptions options; private String topic; private int qos; //æ³¨å ¥çµåéBean ArdSyCarRtuService carRtuService = SpringUtils.getBean(ArdSyCarRtuService.class); ArdSyCarLockService carLockService = SpringUtils.getBean(ArdSyCarLockService.class); public MqttOnceCallback(MqttClient client, MqttConnectOptions options, String topic, int qos) { this.client = client; @@ -70,6 +77,26 @@ public void messageArrived(String topic, MqttMessage message) { try { // System.out.println("ã车è¾é主é¢ãï¼"+topic+"ã车è¾éä¿¡æ¯ãï¼"+new String(message.getPayload(), StandardCharsets.UTF_8)); //åºæ¥åè°æ°æ® List<ArdSyCarLock> ardSyCarLocks = carLockService.data(new String(message.getPayload(), StandardCharsets.UTF_8)); //åå ¥éå Map<String,List<ArdSyCarLock>> map = PositionContainer.getTopicSubscribe(); if(map==null){ Map<String,List<ArdSyCarLock>> newMap = new HashMap<>(); newMap.put("topic",ardSyCarLocks); PositionContainer.setTopicSubscribe(newMap); }else { for(Map.Entry entry : map.entrySet()){ String mapTopic = (String) entry.getKey(); if(topic.equals(mapTopic)){ map.remove(entry.getKey()); } Map<String,List<ArdSyCarLock>> newMap = new HashMap<>(); newMap.put("topic",ardSyCarLocks); PositionContainer.setTopicSubscribe(newMap); } } log.debug(String.valueOf(map)); } catch (Exception e) { log.debug("车è¾çµç£éå¤çmqttæ¶æ¯å¼å¸¸:" + e); }