设备定位优化

This commit is contained in:
kerwincui
2022-05-30 17:01:23 +08:00
parent aab50e5a78
commit b6cd6975f8
3 changed files with 18 additions and 8 deletions

View File

@@ -317,16 +317,22 @@ public class ToolController extends BaseController {
if (model.getClientid().startsWith("server") || model.getClientid().startsWith("web") || model.getClientid().startsWith("phone")) {
return;
}
String[] clientInfo = model.getClientid().split("&");
String deviceNum = clientInfo[1];
Device device = deviceService.selectShortDeviceBySerialNumber(deviceNum);
// 设备端认证加密认证E和简单认证S配置的账号密码认证
String[] clientArray = model.getClientid().split("&");
String authType = clientArray[0];
String deviceNumber = clientArray[1];
Long productId = Long.valueOf(clientArray[2]);
Long userId = Long.valueOf(clientArray[3]);
Device device = deviceService.selectShortDeviceBySerialNumber(deviceNumber);
// 设备状态1-未激活2-禁用3-在线4-离线)
if (model.getAction().equals("client_disconnected")) {
device.setStatus(4);
deviceService.updateDeviceStatusAndLocation(device, "");
// 发布设备状态
emqxService.publishStatus(device.getProductId(), device.getSerialNumber(), 4, device.getIsShadow());
// 清空保留消息,上线后发布新的属性功能保留消息 TODO 发布的时候取消保留消息
// 清空保留消息,上线后发布新的属性功能保留消息
emqxService.publishProperty(device.getProductId(), device.getSerialNumber(), null);
emqxService.publishFunction(device.getProductId(), device.getSerialNumber(), null);
} else if (model.getAction().equals("client_connected")) {

View File

@@ -132,6 +132,11 @@ public class EmqxService {
Device device = JSON.parseObject(message, Device.class);
device.setProductId(productId);
device.setSerialNumber(deviceNum);
// 未采用设备定位则清空定位,定位方式(1=ip自动定位2=设备定位3=自定义)
if(device.getIsCustomLocation()!=2){
device.setLatitude(null);
device.setLongitude(null);
}
deviceService.reportDevice(device);
} catch (Exception e) {
logger.error("接收设备信息,解析数据时异常 message={}", e.getMessage());
@@ -194,7 +199,6 @@ public class EmqxService {
deviceLog.setIdentity(thingsModelValueRemarkItems.get(i).getId());
deviceLog.setLogType(3);
deviceLog.setIsMonitor(0);
// deviceLogService.insertDeviceLog(deviceLog);
logService.saveDeviceLog(deviceLog);
}
} catch (Exception e) {

View File

@@ -566,12 +566,13 @@ public class DeviceServiceImpl implements IDeviceService {
@Override
@Transactional(rollbackFor = Exception.class)
public int updateDeviceStatusAndLocation(Device device,String ipAddress) {
// 设置定位和状态
// 设置自动定位和状态
if(ipAddress!="") {
if(device.getActiveTime()==null){
device.setActiveTime(DateUtils.getNowDate());
}
if (device.getIsCustomLocation() == 0) {
// 定位方式(1=ip自动定位2=设备定位3=自定义)
if (device.getIsCustomLocation() == 1) {
device.setNetworkIp(ipAddress);
setLocation(ipAddress, device);
}
@@ -596,7 +597,6 @@ public class DeviceServiceImpl implements IDeviceService {
deviceLog.setLogType(6);
}
logService.saveDeviceLog(deviceLog);
// deviceLogService.insertDeviceLog(deviceLog);
return result;
}