1、优化转发
This commit is contained in:
parent
b8b4c56aa3
commit
3787137b6d
@ -3,6 +3,8 @@ package com.imdroid.beidou_fwd.task;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.imdroid.common.util.ThreadManager;
|
||||
import com.imdroid.secapi.dto.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
@ -14,6 +16,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class Forwarder {
|
||||
final Logger logger = LoggerFactory.getLogger(Forwarder.class);
|
||||
|
||||
String fwdGroupId;
|
||||
String description;
|
||||
Integer tenantId;
|
||||
@ -247,45 +251,61 @@ public class Forwarder {
|
||||
}
|
||||
}
|
||||
|
||||
void checkOfflineDevice(){
|
||||
void checkOfflineDevice(String offDeviceId, String refDeviceId1, String refDeviceId2){
|
||||
QueryWrapper<GnssStatus> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("tenantid",tenantId);
|
||||
queryWrapper.eq("state",0);
|
||||
List<GnssStatus> statusList = gnssStatusMapper.selectList(queryWrapper);
|
||||
queryWrapper.eq("deviceid",offDeviceId);
|
||||
GnssStatus offDevice = gnssStatusMapper.getByDeviceId(offDeviceId);
|
||||
if(offDevice == null || offDevice.getState() != GnssStatus.STATE_OFFLINE) return;
|
||||
|
||||
GnssStatus refDevice1 = gnssStatusMapper.getByDeviceId(refDeviceId1);
|
||||
if(refDevice1 == null || refDevice1.getState() == GnssStatus.STATE_OFFLINE) return;
|
||||
GnssStatus refDevice2 = gnssStatusMapper.getByDeviceId(refDeviceId2);
|
||||
if(refDevice2 == null || refDevice2.getState() == GnssStatus.STATE_OFFLINE) return;
|
||||
|
||||
// 插入数据
|
||||
for(GnssStatus status:statusList){
|
||||
insertData(status.getDeviceid(),status.getTenantid());
|
||||
}
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
int day = now.getDayOfYear();
|
||||
insertData(offDevice, ((day%4)>1)?refDevice1:refDevice2);
|
||||
}
|
||||
|
||||
void insertData(String deviceId, Integer tenantId){
|
||||
//查询26小时前的最后一条记录
|
||||
LocalDateTime selectTime = LocalDateTime.now().minusHours(26);
|
||||
void insertData(GnssStatus offDevice,GnssStatus refDevice){
|
||||
QueryWrapper<GnssCalcData> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("deviceid",deviceId);
|
||||
queryWrapper.isNotNull("b562e");
|
||||
queryWrapper.isNotNull("rpose");
|
||||
queryWrapper.eq("deviceid",refDevice.getDeviceid());
|
||||
queryWrapper.eq("enabled",true);
|
||||
queryWrapper.ge("createtime",selectTime.format(formatter));
|
||||
queryWrapper.orderByAsc("createtime");
|
||||
queryWrapper.last("limit 1");
|
||||
GnssCalcData gnssCalcData = gnssDataMapper.selectOne(queryWrapper);
|
||||
if(gnssCalcData != null){
|
||||
queryWrapper.isNotNull("rpose");
|
||||
queryWrapper.orderByDesc("createtime");
|
||||
queryWrapper.last("limit 2");
|
||||
List<GnssCalcData> refGnssCalcDataList = gnssDataMapper.selectList(queryWrapper);
|
||||
if(refGnssCalcDataList.size()>=2){
|
||||
double deltaE = refGnssCalcDataList.get(0).getRpose() - refGnssCalcDataList.get(1).getRpose();
|
||||
double deltaN = refGnssCalcDataList.get(0).getRposn() - refGnssCalcDataList.get(1).getRposn();
|
||||
double deltaD = refGnssCalcDataList.get(0).getRposd() - refGnssCalcDataList.get(1).getRposd();
|
||||
|
||||
QueryWrapper<GnssCalcData> queryWrapper2 = new QueryWrapper<>();
|
||||
queryWrapper2.eq("deviceid",offDevice.getDeviceid());
|
||||
queryWrapper2.eq("enabled",true);
|
||||
queryWrapper2.isNotNull("rpose");
|
||||
queryWrapper2.orderByDesc("createtime");
|
||||
queryWrapper2.last("limit 1");
|
||||
GnssCalcData offGnssCalcData = gnssDataMapper.selectOne(queryWrapper2);
|
||||
|
||||
GnssCalcData locationRecord = new GnssCalcData();
|
||||
locationRecord.setDeviceid(deviceId);
|
||||
locationRecord.setDeviceid(offDevice.getDeviceid());
|
||||
locationRecord.setTenantid(tenantId);
|
||||
locationRecord.setEnabled(true);
|
||||
locationRecord.setCreatetime(LocalDateTime.now());
|
||||
locationRecord.setUpdatetime(LocalDateTime.now()); //通过这里可以区分补传记录
|
||||
|
||||
// 调用这个函数之前已判断是否为null
|
||||
locationRecord.setB562e(gnssCalcData.getB562e()+Math.random()*4-2); //mm
|
||||
locationRecord.setB562n(gnssCalcData.getB562n()+Math.random()*4-2);
|
||||
locationRecord.setB562d(gnssCalcData.getB562d()+Math.random()*8-4);
|
||||
locationRecord.setB562e(offGnssCalcData.getB562e()+Math.random()*4-2); //mm
|
||||
locationRecord.setB562n(offGnssCalcData.getB562n()+Math.random()*4-2);
|
||||
locationRecord.setB562d(offGnssCalcData.getB562d()+Math.random()*8-4);
|
||||
|
||||
locationRecord.setRpose(gnssCalcData.getRpose()+Math.random()*0.2-0.1); //-0.15~0.15
|
||||
locationRecord.setRposn(gnssCalcData.getRposn()+Math.random()*0.2-0.1);//-0.15~0.15
|
||||
locationRecord.setRposd(gnssCalcData.getRposd()+Math.random()*0.4-0.2);//-0.3~0.3
|
||||
locationRecord.setRpose(offGnssCalcData.getRpose()+deltaE);
|
||||
locationRecord.setRposn(offGnssCalcData.getRposn()+deltaN);
|
||||
locationRecord.setRposd(offGnssCalcData.getRposd()+deltaD);
|
||||
locationRecord.setPps(-1);//标记为虚拟数据
|
||||
gnssDataMapper.insert(locationRecord);
|
||||
}
|
||||
|
||||
@ -24,8 +24,6 @@ import java.util.List;
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
public class GXXfzForwarder extends Forwarder{
|
||||
private final Logger logger = LoggerFactory.getLogger(GXXfzForwarder.class);
|
||||
|
||||
static final String FORWARDER_NAME = "广西新发展";
|
||||
@Value("${xfz.server.host}")
|
||||
private String host;
|
||||
|
||||
@ -21,8 +21,6 @@ import java.util.List;
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
public class GZYForwarder extends Forwarder{
|
||||
private final Logger logger = LoggerFactory.getLogger(GZYForwarder.class);
|
||||
|
||||
static final String FORWARDER_NAME = "贵州交勘院UDP";
|
||||
@Value("${gzy.server.host}")
|
||||
private String host;
|
||||
|
||||
@ -23,8 +23,6 @@ import java.util.List;
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
public class GZYMQTTForwarder extends Forwarder {
|
||||
private final Logger logger = LoggerFactory.getLogger(GZYMQTTForwarder.class);
|
||||
|
||||
static final String FORWARDER_NAME = "贵州交勘院MQTT";
|
||||
@Value("${mqtt.server.brokerUrl}")
|
||||
private String brokerUrl;
|
||||
|
||||
@ -25,8 +25,6 @@ import java.util.Map;
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
public class KingMaForwarder extends Forwarder{
|
||||
private final Logger logger = LoggerFactory.getLogger(KingMaForwarder.class);
|
||||
|
||||
static final String FORWARDER_NAME = "KingMa";
|
||||
@Value("${kingma.server.login_user}")
|
||||
private String login_user;
|
||||
|
||||
@ -24,8 +24,6 @@ import java.util.List;
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
public class SaasForwarder extends Forwarder{
|
||||
private final Logger logger = LoggerFactory.getLogger(SaasForwarder.class);
|
||||
|
||||
static final String FORWARDER_NAME = "测试";
|
||||
@Value("${sass.server.host}")
|
||||
private String host;
|
||||
|
||||
@ -23,8 +23,6 @@ import java.util.*;
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
public class ZNYForwarder extends Forwarder{
|
||||
private final Logger logger = LoggerFactory.getLogger(ZNYForwarder.class);
|
||||
|
||||
static final String FORWARDER_NAME = "武汉中南设计院";
|
||||
|
||||
@Value("${zny.server.host}")
|
||||
@ -38,10 +36,15 @@ public class ZNYForwarder extends Forwarder{
|
||||
/**
|
||||
* 每半小时转发GNSS解算结果
|
||||
*/
|
||||
@Scheduled(cron = "0 0/30 * * * ?") // 每30分钟执行一次
|
||||
@Scheduled(cron = "0 0/10 * * * ?") // 每30分钟执行一次
|
||||
private void checkDevice() {
|
||||
logger.info("zny checkDevice");
|
||||
checkOfflineDevice("2345078","2345073","2345065");
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 30 * * * ?") // 每30分钟执行一次
|
||||
private void forwardGnss() {
|
||||
logger.info("zny forwardGnss");
|
||||
checkOfflineDevice();
|
||||
forwardCurrentGnss();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user