From 7123cbe57219a337aaf7f4744516a6460b1c393a Mon Sep 17 00:00:00 2001 From: weidong Date: Tue, 10 Sep 2024 10:46:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B5=E5=B7=9E=E9=99=A2=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=A7=92=E5=BA=A6=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beidou_fwd/entity/GZYMQTTAngle.java | 24 ++++++ .../beidou_fwd/task/GZYMQTTForwarder.java | 51 ++++++++++- .../beidou_fwd/task/GZYMQTTForwarder2.java | 84 ------------------- 3 files changed, 71 insertions(+), 88 deletions(-) create mode 100644 sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/entity/GZYMQTTAngle.java delete mode 100644 sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GZYMQTTForwarder2.java diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/entity/GZYMQTTAngle.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/entity/GZYMQTTAngle.java new file mode 100644 index 00000000..fd5b62c4 --- /dev/null +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/entity/GZYMQTTAngle.java @@ -0,0 +1,24 @@ +package com.imdroid.beidou_fwd.entity; + + +import lombok.Data; + + +/** + * MQTT数据推送 api + * + * @author LiGang + */ +@Data +public class GZYMQTTAngle { + private String deviceSn; + private String collectTime; + private int deviceType = 8; + // gnss数据 + private double angleX = 0; + private double angleY = 0; + private double angleZ = 0; + private double angleIn = 0; + private double angleAz = 0; + +} diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GZYMQTTForwarder.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GZYMQTTForwarder.java index b61fefad..f461e61f 100644 --- a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GZYMQTTForwarder.java +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GZYMQTTForwarder.java @@ -1,12 +1,17 @@ package com.imdroid.beidou_fwd.task; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.imdroid.beidou_fwd.entity.GZYMQTTAngle; import com.imdroid.beidou_fwd.entity.GZYMQTTData; import com.imdroid.beidou_fwd.service.MQTTClient; import com.imdroid.common.util.GsonUtil; import com.imdroid.common.util.NumberUtils; import com.imdroid.secapi.dto.GnssCalcData; +import com.imdroid.secapi.dto.GnssStatusMsg; +import com.imdroid.secapi.dto.GnssStatusMsgMapper; import org.eclipse.paho.client.mqttv3.MqttException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; @@ -15,6 +20,7 @@ import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.time.LocalDateTime; +import java.util.HashMap; import java.util.List; @Component @@ -33,7 +39,8 @@ public class GZYMQTTForwarder extends Forwarder { @Value("${mqtt.server.topic}") private String topic; - + @Autowired + GnssStatusMsgMapper statusMsgMapper; MQTTClient mqttClient; @PostConstruct @@ -50,6 +57,7 @@ public class GZYMQTTForwarder extends Forwarder { private void forwardGnss() { logger.info("gzy mqtt forwardGnss"); forwardCurrentGnss(); + forwardAngleData(); } @Override @@ -68,11 +76,10 @@ public class GZYMQTTForwarder extends Forwarder { tranData.setDeviceType(2); tranData.setDeviceSn(locationRecord.getDeviceid()); String json = GsonUtil.toJson(tranData); - logger.info("forward to GZY mqtt"); - logger.info(json); + logger.info("forward to GZY mqtt: {}",json); try { if(!mqttClient.publish(topic, json)) break; - Thread.sleep(200); + Thread.sleep(50); } catch (Exception e1) { e1.printStackTrace(); } @@ -82,4 +89,40 @@ public class GZYMQTTForwarder extends Forwarder { return sendNum; } + void forwardAngleData() { + // 获取最近半小时的状态消息 + LocalDateTime sentTime = LocalDateTime.now(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("tenantid",tenantId); + queryWrapper.le("createtime",sentTime); + queryWrapper.ge("createtime",sentTime.minusMinutes(fwdCycleMinutes)); + queryWrapper.orderByDesc("createtime"); + HashMap sendDeviceMap = new HashMap<>(); + List statusMsgs = statusMsgMapper.selectList(queryWrapper); + int sendNum = 0; + for(GnssStatusMsg msg:statusMsgs){ + if(sendDeviceMap.get(msg.getDeviceid())!=null) continue; + sendDeviceMap.put(msg.getDeviceid(),msg.getDeviceid()); + + GZYMQTTAngle tranData = new GZYMQTTAngle(); + tranData.setDeviceSn(msg.getDeviceid()); + tranData.setCollectTime(msg.getCreatetime().format(formatter)); + tranData.setAngleX(msg.getRoll()); + tranData.setAngleY(msg.getPitch()); + tranData.setAngleAz(msg.getYaw()); + + String json = GsonUtil.toJson(tranData); + logger.info("forward to GZY mqtt angles: {}",json); + try { + if(!mqttClient.publish(topic, json)) break; + Thread.sleep(10); + } catch (Exception e1) { + e1.printStackTrace(); + } + sendNum++; + } + logger.info("total number of angles sent to GZY: {}",sendNum); + + } + } diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GZYMQTTForwarder2.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GZYMQTTForwarder2.java deleted file mode 100644 index 268a39e4..00000000 --- a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GZYMQTTForwarder2.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.imdroid.beidou_fwd.task; - - -import com.imdroid.beidou_fwd.entity.GZYMQTTData; -import com.imdroid.beidou_fwd.service.MQTTClient; -import com.imdroid.common.util.GsonUtil; -import com.imdroid.common.util.NumberUtils; -import com.imdroid.secapi.dto.GnssCalcData; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import java.time.LocalDateTime; -import java.util.List; - -@Component -@Configuration -@EnableScheduling -public class GZYMQTTForwarder2 extends Forwarder { - static final String FORWARDER_NAME = "贵州交勘院MQTT10分钟"; - @Value("${mqtt.server.brokerUrl}") - private String brokerUrl; - @Value("${mqtt.server.username}") - private String username; - @Value("${mqtt.server.password}") - private String password; - @Value("${mqtt.server.clientid}") - private String clientid; - @Value("${mqtt.server.topic}") - private String topic; - - MQTTClient mqttClient; - - //@PostConstruct - void registerMe() throws MqttException { - init(FORWARDER_NAME, "MQTT "+brokerUrl,2,FWD_DEVICE_ALIAS_NAME,10); - mqttClient = new MQTTClient(brokerUrl, username, password,clientid); - mqttClient.connect(); - } - - /** - * 每半小时转发GNSS解算结果 - */ - //@Scheduled(cron = "0 0/10 * * * ?") // 每10分钟执行一次 - private void forwardGnss() { - logger.info("gzy mqtt forwardGnss"); - forwardCurrentGnss(); - } - - @Override - int send(String projectId, List records, LocalDateTime sentTime) { - int sendNum = 0; - - for (GnssCalcData locationRecord : records) { - GZYMQTTData tranData = new GZYMQTTData(); - tranData.setCollectTime(locationRecord.getCreatetime().format(formatter)); - double n = NumberUtils.scale(locationRecord.getRposn(), 2); - double e = NumberUtils.scale(locationRecord.getRpose(), 2); - double d = NumberUtils.scale(locationRecord.getRposd(), 2); - tranData.setX(n); - tranData.setY(e); - tranData.setZ(d); - tranData.setDeviceType(2); - tranData.setDeviceSn(locationRecord.getDeviceid()); - String json = GsonUtil.toJson(tranData); - logger.info("forward to GZY mqtt"); - logger.info(json); - try { - if(!mqttClient.publish(topic, json)) break; - Thread.sleep(200); - } catch (Exception e1) { - e1.printStackTrace(); - } - sendNum++; - } - - return sendNum; - } - -}