diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java index 0bdf6591..10986743 100644 --- a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java @@ -254,8 +254,19 @@ public class Forwarder { } void checkOfflineDevice(String offDeviceId, String refDeviceId1, String refDeviceId2){ - GnssStatus offDevice = gnssStatusMapper.getByDeviceId(offDeviceId); - if(offDevice == null) return; + LocalDateTime now = LocalDateTime.now(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("deviceid",offDeviceId); + queryWrapper.eq("enabled",true); + queryWrapper.isNotNull("rpose"); + queryWrapper.ne("pps",-1); + queryWrapper.ge("createtime",now.minusMinutes(30).format(formatter)); + queryWrapper.last("limit 1"); + + GnssCalcData offDevice = gnssDataMapper.selectOne(queryWrapper); + if(offDevice != null) { + return; + } GnssStatus refDevice1 = gnssStatusMapper.getByDeviceId(refDeviceId1); if(refDevice1 == null || refDevice1.getState() == GnssStatus.STATE_OFFLINE) return; @@ -263,15 +274,14 @@ public class Forwarder { if(refDevice2 == null || refDevice2.getState() == GnssStatus.STATE_OFFLINE) return; // 插入数据 - LocalDateTime now = LocalDateTime.now(); int day = now.getDayOfYear(); - insertData(offDevice, ((day%4)>1)?refDevice1:refDevice2); + insertData(offDeviceId, ((day%4)>1)?refDeviceId1:refDeviceId2); } - void insertData(GnssStatus offDevice,GnssStatus refDevice){ - logger.info("insertData based on {}",refDevice.getDeviceid()); + void insertData(String offDeviceId,String refDeviceId){ + logger.info("insertData based on {}",refDeviceId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("deviceid",refDevice.getDeviceid()); + queryWrapper.eq("deviceid",refDeviceId); queryWrapper.eq("enabled",true); queryWrapper.isNotNull("rpose"); queryWrapper.orderByDesc("createtime"); @@ -287,7 +297,7 @@ public class Forwarder { if(Math.abs(deltaD)>2) deltaD = Math.random()*0.4 - 0.2; QueryWrapper queryWrapper2 = new QueryWrapper<>(); - queryWrapper2.eq("deviceid",offDevice.getDeviceid()); + queryWrapper2.eq("deviceid",offDeviceId); queryWrapper2.eq("enabled",true); queryWrapper2.isNotNull("rpose"); queryWrapper2.orderByDesc("createtime"); @@ -295,7 +305,7 @@ public class Forwarder { GnssCalcData offGnssCalcData = gnssDataMapper.selectOne(queryWrapper2); GnssCalcData locationRecord = new GnssCalcData(); - locationRecord.setDeviceid(offDevice.getDeviceid()); + locationRecord.setDeviceid(offDeviceId); locationRecord.setTenantid(tenantId); locationRecord.setEnabled(true); locationRecord.setCreatetime(LocalDateTime.now());