| | |
| | | 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.*; |
| | | |
| | |
| | | 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); |
| | | //查询所有装油点围栏 |
| | |
| | | ardAccessFence1.setDrct(drct); |
| | | ardAccessFence1.setIsAlarm(0); |
| | | ardAccessFenceService.access(ardAccessFence1); |
| | | //mqtt发送既定Rtu状态 |
| | | feng(carId,"装油点",carRtuService,lockService,mqttOnce); |
| | | break; |
| | | } |
| | | } |
| | |
| | | ardAccessFence.setIntoShipmentTime(time); |
| | | ardAccessFence.setNowWallName(ardOilWall.getName()); |
| | | ardAccessFence.setLastTime(time); |
| | | //mqtt发送既定Rtu状态 |
| | | feng(carId,"装油点",carRtuService,lockService,mqttOnce); |
| | | break; |
| | | } |
| | | } |
| | |
| | | ardAccessFence.setLng(lng); |
| | | ardAccessFence.setLat(lat); |
| | | ardAccessFenceService.updAccess(ardAccessFence); |
| | | //开出装油点围栏,发送上锁及施封命令 |
| | | |
| | | |
| | | |
| | | |
| | | //开出装油点围栏,发送上锁及施封命令 |
| | | feng(carId,"施封",carRtuService,lockService,mqttOnce); |
| | | } |
| | | }else { |
| | | //车辆已经开出装油点,查看是否有卸油点ID |
| | |
| | | ardAccessFenceService.updAccess(ardAccessFence); |
| | | //已经进入卸油点,不在路上不需要停车报警 |
| | | isRoad = false; |
| | | //mqtt发送既定Rtu状态 |
| | | feng(carId,"卸油点",carRtuService,lockService,mqttOnce); |
| | | break; |
| | | } |
| | | } |
| | |
| | | pts.add(new Point2D.Double(Double.parseDouble(coord[j]), Double.parseDouble(coord[j + 1]))); |
| | | } |
| | | if (!GeoTools.IsPtInPoly(point, pts)) { |
| | | //开出了卸油点围栏,发送上锁及施解封指令 |
| | | |
| | | |
| | | |
| | | //开出了卸油点围栏,发送上锁及施解封指令 |
| | | feng(carId,"施封",carRtuService,lockService,mqttOnce); |
| | | //删除该条车辆数据 |
| | | ardAccessFenceService.delAccess(carId); |
| | | }else { |
| | |
| | | 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(); |
| | | 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())); |
| | | 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)){ |
| | | 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)),"施封"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |