贵州院增加角度推送
This commit is contained in:
parent
bb575eab8f
commit
7123cbe572
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,12 +1,17 @@
|
|||||||
package com.imdroid.beidou_fwd.task;
|
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.entity.GZYMQTTData;
|
||||||
import com.imdroid.beidou_fwd.service.MQTTClient;
|
import com.imdroid.beidou_fwd.service.MQTTClient;
|
||||||
import com.imdroid.common.util.GsonUtil;
|
import com.imdroid.common.util.GsonUtil;
|
||||||
import com.imdroid.common.util.NumberUtils;
|
import com.imdroid.common.util.NumberUtils;
|
||||||
import com.imdroid.secapi.dto.GnssCalcData;
|
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.eclipse.paho.client.mqttv3.MqttException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
@ -15,6 +20,7 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@ -33,7 +39,8 @@ public class GZYMQTTForwarder extends Forwarder {
|
|||||||
@Value("${mqtt.server.topic}")
|
@Value("${mqtt.server.topic}")
|
||||||
private String topic;
|
private String topic;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
GnssStatusMsgMapper statusMsgMapper;
|
||||||
MQTTClient mqttClient;
|
MQTTClient mqttClient;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
@ -50,6 +57,7 @@ public class GZYMQTTForwarder extends Forwarder {
|
|||||||
private void forwardGnss() {
|
private void forwardGnss() {
|
||||||
logger.info("gzy mqtt forwardGnss");
|
logger.info("gzy mqtt forwardGnss");
|
||||||
forwardCurrentGnss();
|
forwardCurrentGnss();
|
||||||
|
forwardAngleData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -68,11 +76,10 @@ public class GZYMQTTForwarder extends Forwarder {
|
|||||||
tranData.setDeviceType(2);
|
tranData.setDeviceType(2);
|
||||||
tranData.setDeviceSn(locationRecord.getDeviceid());
|
tranData.setDeviceSn(locationRecord.getDeviceid());
|
||||||
String json = GsonUtil.toJson(tranData);
|
String json = GsonUtil.toJson(tranData);
|
||||||
logger.info("forward to GZY mqtt");
|
logger.info("forward to GZY mqtt: {}",json);
|
||||||
logger.info(json);
|
|
||||||
try {
|
try {
|
||||||
if(!mqttClient.publish(topic, json)) break;
|
if(!mqttClient.publish(topic, json)) break;
|
||||||
Thread.sleep(200);
|
Thread.sleep(50);
|
||||||
} catch (Exception e1) {
|
} catch (Exception e1) {
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -82,4 +89,40 @@ public class GZYMQTTForwarder extends Forwarder {
|
|||||||
return sendNum;
|
return sendNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void forwardAngleData() {
|
||||||
|
// 获取最近半小时的状态消息
|
||||||
|
LocalDateTime sentTime = LocalDateTime.now();
|
||||||
|
QueryWrapper<GnssStatusMsg> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("tenantid",tenantId);
|
||||||
|
queryWrapper.le("createtime",sentTime);
|
||||||
|
queryWrapper.ge("createtime",sentTime.minusMinutes(fwdCycleMinutes));
|
||||||
|
queryWrapper.orderByDesc("createtime");
|
||||||
|
HashMap<String,String> sendDeviceMap = new HashMap<>();
|
||||||
|
List<GnssStatusMsg> 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);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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<GnssCalcData> 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user