From 3d6db7478d79b824f93708f936c598cc622221f2 Mon Sep 17 00:00:00 2001
From: mk1990 <153958232@qq.com>
Date: 星期一, 20 六月 2022 15:10:31 +0800
Subject: [PATCH] fix设备状态查询接口
---
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 66 ++++++++++++++++++++++++++++++--
1 files changed, 61 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
index 77c7c61..ec30cd4 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
@@ -2,16 +2,21 @@
import com.genersoft.iot.vmp.conf.DynamicTask;
import com.genersoft.iot.vmp.gb28181.bean.Device;
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
+import com.genersoft.iot.vmp.gb28181.task.ISubscribeTask;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd.CatalogResponseMessageHandler;
+import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.gb28181.task.impl.CatalogSubscribeTask;
import com.genersoft.iot.vmp.gb28181.task.impl.MobilePositionSubscribeTask;
import com.genersoft.iot.vmp.gb28181.bean.SyncStatus;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
import com.genersoft.iot.vmp.utils.DateUtil;
import org.slf4j.Logger;
@@ -48,6 +53,12 @@
@Autowired
private DeviceMapper deviceMapper;
+
+ @Autowired
+ private DeviceChannelMapper deviceChannelMapper;
+
+ @Autowired
+ private IVideoManagerStorage storage;
@Autowired
private ISIPCommander commander;
@@ -95,7 +106,6 @@
}
// 鍒锋柊杩囨湡浠诲姟
String registerExpireTaskKey = registerExpireTaskKeyPrefix + device.getDeviceId();
- dynamicTask.stop(registerExpireTaskKey);
dynamicTask.startDelay(registerExpireTaskKey, ()-> offline(device.getDeviceId()), device.getExpires() * 1000);
}
@@ -144,8 +154,16 @@
if (device == null || device.getSubscribeCycleForCatalog() < 0) {
return false;
}
- logger.info("绉婚櫎鐩綍璁㈤槄: {}", device.getDeviceId());
- dynamicTask.stop(device.getDeviceId() + "catalog");
+ logger.info("[绉婚櫎鐩綍璁㈤槄]: {}", device.getDeviceId());
+ String taskKey = device.getDeviceId() + "catalog";
+ if (device.getOnline() == 1) {
+ Runnable runnable = dynamicTask.get(taskKey);
+ if (runnable instanceof ISubscribeTask) {
+ ISubscribeTask subscribeTask = (ISubscribeTask) runnable;
+ subscribeTask.stop();
+ }
+ }
+ dynamicTask.stop(taskKey);
return true;
}
@@ -169,8 +187,16 @@
if (device == null || device.getSubscribeCycleForCatalog() < 0) {
return false;
}
- logger.info("绉婚櫎绉诲姩浣嶇疆璁㈤槄: {}", device.getDeviceId());
- dynamicTask.stop(device.getDeviceId() + "mobile_position");
+ logger.info("[绉婚櫎绉诲姩浣嶇疆璁㈤槄]: {}", device.getDeviceId());
+ String taskKey = device.getDeviceId() + "mobile_position";
+ if (device.getOnline() == 1) {
+ Runnable runnable = dynamicTask.get(taskKey);
+ if (runnable instanceof ISubscribeTask) {
+ ISubscribeTask subscribeTask = (ISubscribeTask) runnable;
+ subscribeTask.stop();
+ }
+ }
+ dynamicTask.stop(taskKey);
return true;
}
@@ -276,6 +302,10 @@
removeMobilePositionSubscribe(deviceInStore);
}
}
+ // 鍧愭爣绯诲彉鍖栵紝闇�瑕侀噸鏂拌绠桮CJ02鍧愭爣鍜學GS84鍧愭爣
+ if (!deviceInStore.getGeoCoordSys().equals(device.getGeoCoordSys())) {
+ updateDeviceChannelGeoCoordSys(device);
+ }
String now = DateUtil.getNow();
device.setUpdateTime(now);
@@ -283,6 +313,32 @@
device.setUpdateTime(DateUtil.getNow());
if (deviceMapper.update(device) > 0) {
redisCatchStorage.updateDevice(device);
+
}
}
+
+ /**
+ * 鏇存柊閫氶亾鍧愭爣绯�
+ */
+ private void updateDeviceChannelGeoCoordSys(Device device) {
+ List<DeviceChannel> deviceChannels = deviceChannelMapper.getAllChannelWithCoordinate(device.getDeviceId());
+ if (deviceChannels.size() > 0) {
+ for (DeviceChannel deviceChannel : deviceChannels) {
+ if ("WGS84".equals(device.getGeoCoordSys())) {
+ deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude());
+ Double[] position = Coordtransform.WGS84ToGCJ02(deviceChannel.getLongitude(), deviceChannel.getLatitude());
+ deviceChannel.setLongitudeGcj02(position[0]);
+ deviceChannel.setLatitudeGcj02(position[1]);
+ }else if ("GCJ02".equals(device.getGeoCoordSys())) {
+ deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude());
+ Double[] position = Coordtransform.GCJ02ToWGS84(deviceChannel.getLongitude(), deviceChannel.getLatitude());
+ deviceChannel.setLongitudeWgs84(position[0]);
+ deviceChannel.setLatitudeWgs84(position[1]);
+ }
+ }
+ }
+ storage.updateChannels(device.getDeviceId(), deviceChannels);
+ }
}
--
Gitblit v1.8.0