From f513f5ef67409a0db26d85a95a5e3b127595aaca Mon Sep 17 00:00:00 2001
From: mk1990 <153958232@qq.com>
Date: 星期三, 25 五月 2022 14:09:43 +0800
Subject: [PATCH] 解决海康设备在实时监控模块中无法获取到通道信息
---
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 44 ++++++++++++--------------------------------
1 files changed, 12 insertions(+), 32 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 2bf1b27..e4a2a19 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
@@ -11,24 +11,18 @@
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.service.IMediaService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
import com.genersoft.iot.vmp.utils.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
-import javax.sip.DialogState;
-import javax.sip.TimeoutEvent;
-import java.text.ParseException;
-import java.util.Calendar;
-import java.util.Date;
+import java.time.Instant;
import java.util.List;
+import java.util.concurrent.TimeUnit;
/**
* 璁惧涓氬姟锛堢洰褰曡闃咃級
@@ -66,7 +60,7 @@
@Override
public void online(Device device) {
- logger.info("[璁惧涓婄嚎]锛宒eviceId锛�" + device.getDeviceId());
+ logger.info("[璁惧涓婄嚎] deviceId锛歿}->{}:{}", device.getDeviceId(), device.getIp(), device.getPort());
Device deviceInRedis = redisCatchStorage.getDevice(device.getDeviceId());
Device deviceInDb = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
@@ -76,25 +70,22 @@
redisCatchStorage.clearCatchByDeviceId(device.getDeviceId());
}
- if (device.getRegisterTime() == null) {
- device.setRegisterTime(now);
- }
- if(device.getUpdateTime() == null) {
- device.setUpdateTime(now);
- }
+ device.setUpdateTime(now);
device.setOnline(1);
// 绗竴娆′笂绾�
if (device.getCreateTime() == null) {
device.setCreateTime(now);
logger.info("[璁惧涓婄嚎,棣栨娉ㄥ唽]: {}锛屾煡璇㈣澶囦俊鎭互鍙婇�氶亾淇℃伅", device.getDeviceId());
+ deviceMapper.add(device);
+ redisCatchStorage.updateDevice(device);
commander.deviceInfoQuery(device);
sync(device);
- deviceMapper.add(device);
}else {
deviceMapper.update(device);
+ redisCatchStorage.updateDevice(device);
}
- redisCatchStorage.updateDevice(device);
+
// 涓婄嚎娣诲姞璁㈤槄
if (device.getSubscribeCycleForCatalog() > 0) {
// 鏌ヨ鍦ㄧ嚎璁惧閭d簺寮�鍚簡璁㈤槄锛屼负璁惧寮�鍚畾鏃剁殑鐩綍璁㈤槄
@@ -106,9 +97,7 @@
// 鍒锋柊杩囨湡浠诲姟
String registerExpireTaskKey = registerExpireTaskKeyPrefix + device.getDeviceId();
dynamicTask.stop(registerExpireTaskKey);
- dynamicTask.startDelay(registerExpireTaskKey, ()->{
- offline(device.getDeviceId());
- }, device.getExpires() * 1000);
+ dynamicTask.startDelay(registerExpireTaskKey, ()-> offline(device.getDeviceId()), device.getExpires() * 1000);
}
@Override
@@ -222,18 +211,9 @@
@Override
public boolean expire(Device device) {
- Date registerTimeDate;
- try {
- registerTimeDate = DateUtil.format.parse(device.getRegisterTime());
- } catch (ParseException e) {
- logger.error("璁惧鏃堕棿鏍煎紡鍖栧け璐ワ細{}->{} ", device.getDeviceId(), device.getRegisterTime() );
- return false;
- }
- int expires = device.getExpires();
- Calendar calendarForExpire = Calendar.getInstance();
- calendarForExpire.setTime(registerTimeDate);
- calendarForExpire.set(Calendar.SECOND, calendarForExpire.get(Calendar.SECOND) + expires);
- return calendarForExpire.before(DateUtil.getNow());
+ Instant registerTimeDate = Instant.from(DateUtil.formatter.parse(device.getRegisterTime()));
+ Instant expireInstant = registerTimeDate.plusMillis(TimeUnit.SECONDS.toMillis(device.getExpires()));
+ return expireInstant.isBefore(Instant.now());
}
@Override
--
Gitblit v1.8.0