From 2cfcb15fdff730140b6a03a874466802704078eb Mon Sep 17 00:00:00 2001 From: aijinhui <aijinhui> Date: 星期五, 22 十二月 2023 10:01:42 +0800 Subject: [PATCH] 群组 --- ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java | 273 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 158 insertions(+), 115 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java index 41e9316..6b28819 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java +++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java @@ -20,6 +20,7 @@ import com.ruoyi.utils.qymqtt.newM.EmqClient; import com.ruoyi.utils.qymqtt.newM.QosEnum; import com.ruoyi.utils.qymqtt.oldM.MqttCustomerClient; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.paho.client.mqttv3.MqttException; @@ -35,9 +36,10 @@ * @author chencq * @version 1.0 */ +@Slf4j(topic = "mqttCar") public class PushClientImplPosition extends PushClient implements Runnable { - private static final Log log = LogFactory.getLog(PushClientImplPosition.class); +// private static final Log log = LogFactory.getLog(PushClientImplPosition.class); private String ip; @@ -78,9 +80,8 @@ /*String carName = MapUtil.getStrVal(gpsMap, "carName","");//鑾峰彇杞︾墝鍙� SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(new Date()));*/ - log.info(String.format(" ---->鏀跺埌瀹氫綅鏁版嵁:%s",JSON.toJSONString(gpsMap))); + log.debug(String.format(" ---->鏀跺埌瀹氫綅鏁版嵁:%s",JSON.toJSONString(gpsMap))); String carId = (String)gpsMap.get("carId"); - ((ArdSyCarDayServiceImpl)SpringUtils.getBean("ardSyCarDayServiceImpl")).insertArdSyCarDay(carId);//鏂板杞﹁締涓婃姤鏃堕棿 Map<String,Object> result = ((ArdSyCarServiceImpl)SpringUtils.getBean("ardSyCarServiceImpl")).getArdSyCarAndDeptByCarId(carId);//鏌ヨ杞﹁締鍙婇儴闂� if(result != null){ @@ -89,13 +90,25 @@ String lng = (String) gpsMap.get("lng").toString();//鑾峰彇缁忓害 String lat = (String) gpsMap.get("lat").toString();//鑾峰彇绾害 String carName = (String) gpsMap.get("carName");//鑾峰彇杞︾墝鍙� - String time = (String) gpsMap.get("result");//瀹氫綅鏃堕棿 + String time = (String) gpsMap.get("time");//瀹氫綅鏃堕棿 + //鏃堕棿鐘舵�� + Boolean timeType = true; + if(time==null || time == ""){ + timeType = false; + } String deptNum = (String) result.get("deptId").toString();//鑾峰彇閮ㄩ棬ID String deptName = (String) result.get("deptName");//鑾峰彇閮ㄩ棬鍚嶇О String carModel = (String) result.get("carModel");//鑾峰彇杞﹁締妯″瀷 Integer drct = (Integer) gpsMap.get("drct");//鑾峰彇杞﹁締妯″瀷 - Integer speed = (Integer) gpsMap.get("speed"); - log.info("carId:"+carId+"lng:"+lng+"lat:"+lat); + Integer speed = (Integer) gpsMap.get("speed");//杞﹂�� + String reserved = (String) result.get("reserved_1");//rtu鍏宠仈 + //rtu鏍囪瘑 + boolean rtuType = true; + if(reserved==null || reserved==""){ + //鏃犻攣 + rtuType = false; + } + log.debug("瀹氫綅鏁版嵁锛氳溅杈哻arId:"+carId+"缁忓害lng:"+lng+"绾害lat:"+lat); //瀹氫箟2缁寸┖闂� Point2D.Double point = new Point2D.Double(Double.parseDouble(lng), Double.parseDouble(lat)); List<Point2D.Double> pts = new ArrayList<Point2D.Double>(); @@ -114,15 +127,7 @@ //鏌ヨ鎵�鏈夎娌圭偣鍥存爮 List<ArdOilWall> ardOilWalls = ardOilWallService.accessAll(); //鏃ユ湡鏍煎紡 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - //杞﹂�熸爣璁� - Boolean stop = true; - //鍒ゆ柇杞﹂�� - if(speed>5){ - //mqtt鍙戦�佹棦瀹歊tu鐘舵�� - feng(carId,"鏂藉皝",carRtuService,lockService); - stop = false; - } + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); //濡傛灉娌℃湁璇存槑杞﹁締鏈繘鍏ヨ娌圭偣锛岄渶瑕佸尮閰嶆墍鏈夎娌圭偣鍥存爮 if(ardAccessFence==null){ //杞﹁締鏈繘鍏ヨ娌圭偣 @@ -146,21 +151,31 @@ ardAccessFence1.setLng(lng); ardAccessFence1.setLat(lat); ardAccessFence1.setLastTime(time); - ardAccessFence1.setNowWallName(ardOilWall.getName()); + ardAccessFence1.setNowWallName("杩涘叆瑁呮补鐐癸細"+ardOilWall.getName()); ardAccessFence1.setCarModel(carModel); ardAccessFence1.setIsWarning(0); ardAccessFence1.setDrct(drct); ardAccessFence1.setIsAlarm(0); ardAccessFenceService.access(ardAccessFence1); - if(stop){ + if(rtuType){ //mqtt鍙戦�佹棦瀹歊tu鐘舵�� feng(carId,"瑁呮补鐐�",carRtuService,lockService); + break; } - break; } } }else { - //甯﹂攣杞﹁締鏈夊�间紭鍏堝垽鏂槸鍚︿负鎵嬪姩娣诲姞杞﹁締 + //杞﹂�熸爣璁� + Boolean stop = true; + //鍒ゆ柇杞﹂�� + if(rtuType){ + if(speed>5){ + //mqtt鍙戦�佹棦瀹歊tu鐘舵�� + feng(carId,"鏂藉皝",carRtuService,lockService); + stop = false; + } + } + //杞﹁締鏈夊�间紭鍏堝垽鏂槸鍚︿负鎵嬪姩娣诲姞杞﹁締 if(ardAccessFence.getIsAlarm()==1){ //1涓烘墜鍔ㄦ坊鍔犺溅杈嗘棤闇�鎶ヨ淇℃伅锛屾洿鏂颁綅缃嵆鍙� ardAccessFence.setLng(lng); @@ -171,19 +186,23 @@ ardAccessFence.setNowWallName(null); //濡傛灉鍦ㄨ矾涓婂垽鏂潗鏍囨槸鍚︿笌涓婃涓�鏍� if(ardAccessFence.getLng().equals(lng) && ardAccessFence.getLat().equals(lat)){ - Date nowTime = sdf.parse(time); - Date lastTime = sdf.parse(ardAccessFence.getLastTime()); - Long diff = (nowTime.getTime() - lastTime.getTime())/1000; - ArdAccessNum list = accessNumService.queryNum(); - if(list==null){ - int alarm = list.getAlarm(); - if(diff>=alarm){ - //鎶ヨ瀛楁涓�1鎻愮ず鎶ヨ - ardAccessFence.setIsWarning(1); - ardAccessFence.setAlarmLat(lat); - ardAccessFence.setAlarmLng(lng); - ardAccessFenceService.updAccess(ardAccessFence); + if(timeType){ + Date nowTime = sdf.parse(time); + Date lastTime = sdf.parse(ardAccessFence.getLastTime()); + Long diff = (nowTime.getTime() - lastTime.getTime())/1000; + ArdAccessNum list = accessNumService.queryNum(); + if(list!=null){ + int alarm = list.getAlarm(); + if(diff>=alarm){ + //鎶ヨ瀛楁涓�1鎻愮ず鎶ヨ + ardAccessFence.setIsWarning(1); + ardAccessFence.setAlarmLat(lat); + ardAccessFence.setAlarmLng(lng); + ardAccessFenceService.updAccess(ardAccessFence); + } } + }else { + log.debug(carId+"鍙疯溅瀹氫綅鏃堕棿涓虹┖"); } }else { //濡傛灉涓嶄竴鏍锋洿鏂板潗鏍� @@ -210,11 +229,13 @@ //杩涘叆瑁呮补鐐瑰叆搴� ardAccessFence.setIntoShipmentId(ardOilWall.getId()); ardAccessFence.setIntoShipmentTime(time); - ardAccessFence.setNowWallName(ardOilWall.getName()); + ardAccessFence.setNowWallName("杩涘叆瑁呮补鐐癸細"+ardOilWall.getName()); ardAccessFence.setLastTime(time); - if(stop){ - //mqtt鍙戦�佹棦瀹歊tu鐘舵�� - feng(carId,"瑁呮补鐐�",carRtuService,lockService); + if(rtuType){ + if(stop){ + //mqtt鍙戦�佹棦瀹歊tu鐘舵�� + feng(carId,"瑁呮补鐐�",carRtuService,lockService); + } } break; } @@ -237,13 +258,15 @@ //杞﹁締寮�鍑鸿娌圭偣 ardAccessFence.setOutShipmentId(into); ardAccessFence.setOutShipmentTime(time); - ardAccessFence.setNowWallName(ardOilWall.getName()); + ardAccessFence.setNowWallName("寮�鍑鸿娌圭偣锛�"+ardOilWall.getName()); ardAccessFence.setLastTime(time); ardAccessFence.setLng(lng); ardAccessFence.setLat(lat); ardAccessFenceService.updAccess(ardAccessFence); - //寮�鍑鸿娌圭偣鍥存爮锛屽彂閫佷笂閿佸強鏂藉皝鍛戒护 - feng(carId,"鏂藉皝",carRtuService,lockService); + if(rtuType){ + //寮�鍑鸿娌圭偣鍥存爮锛屽彂閫佷笂閿佸強鏂藉皝鍛戒护 + feng(carId,"鏂藉皝",carRtuService,lockService); + } } }else { //杞﹁締宸茬粡寮�鍑鸿娌圭偣锛屾煡鐪嬫槸鍚︽湁鍗告补鐐笽D @@ -268,14 +291,16 @@ ardAccessFence.setIntoUnloadTime(time); ardAccessFence.setLng(lng); ardAccessFence.setLat(lat); - ardAccessFence.setNowWallName(ardOilWall.getName()); + ardAccessFence.setNowWallName("杩涘叆鍗告补鐐癸細"+ardOilWall.getName()); ardAccessFence.setLastTime(time); ardAccessFenceService.updAccess(ardAccessFence); //宸茬粡杩涘叆鍗告补鐐癸紝涓嶅湪璺笂涓嶉渶瑕佸仠杞︽姤璀� isRoad = false; - if(stop){ - //mqtt鍙戦�佹棦瀹歊tu鐘舵�� - feng(carId,"鍗告补鐐�",carRtuService,lockService); + if(rtuType){ + if(stop){ + //mqtt鍙戦�佹棦瀹歊tu鐘舵�� + feng(carId,"鍗告补鐐�",carRtuService,lockService); + } } break; } @@ -283,22 +308,31 @@ //涓嶅湪鍗告补鐐瑰氨鏄湪璺笂 if(isRoad){ //鎵�鍦ㄥ洿鏍忓悕绉拌祴null - ardAccessFence.setNowWallName(null); + ardAccessFence.setNowWallName("鍦ㄨ矾涓�"); //濡傛灉鍦ㄨ矾涓婂垽鏂潗鏍囨槸鍚︿笌涓婃涓�鏍� if(ardAccessFence.getLng().equals(lng) && ardAccessFence.getLat().equals(lat)){ - //濡傛灉鍧愭爣涓�鏍风浉鍑� - Date nowTime = sdf.parse(time); - Date lastTime = sdf.parse(ardAccessFence.getLastTime()); - Long diff = (nowTime.getTime() - lastTime.getTime())/1000; - ArdAccessNum list = accessNumService.queryNum(); - if(list==null){ - int alarm = list.getAlarm(); - if(diff>=alarm){ - ardAccessFence.setIsWarning(1); - ardAccessFence.setAlarmLat(lat); - ardAccessFence.setAlarmLng(lng); - ardAccessFenceService.updAccess(ardAccessFence); + if(ardAccessFence.getLastTime()!=null){ + if(timeType){ + //濡傛灉鍧愭爣涓�鏍风浉鍑� + Date nowTime = sdf.parse(time); + Date lastTime = sdf.parse(ardAccessFence.getLastTime()); + Long diff = (nowTime.getTime() - lastTime.getTime())/1000; + ArdAccessNum list = accessNumService.queryNum(); + if(list!=null){ + int alarm = list.getAlarm(); + if(diff>=alarm){ + ardAccessFence.setIsWarning(1); + ardAccessFence.setAlarmLat(lat); + ardAccessFence.setAlarmLng(lng); + ardAccessFenceService.updAccess(ardAccessFence); + } + } + }else { + log.debug(carId+"鍙疯溅瀹氫綅鏃堕棿涓虹┖"); } + }else { + ardAccessFence.setLastTime(time); + ardAccessFenceService.updAccess(ardAccessFence); } }else { //濡傛灉涓嶄竴鏍锋洿鏂板潗鏍� @@ -317,8 +351,10 @@ pts.add(new Point2D.Double(Double.parseDouble(coord[j]), Double.parseDouble(coord[j + 1]))); } if (!GeoTools.IsPtInPoly(point, pts)) { - //寮�鍑轰簡鍗告补鐐瑰洿鏍忥紝鍙戦�佷笂閿佸強鏂借В灏佹寚浠� - feng(carId,"鏂藉皝",carRtuService,lockService); + if(rtuType){ + //寮�鍑轰簡鍗告补鐐瑰洿鏍忥紝鍙戦�佷笂閿佸強鏂借В灏佹寚浠� + feng(carId,"鏂藉皝",carRtuService,lockService); + } //鍒犻櫎璇ユ潯杞﹁締鏁版嵁 ardAccessFenceService.delAccess(carId); }else { @@ -453,71 +489,78 @@ //1瑙e皝 if(fengType==1){ //濡傛灉涓嶆槸瑙e皝灏佺姸鎬侊紝鍒欏彂閫佹柦灏佸懡浠� - if(ardSyCarLocks.get(0).getRelayInfo()!=null){ - if(ardSyCarLocks.get(0).getRelayInfo()==0){ - Map<String,Object> map = new HashMap<>(); - map.put("A01", 110000);//瀵奸�氱涓�璺户鐢靛櫒 - map.put("A02", 110000);//瀵奸�氱浜岃矾缁х數鍣� - map.put("res", String.valueOf(System.currentTimeMillis())); - String mapString = com.alibaba.fastjson.JSON.toJSONString(map); - EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); - emqClient.connect(); - emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); - log.info("杞﹁締"+carId+"瑙e皝鍛戒护鍙戦�佹垚鍔燂紒"); - // mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"瑙e皝"); - } + if(ardSyCarLocks.get(0).getRelayInfo()==0 || ardSyCarLocks.get(0).getRelayInfo()==null){ +// Map<String,Object> map = new HashMap<>(); +// map.put("A01", 110000);//瀵奸�氱涓�璺户鐢靛櫒 +// map.put("A02", 110000);//瀵奸�氱浜岃矾缁х數鍣� +// map.put("res", String.valueOf(System.currentTimeMillis())); +// String mapString = com.alibaba.fastjson.JSON.toJSONString(map); + String mapString = "{\"A01\":110000,\"A02\":110000,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; + log.debug("鑷姩瑙e皝锛�"+mapString); + EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); + emqClient.connect(); + emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); + log.debug("杞﹁締"+carId+"瑙e皝鍛戒护鍙戦�佹垚鍔燂紒"); + // mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"瑙e皝"); } } + //0鏂藉皝 if(fengType==0){ - //閿佸紑鍏崇姸鎬� - int lockCloseNum = 0; - //濡傛灉涓嶆槸鏂藉皝鐘舵�侊紝鍒欏彂閫佹柦灏佸懡浠� - if(ardSyCarLocks.get(0).getRelayInfo()!=null){ - if(ardSyCarLocks.get(0).getRelayInfo()==1){ - 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())); - String mapString = com.alibaba.fastjson.JSON.toJSONString(map); - EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); - emqClient.connect(); - emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); - // 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) || currentInfo1.equals(4)){ - lockCloseNum +=1; - break; + if(ardSyCarLocks.get(0).getRelayInfo()==1 || ardSyCarLocks.get(0).getRelayInfo()==null){ + //閿佸紑鍏崇姸鎬� + int lockCloseNum = 0; + String mapString1 = "{\"A01\":100000,\"A02\":100000,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; + System.out.println("鑷姩鏂藉皝锛�"+mapString1); + EmqClient emqClient1 = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); + emqClient1.connect(); + emqClient1.publish(ardSyCarRtu.getTopicPublish(),mapString1, QosEnum.QoS2,false); + //濡傛灉涓嶆槸鏂藉皝鐘舵�侊紝鍒欏彂閫佹柦灏佸懡浠� + if(ardSyCarLocks.get(0).getRelayInfo()!=null){ + if(ardSyCarLocks.get(0).getRelayInfo()==1){ + 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())); +// String mapString = com.alibaba.fastjson.JSON.toJSONString(map); + String mapString = "{\""+key+"\":0.01,\"res\":\""+String.valueOf(System.currentTimeMillis())+"\"}"; + log.debug("鑷姩鍏抽攣锛�"+mapString); + EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); + emqClient.connect(); + emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); + // 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) || currentInfo1.equals(4)){ + 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())); - String mapString = com.alibaba.fastjson.JSON.toJSONString(map); - EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); - emqClient.connect(); - emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); - log.info("杞﹁締"+carId+"鏂藉皝鍛戒护鍙戦�佹垚鍔燂紒"); - // mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"鏂藉皝"); + 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 = com.alibaba.fastjson.JSON.toJSONString(map); + log.debug("杞﹁締"+carId+"鏂藉皝鍛戒护鍙戦�佹垚鍔燂紒"); + // mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"鏂藉皝"); + } } } } -- Gitblit v1.9.3