diff --git a/src/main/java/com/ycwl/basic/repository/DeviceRepository.java b/src/main/java/com/ycwl/basic/repository/DeviceRepository.java index e18890bd..6a3bdbaf 100644 --- a/src/main/java/com/ycwl/basic/repository/DeviceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/DeviceRepository.java @@ -75,8 +75,13 @@ public class DeviceRepository { if (statusDto != null) { // Boolean转Integer: true→1, false→0 entity.setOnline(statusDto.getIsOnline() != null && statusDto.getIsOnline() ? 1 : 0); - entity.setKeepaliveAt(statusDto.getLastActiveTime()); - entity.setIpAddr(statusDto.getClientIP()); + // 添加空值检查,避免NullPointerException + if (statusDto.getLastActiveTime() != null) { + entity.setKeepaliveAt(statusDto.getLastActiveTime()); + } + if (statusDto.getClientIP() != null) { + entity.setIpAddr(statusDto.getClientIP()); + } } else { // 默认离线状态 entity.setOnline(0); diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java index ef8b4906..05b1cee2 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java @@ -294,7 +294,9 @@ public class AppScenicServiceImpl implements AppScenicService { if (onlineStatus != null) { deviceRespVO.setUpdateAt(onlineStatus.getKeepaliveAt()); deviceRespVO.setKeepaliveAt(onlineStatus.getKeepaliveAt()); - if (new Date().getTime() - onlineStatus.getKeepaliveAt().getTime() > 300000) { + if (onlineStatus.getKeepaliveAt() == null) { + deviceRespVO.setOnline(0); + } else if (new Date().getTime() - onlineStatus.getKeepaliveAt().getTime() > 300000) { deviceRespVO.setOnline(0); } else { deviceRespVO.setOnline(onlineStatus.getOnline());