diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/vo/DeviceCacheInfo.java b/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/vo/DeviceCacheInfo.java index b196ef8..284ea76 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/vo/DeviceCacheInfo.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/vo/DeviceCacheInfo.java @@ -50,4 +50,7 @@ public class DeviceCacheInfo { // 最后在线时间 private LocalDateTime lastOnlineTime; + // 定位类型 + private String locationType; + } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/device/service/impl/DeviceIotServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/device/service/impl/DeviceIotServiceImpl.java index 0f562a6..9cef352 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/device/service/impl/DeviceIotServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/device/service/impl/DeviceIotServiceImpl.java @@ -361,6 +361,9 @@ public class DeviceIotServiceImpl implements DeviceIotService { if (device.getSoftwareVersion() != null) { info.setSoftwareVersion(device.getSoftwareVersion()); } + if (device.getLocationType() != null) { + info.setLocationType(device.getLocationType()); + } String key = CacheConstants.DEVICE_CACHE_INFO + device.getMac(); redisCache.setCacheObject(key, info); diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/device/utils/DeviceUtil.java b/ruoyi-service/src/main/java/com/ruoyi/bst/device/utils/DeviceUtil.java index fa57460..57b9db9 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/device/utils/DeviceUtil.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/device/utils/DeviceUtil.java @@ -134,6 +134,9 @@ public class DeviceUtil { if (info.getSoftwareVersion() != null) { device.setSoftwareVersion(info.getSoftwareVersion()); } + if (info.getLocationType() != null) { + device.setLocationType(info.getLocationType()); + } // 在线状态 if (info.getOnlineStatus() != null) { diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java index 2d9f46f..7df3624 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java @@ -494,26 +494,28 @@ public class OrderServiceImpl implements OrderService { // 异步使用手机定位更新设备定位 private void handleDeviceLocationAsync(DeviceVO device, BigDecimal lon, BigDecimal lat) { - if (device != null && device.getId() != null && DeviceUtil.isLowSatelliteSignal(device) && DeviceUtil.validLocation(lon, lat)) { + if (device != null && device.getId() != null && StringUtils.isNotBlank(device.getMac()) && DeviceUtil.validLocation(lon, lat)) { scheduledExecutorService.execute(() -> { device.setLongitude(lon); device.setLatitude(lat); device.setLocationType(DeviceLocationType.PHONE.getCode()); device.setLastLocationTime(LocalDateTime.now()); - // 更新设备定位 - Device data = new Device(); - data.setId(device.getId()); - data.setLongitude(device.getLongitude()); - data.setLatitude(device.getLatitude()); - data.setLocationType(device.getLocationType()); - data.setLastLocationTime(LocalDateTime.now()); - int rows = deviceService.updateDevice(data); - if (rows != 1) { - log.error("通过手机定位修改设备定位失败deviceId={}", device.getId()); + // 若卫星信号弱,则更新设备定位 + if (DeviceUtil.isLowSatelliteSignal(device)) { + Device data = new Device(); + data.setMac(device.getMac()); + data.setLongitude(device.getLongitude()); + data.setLatitude(device.getLatitude()); + data.setLocationType(device.getLocationType()); + data.setLastLocationTime(LocalDateTime.now()); + int rows = deviceIotService.updateIot(data); + if (rows != 1) { + log.error("通过手机定位修改设备定位失败deviceMac={}", device.getMac()); + } } - // 转为定位日志 + // 直接保存定位日志 LocationLog locationLog = locationLogConverter.toPo(device); if (locationLog == null) { log.error("通过手机定位转换定位日志失败: {}", device.getMac());