Compare commits
2 Commits
9c830759b3
...
82c547d778
Author | SHA1 | Date | |
---|---|---|---|
![]() |
82c547d778 | ||
![]() |
00c453b552 |
|
@ -50,4 +50,7 @@ public class DeviceCacheInfo {
|
|||
// 最后在线时间
|
||||
private LocalDateTime lastOnlineTime;
|
||||
|
||||
// 定位类型
|
||||
private String locationType;
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -488,32 +488,34 @@ public class OrderServiceImpl implements OrderService {
|
|||
if (DeviceLocationType.DEVICE.getCode().equals(device.getLocationType())) {
|
||||
LogParamHolder.set(LogParamHolder.DEVICE_LON, device.getLongitude());
|
||||
LogParamHolder.set(LogParamHolder.DEVICE_LAT, device.getLatitude());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 异步使用手机定位更新设备定位
|
||||
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());
|
||||
|
@ -654,7 +656,10 @@ public class OrderServiceImpl implements OrderService {
|
|||
if (device == null) {
|
||||
return null;
|
||||
}
|
||||
// 设置日志参数
|
||||
this.setLogParam(device);
|
||||
// 处理设备位置
|
||||
this.handleDeviceLocationAsync(device, dto.getLon(), dto.getLat());
|
||||
|
||||
// 查询运营区
|
||||
AreaVO area = areaService.selectAreaById(order.getAreaId());
|
||||
|
|
Loading…
Reference in New Issue
Block a user