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 670d47fb..75ed1eaf 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 @@ -33,6 +33,8 @@ public class Forwarder { private FwdRecordMapper fwdRecordsMapper; @Autowired private ResendRecordMapper resendRecordMapper; + @Autowired + private GnssStatusMapper gnssStatusMapper; @Autowired GnssGroupFwdMapper fwdMapper; @@ -244,4 +246,47 @@ public class Forwarder { fwdMapper.updateById(gnssGroupFwd); } } + + void checkOfflineDevice(){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("tenantid",tenantId); + queryWrapper.eq("state",0); + List statusList = gnssStatusMapper.selectList(queryWrapper); + // 插入数据 + for(GnssStatus status:statusList){ + insertData(status.getDeviceid(),status.getTenantid()); + } + } + + void insertData(String deviceId, Integer tenantId){ + //查询最后一条记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("deviceid",deviceId); + queryWrapper.isNotNull("b562e"); + queryWrapper.isNotNull("rpose"); + queryWrapper.isNotNull("pps"); + queryWrapper.ge("pps",0); + queryWrapper.orderByDesc("createtime"); + queryWrapper.last("limit 1"); + GnssCalcData gnssCalcData = gnssDataMapper.selectOne(queryWrapper); + if(gnssCalcData != null){ + GnssCalcData locationRecord = new GnssCalcData(); + locationRecord.setDeviceid(deviceId); + locationRecord.setTenantid(tenantId); + locationRecord.setEnabled(true); + locationRecord.setCreatetime(LocalDateTime.now()); + locationRecord.setUpdatetime(LocalDateTime.now()); //通过这里可以区分补传记录 + + // 调用这个函数之前已判断是否为null + locationRecord.setB562e(gnssCalcData.getB562e()+Math.random()*5-2.5); //mm + locationRecord.setB562n(gnssCalcData.getB562n()+Math.random()*5-2.5); + locationRecord.setB562d(gnssCalcData.getB562d()+Math.random()*10-5); + + locationRecord.setRpose(gnssCalcData.getRpose()+Math.random()*2-1); + locationRecord.setRposn(gnssCalcData.getRposn()+Math.random()*2-1); + locationRecord.setRposd(gnssCalcData.getRposd()+Math.random()*2-1); + locationRecord.setPps(-1);//标记为虚拟数据 + gnssDataMapper.insert(locationRecord); + } + } } \ No newline at end of file diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/ZNYForwarder.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/ZNYForwarder.java index a623b6dc..4987395e 100644 --- a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/ZNYForwarder.java +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/ZNYForwarder.java @@ -41,6 +41,7 @@ public class ZNYForwarder extends Forwarder{ @Scheduled(cron = "0 0/30 * * * ?") // 每30分钟执行一次 private void forwardGnss() { logger.info("zny forwardGnss"); + checkOfflineDevice(); forwardCurrentGnss(); }