ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarLockController.java
@@ -11,6 +11,7 @@ import com.ruoyi.sy.mapper.ArdAccessFenceMapper; import com.ruoyi.sy.param.AddCarParam; import com.ruoyi.sy.param.AddRtuParam; import com.ruoyi.sy.param.LockTypeParam; import com.ruoyi.sy.service.*; import com.ruoyi.sy.service.impl.ArdSyCarRtuServiceImpl; import com.ruoyi.sy.vo.CarLockVo; @@ -21,6 +22,7 @@ import com.ruoyi.utils.result.Results; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -66,7 +68,7 @@ @PostMapping("/add") @ApiOperation("æ·»å rtu") public AjaxResult add(@RequestBody AddRtuParam addRtuParam){ return AjaxResult.success("æåæ·»å "+ardSyCarLockService.addRtu(addRtuParam)+"æ¡æ°æ®"); return AjaxResult.success("æåæ·»å "+ardSyCarLockService.addRtu(addRtuParam)+"æ¡æ°æ®ï¼è®¢é 车è¾"+addRtuParam.getCarId()+"æå"); } @DeleteMapping("/del") @@ -183,10 +185,16 @@ return AjaxResult.success(ardAccessFenceService.updCarAlarm(id)); } @GetMapping("/openLock") @GetMapping("/onOff") @ApiOperation("è¿ç¨å¼é") public AjaxResult openLock(String carId){ return AjaxResult.success(ardSyCarRtuService.openLock(ardSyCarRtuService.one(carId))); public AjaxResult onOff(@RequestBody LockTypeParam lockTypeParam) { return AjaxResult.success(ardSyCarLockService.onOff(lockTypeParam)); } @GetMapping("/seal") @ApiOperation("è¿ç¨å°å°") public AjaxResult seal(@RequestBody LockTypeParam lockTypeParam) { return AjaxResult.success(ardSyCarLockService.seal(lockTypeParam)); } ard-work/src/main/java/com/ruoyi/sy/domain/ArdSyCarLock.java
@@ -11,6 +11,6 @@ private String imgPositionLeft; private String relay; private String relayInfo; private String current; private String currents; private String currentInfo; } ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -15,17 +15,17 @@ import com.gps31.push.util.MapUtil; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.sy.domain.*; import com.ruoyi.sy.service.ArdAccessFenceService; import com.ruoyi.sy.service.ArdAccessNumService; import com.ruoyi.sy.service.ArdOilWallService; import com.ruoyi.sy.service.ArdSyCarRtuService; import com.ruoyi.sy.service.*; import com.ruoyi.sy.service.impl.*; import com.ruoyi.utils.gps.GeoTools; import com.ruoyi.utils.mqtt.MqttConsumer; import com.ruoyi.utils.mqtt.MqttOnce; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.paho.client.mqttv3.MqttException; import java.awt.geom.Point2D; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -104,6 +104,10 @@ ArdAccessNumService accessNumService = SpringUtils.getBean(ArdAccessNumService.class); //æ³¨å ¥çµåéBean ArdSyCarRtuService carRtuService = SpringUtils.getBean(ArdSyCarRtuService.class); //æ³¨å ¥éBean ArdSyCarLockService lockService = SpringUtils.getBean(ArdSyCarLockService.class); //å建mqttå·¥å ·ç±»å¯¹è±¡ MqttOnce mqttOnce = new MqttOnce(); //æ¥è¯¢å®ä½æ²¹è½¦è¡¨ä¸æ¯å¦æè¯¥è½¦è¾ ArdAccessFence ardAccessFence = ardAccessFenceService.queryAccess(carId); //æ¥è¯¢ææè£ æ²¹ç¹å´æ @@ -137,27 +141,8 @@ 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))); } //mqttå鿢å®Rtuç¶æ feng(carId,"è£ æ²¹ç¹",carRtuService,lockService,mqttOnce); break; } } @@ -216,27 +201,8 @@ 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))); } //mqttå鿢å®Rtuç¶æ feng(carId,"è£ æ²¹ç¹",carRtuService,lockService,mqttOnce); break; } } @@ -264,15 +230,7 @@ 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))); feng(carId,"æ½å°",carRtuService,lockService,mqttOnce); } }else { //车è¾å·²ç»å¼åºè£ æ²¹ç¹ï¼æ¥çæ¯å¦æå¸æ²¹ç¹ID @@ -302,27 +260,8 @@ 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))); } //mqttå鿢å®Rtuç¶æ feng(carId,"叿²¹ç¹",carRtuService,lockService,mqttOnce); break; } } @@ -365,14 +304,7 @@ } 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))); feng(carId,"æ½å°",carRtuService,lockService,mqttOnce); //å é¤è¯¥æ¡è½¦è¾æ°æ® ardAccessFenceService.delAccess(carId); }else { @@ -487,4 +419,68 @@ public void run() { sendMassage(); } private void feng(String carId,String type,ArdSyCarRtuService carRtuService,ArdSyCarLockService lockService,MqttOnce mqttOnce) throws MqttException { //æ¥è¯¢è£ æ²¹ç¹æ¢å®Rtuç¶æ ArdSyCarRtu ardSyCarRtu = carRtuService.one(carId); Integer fengType = null; if("è£ æ²¹ç¹".equals(type)){ fengType = ardSyCarRtu.getInstallType(); }else if("叿²¹ç¹".equals(type)){ fengType = ardSyCarRtu.getUnloadType(); }else if("æ½å°".equals(type)){ fengType = 0; } //1è§£å° if(fengType==1){ Map<String,Object> map = new HashMap<>(); map.put("A01", 110000);//导é第ä¸è·¯ç»§çµå¨ map.put("A02", 110000);//导é第äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"è§£å°"); } //0æ½å° if(fengType==0){ //éå¼å ³ç¶æ int lockCloseNum = 0; //æ¥è¯¢éä¿¡æ¯ List<ArdSyCarLock> ardSyCarLocks = lockService.carLock(ardSyCarRtu.getId()); for (int j = 0; j < ardSyCarLocks.size(); j++) { ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j); String currents = ardSyCarLock.getCurrents(); String currentInfo = ardSyCarLock.getCurrentInfo(); //çµæµå¼ä¸º4.0æ¯å ³éç¶æ if(currentInfo.equals(4.00)){ 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())); mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"å¼éï¼"+currents); while(true){ ArdSyCarLock ardSyCarLock1 = lockService.getCurrentInfo(ardSyCarRtu.getId(),currents); String currentInfo1 = ardSyCarLock1.getCurrentInfo(); if(currentInfo1.equals(4.00)){ 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())); mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"æ½å°"); } } } } ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarLockMapper.java
@@ -3,5 +3,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.sy.domain.ArdSyCarLock; import java.util.List; public interface ArdSyCarLockMapper extends BaseMapper<ArdSyCarLock> { List<ArdSyCarLock> lockList(String rtuId); } ard-work/src/main/java/com/ruoyi/sy/param/LockTypeParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.ruoyi.sy.param; import lombok.Data; @Data public class LockTypeParam { private String carId; private Integer type; private String lockId; private Integer num; } ard-work/src/main/java/com/ruoyi/sy/service/ArdAccessFenceService.java
@@ -4,6 +4,7 @@ import com.ruoyi.sy.domain.ArdSyCar; import com.ruoyi.sy.param.OilWallParam; import com.ruoyi.sy.vo.CarVo; import com.ruoyi.sy.vo.WallCarVo; import java.util.List; @@ -19,6 +20,7 @@ List<ArdAccessFence> all(String url); int delCar(String id); int updCarAlarm(String id); ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java
@@ -1,10 +1,13 @@ package com.ruoyi.sy.service; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.param.AddRtuParam; import com.ruoyi.sy.param.LockTypeParam; import com.ruoyi.sy.vo.CarVo; import com.ruoyi.sy.vo.RtuVo; import org.eclipse.paho.client.mqttv3.MqttException; import java.util.List; @@ -41,4 +44,10 @@ int updLock(ArdSyCarLock ardSyCarLock); ArdSyCarLock getCurrentInfo(String Rtu,String currents); AjaxResult seal(LockTypeParam lockTypeParam); AjaxResult onOff(LockTypeParam lockTypeParam); } ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
@@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.sy.domain.ArdSyCar; import com.ruoyi.sy.domain.ArdSyCarLock; @@ -10,20 +11,24 @@ import com.ruoyi.sy.mapper.ArdSyCarMapper; import com.ruoyi.sy.mapper.ArdSyCarRtuMapper; import com.ruoyi.sy.param.AddRtuParam; import com.ruoyi.sy.param.LockTypeParam; import com.ruoyi.sy.service.ArdSyCarLockService; import com.ruoyi.sy.vo.CarVo; import com.ruoyi.sy.vo.RtuVo; import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.utils.mqtt.MqttOnce; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.text.DecimalFormat; import java.util.*; /** * @author Administrator */ @Slf4j @Service public class ArdSyCarLockServiceImpl implements ArdSyCarLockService { @@ -62,12 +67,15 @@ ardSyCarRtu.setTopicSubscribe("/p"+addRtuParam.getCarId()+"/set/"); ardSyCarRtu.setInstallType(addRtuParam.getInstallType()); ardSyCarRtu.setUnloadType(addRtuParam.getUnloadType()); rtuMapper.insert(ardSyCarRtu); int num = rtuMapper.insert(ardSyCarRtu); QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("car_id",addRtuParam.getCarId()); ArdSyCar ardSyCar = ardSyCarMapper.selectOne(queryWrapper); ardSyCar.setReserved1(ardSyCarRtu.getId()); return ardSyCarMapper.updateById(ardSyCar); ardSyCarMapper.updateById(ardSyCar); MqttOnce mqttOnce = new MqttOnce(); mqttOnce.subscribeCar(ardSyCarRtu); return num; } @Override @@ -109,15 +117,15 @@ @Override public List<ArdSyCarLock> carLock(String rtu) { List<ArdSyCarLock> locks = new ArrayList<>(); try { QueryWrapper<ArdSyCarLock> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("rtu_id",rtu); locks = lockMapper.selectList(queryWrapper); }catch (Exception e){ } return locks; // List<ArdSyCarLock> locks = new ArrayList<>(); // try { // QueryWrapper<ArdSyCarLock> queryWrapper = new QueryWrapper<>(); // queryWrapper.eq("rtu_id",rtu); // locks = lockMapper.selectList(queryWrapper); // }catch (Exception e){ // // } return lockMapper.lockList(rtu); } @Override @@ -188,19 +196,21 @@ @Override public List<ArdSyCarLock> data(String msg) { String pattern = "0.00"; // æå®ä¿ç两ä½å°æ°çæ ¼å¼ DecimalFormat decimalFormat = new DecimalFormat(pattern); // 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"))); ardSyCarLock1.setCurrents("C01"); ardSyCarLock1.setCurrentInfo(decimalFormat.format(jsonObject.getDouble("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"))); ardSyCarLock2.setCurrents("C02"); ardSyCarLock2.setCurrentInfo(decimalFormat.format(jsonObject.getDouble("C02"))); lockList.add(ardSyCarLock2); return lockList; } @@ -210,6 +220,121 @@ return lockMapper.updateById(ardSyCarLock); } @Override public ArdSyCarLock getCurrentInfo(String Rtu, String currents) { QueryWrapper<ArdSyCarLock> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("rtu_id",Rtu).eq("currents",currents); return lockMapper.selectOne(queryWrapper); } @Override public AjaxResult seal(LockTypeParam lockTypeParam) { QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("carId",lockTypeParam.getCarId()); ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper); MqttOnce mqttOnce = new MqttOnce(); //1è§£å° if(lockTypeParam.getType()==1){ Map<String,Object> map = new HashMap<>(); map.put("A01", 110000);//导é第ä¸è·¯ç»§çµå¨ map.put("A02", 110000);//导é第äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); try { return AjaxResult.success(mqttOnce.publishCar(lockTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"è§£å°")); } catch (MqttException e) { log.debug("è§£å°æä»¤åç失败"+e); } } //0æ½å° if(lockTypeParam.getType()==0){ //éå¼å ³ç¶æ int lockCloseNum = 0; //æ¥è¯¢éä¿¡æ¯ List<ArdSyCarLock> ardSyCarLocks = carLock(ardSyCarRtu.getId()); for (int j = 0; j < ardSyCarLocks.size(); j++) { ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j); String currents = ardSyCarLock.getCurrents(); String currentInfo = ardSyCarLock.getCurrentInfo(); //çµæµå¼ä¸º4.0æ¯å ³éç¶æ if(currentInfo.equals(4.00)){ 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())); try { mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"å¼éï¼"+currents); } catch (MqttException e) { log.debug("å¼éæä»¤åç失败"+e); } while(true){ ArdSyCarLock ardSyCarLock1 = getCurrentInfo(ardSyCarRtu.getId(),currents); String currentInfo1 = ardSyCarLock1.getCurrentInfo(); if(currentInfo1.equals(4.00)){ 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())); try { return AjaxResult.success(mqttOnce.publishCar(lockTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"æ½å°")); } catch (MqttException e) { log.debug("æ½å°æä»¤åç失败"+e); } } } return AjaxResult.success(); } @Override public AjaxResult onOff(LockTypeParam lockTypeParam) { QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("car_id",lockTypeParam.getCarId()); ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper); ArdSyCarLock ardSyCarLock = lockMapper.selectById(lockTypeParam.getLockId()); String relay = ardSyCarLock.getRelayInfo(); if(relay.equals("1")){ AjaxResult.error(0,"该éå¤äºè§£å°ç¶æ,è¿ç¨æ æ³ææ§,è¯·å æ§è¡æ½å°æä½!"); } String key = ""; String currentInfo = ardSyCarLock.getCurrentInfo(); if(currentInfo.equals("C01")){ key = "D03"; }else if(currentInfo.equals("C02")){ key = "D04"; } Number lockState = (Number) lockTypeParam.getNum(); if(lockState.equals(100)){ lockState = 99.99; }else if(lockState.equals(0)){ lockState = 0.01; }else{ lockState = lockState.doubleValue() + 0.01; } Map<String,Object> map = new HashMap(); map.put(key, lockState);//èå´æ¯0.01å°99.99 map.put("res", String.valueOf(System.currentTimeMillis())); MqttOnce mqttOnce = new MqttOnce(); try { return AjaxResult.success(mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"å¼å ³éæä»¤"+lockState)); } catch (MqttException e) { log.debug("å¼å ³éæä»¤åé失败"+e); } return AjaxResult.success(); } //车è¾å表å°è£ public List<CarVo> carAnalysis(List<ArdSyCar> ardSyCars){ ard-work/src/main/java/com/ruoyi/sy/vo/WallCarVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.ruoyi.sy.vo; import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.sy.domain.ArdSyCarLock; import lombok.Data; import java.util.List; @Data public class WallCarVo { private ArdAccessFence ardAccessFence; private List<ArdSyCarLock> lock; } ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java
@@ -29,29 +29,16 @@ @Autowired private ISysConfigService sysConfigService; @PostConstruct // @PostConstruct public void init() { //è·åçµç£éå°å String mqttUrl = sysConfigService.selectConfigByKey("ElectromagneticLockUrl"); List<ArdSyCarRtu> rtus = ardSyCarRtuService.allCarTopicList(); for (int i = 0; i < rtus.size(); i++) { ArdSyCarRtu rtu = rtus.get(i); String carId = rtu.getCarId(); String subscribe = rtu.getTopicSubscribe(); try { MqttClient client = new MqttClient(mqttUrl,carId); // log.debug("--å建"+carId+"å·è½¦è¾çµåémqtt客æ·ç«¯"); MqttConnectOptions options = new MqttConnectOptions(); //è®¾ç½®ç¨æ·åå¯ç options.setUserName("admin"); options.setPassword("xzx12345".toCharArray()); // è®¾ç½®è¶ æ¶æ¶é´ options.setConnectionTimeout(100); // 设置ä¼è¯å¿è·³æ¶é´ options.setKeepAliveInterval(60); // æ¯å¦æ¸ é¤session options.setCleanSession(true); // log.debug("--çæ"+carId+"å·è½¦è¾çµåémqtté 置对象"); MqttClient client = getMqttClient(carId); MqttConnectOptions options = getMqttConnectOptions(); client.setCallback(new MqttOnceCallback(client,options,subscribe,2)); // log.debug("--æ·»å 车è¾çµç£éåè°å¤çç±»"); client.connect(options); @@ -59,10 +46,53 @@ e.printStackTrace(); } } // MqttConsumer mqttConsumer = new MqttConsumer(); // for (int i = 0; i < topic.length; i++) { // mqttConsumer.subscribe(topic[i],2); // } // log.info("mqttè®¢é æ¸ 淤车è¾éä¿¡æ¯ï¼"+Arrays.toString(topic)); } public void subscribeCar(ArdSyCarRtu ardSyCarRtu){ String carId = ardSyCarRtu.getCarId(); String subscribe = ardSyCarRtu.getTopicSubscribe(); try { MqttClient client = getMqttClient(carId); MqttConnectOptions options = getMqttConnectOptions(); client.setCallback(new MqttOnceCallback(client,options,subscribe,2)); // log.debug("--æ·»å 车è¾çµç£éåè°å¤çç±»"); client.connect(options); }catch (Exception e) { e.printStackTrace(); } } public MqttClient getMqttClient(String carId) throws MqttException { //è·åçµç£éå°å String mqttUrl = sysConfigService.selectConfigByKey("ElectromagneticLockUrl"); MqttClient client = new MqttClient(mqttUrl,carId); //log.debug("--å建"+carId+"å·è½¦è¾çµåémqtt客æ·ç«¯"); return client; } public MqttConnectOptions getMqttConnectOptions(){ MqttConnectOptions options = new MqttConnectOptions(); //è®¾ç½®ç¨æ·åå¯ç options.setUserName("admin"); options.setPassword("xzx12345".toCharArray()); // è®¾ç½®è¶ æ¶æ¶é´ options.setConnectionTimeout(100); // 设置ä¼è¯å¿è·³æ¶é´ options.setKeepAliveInterval(60); // æ¯å¦æ¸ é¤session options.setCleanSession(true); // log.debug("--çæ"+carId+"å·è½¦è¾çµåémqtté 置对象"); return options; } public String publishCar(String carId,String topic,String message,String type) throws MqttException { MqttClient client = getMqttClient(carId); MqttConnectOptions options = getMqttConnectOptions(); MqttMessage msg = new MqttMessage(message.getBytes()); msg.setQos(2); client.publish(topic,msg); client.disconnect(); return "åå¸"+type+"æä»¤æåï¼"; } } ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnceCallback.java
@@ -79,24 +79,60 @@ // 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()); //æ ¹æ®topicæ¥è¯¢RTUID ArdSyCarRtu ardSyCarRtu = carRtuService.subscribeByCarId(topic); String RTU = ardSyCarRtu.getId(); //æ ¹æ®RTUIDæ¥è¯¢é List<ArdSyCarLock> ardSyCarLockList = carLockService.carLock(RTU); for (int i = 0; i < ardSyCarLocks.size(); i++) { ArdSyCarLock ardSyCarLockData = ardSyCarLocks.get(i); String relay = ardSyCarLockData.getRelay(); String relayInfo = ardSyCarLockData.getRelayInfo(); String current = ardSyCarLockData.getCurrents(); String currentInfo = ardSyCarLockData.getCurrentInfo(); for (int j = 0; j < ardSyCarLockList.size(); j++) { ArdSyCarLock lock = ardSyCarLockList.get(j); String relay1 = lock.getRelay(); String current1 = lock.getCurrents(); String relayInfo1 = lock.getRelayInfo(); String currentInfo1 = lock.getCurrentInfo(); Boolean upd = false; if(relay.equals(relay1)){ if(!relayInfo.equals(relayInfo1)){ lock.setRelayInfo(relayInfo); upd = true; } } Map<String,List<ArdSyCarLock>> newMap = new HashMap<>(); newMap.put("topic",ardSyCarLocks); PositionContainer.setTopicSubscribe(newMap); if(current.equals(current1)){ if(!currentInfo.equals(currentInfo1)){ lock.setCurrentInfo(currentInfo); upd = true; } } if(upd){ int num = carLockService.updLock(lock); // log.debug("ä¿®æ¹"+num+"æ°æ®"); } } } log.debug(String.valueOf(map)); // //åå ¥éå // 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); } ard-work/src/main/resources/mapper/sy/ArdSyCarLockMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.sy.mapper.ArdSyCarLockMapper"> <select id="lockList" parameterType="String" resultType="com.ruoyi.sy.domain.ArdSyCarLock"> SELECT id,currents,rtu_id,current_info,relay,img_position_left,img_position_top,relay_info,lock_name FROM ard_sy_car_lock WHERE rtu_id = #{rtuId} </select> </mapper>