From 1002150b2a107aeaa6927f99803bd539be61c51f Mon Sep 17 00:00:00 2001
From: jiang <893224616@qq.com>
Date: 星期一, 18 七月 2022 17:15:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java | 41
src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java | 2
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java | 2
src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java | 46 +
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java | 42
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java | 6
web_src/src/components/dialog/chooseChannelForCatalog.vue | 5
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java | 76 -
sql/mysql.sql | 21
src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java | 5
src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/MobilePositionSubscribeHandlerTask.java | 10
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java | 44
src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java | 18
web_src/src/components/dialog/platformEdit.vue | 65 +
src/main/java/com/genersoft/iot/vmp/gb28181/bean/PlatformCatalog.java | 35
src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java | 9
src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java | 5
src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEvent.java | 41
src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java | 4
web_src/src/components/dialog/chooseChannelForStream.vue | 1
web_src/src/components/dialog/chooseChannel.vue | 6
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java | 45 -
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java | 15
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformChannelServiceImpl.java | 106 ++
src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java | 35
sql/update.sql | 10
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java | 88 -
src/main/java/com/genersoft/iot/vmp/service/impl/RedisPushStreamStatusMsgListener.java | 92 ++
src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java | 35
src/main/java/com/genersoft/iot/vmp/gb28181/bean/TreeType.java | 10
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java | 32
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java | 42
src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java | 35
web_src/src/components/dialog/catalogEdit.vue | 38
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java | 165 ++++
web_src/src/components/PushVideoList.vue | 15
src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java | 8
src/main/java/com/genersoft/iot/vmp/service/IPlatformChannelService.java | 22
src/main/java/com/genersoft/iot/vmp/service/impl/RedisStreamMsgListener.java | 7
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java | 265 +-----
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 8
src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformCatalogMapper.java | 13
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceAlarmServiceImpl.java | 1
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java | 1
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java | 4
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java | 76 -
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 33
src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java | 227 +++--
src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java | 13
web_src/src/components/ParentPlatformList.vue | 2
src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java | 5
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java | 6
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 14
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java | 72 +
src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java | 34
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java | 101 ++
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java | 10
57 files changed, 1,353 insertions(+), 816 deletions(-)
diff --git a/sql/mysql.sql b/sql/mysql.sql
index 9d2e117..71d4ac5 100644
--- a/sql/mysql.sql
+++ b/sql/mysql.sql
@@ -50,7 +50,7 @@
`treeType` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `device_deviceId_uindex` (`deviceId`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -142,7 +142,7 @@
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `device_channel_id_uindex` (`id`) USING BTREE,
UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=19331 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=19336 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -213,7 +213,7 @@
PRIMARY KEY (`gbStreamId`) USING BTREE,
UNIQUE KEY `app` (`app`,`stream`) USING BTREE,
UNIQUE KEY `gbId` (`gbId`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=301681 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=301740 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -243,7 +243,7 @@
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=34997 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=37760 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -334,10 +334,11 @@
`catalogGroup` int DEFAULT '1',
`createTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
`updateTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `treeType` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `parent_platform_id_uindex` (`id`) USING BTREE,
UNIQUE KEY `parent_platform_pk` (`serverGBId`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -361,6 +362,8 @@
`platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`parentId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `civilCode` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `businessGroupId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -387,7 +390,7 @@
`catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`deviceChannelId` int NOT NULL,
PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=4889 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=4912 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -413,7 +416,7 @@
`id` int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=302077 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=302134 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -489,7 +492,7 @@
`status` int DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `stream_push_pk` (`app`,`stream`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=305315 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=305390 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -567,4 +570,4 @@
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2022-07-11 17:32:51
+-- Dump completed on 2022-07-17 23:15:09
diff --git a/sql/update.sql b/sql/update.sql
index 89d0e8a..c5fb671 100644
--- a/sql/update.sql
+++ b/sql/update.sql
@@ -65,4 +65,14 @@
add pushKey varchar(50) default null;
+alter table parent_platform
+ add treeType varchar(50) not null;
+update parent_platform set parent_platform.treeType='BusinessGroup';
+
+alter table platform_catalog
+ add civilCode varchar(50) default null;
+alter table platform_catalog
+ add businessGroupId varchar(50) default null;
+
+
diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
index 702e357..40a7352 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -104,6 +104,10 @@
// 璁惧鐘舵�佽闃呯殑閫氱煡
public static final String VM_MSG_SUBSCRIBE_DEVICE_STATUS = "device";
+
+
+
+
//************************** 绗笁鏂� ****************************************
public static final String WVP_STREAM_GB_ID_PREFIX = "memberNo_";
public static final String WVP_STREAM_GPS_MSG_PREFIX = "WVP_STREAM_GPS_MSG_";
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java
index ec1f9ba..6a862ae 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java
@@ -1,10 +1,7 @@
package com.genersoft.iot.vmp.conf;
import com.genersoft.iot.vmp.common.VideoManagerConstants;
-import com.genersoft.iot.vmp.service.impl.RedisAlarmMsgListener;
-import com.genersoft.iot.vmp.service.impl.RedisGpsMsgListener;
-import com.genersoft.iot.vmp.service.impl.RedisGbPlayMsgListener;
-import com.genersoft.iot.vmp.service.impl.RedisStreamMsgListener;
+import com.genersoft.iot.vmp.service.impl.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -60,6 +57,9 @@
@Autowired
private RedisGbPlayMsgListener redisGbPlayMsgListener;
+ @Autowired
+ private RedisPushStreamStatusMsgListener redisPushStreamStatusMsgListener;
+
@Bean
public JedisPool jedisPool() {
if (StringUtils.isBlank(password)) {
@@ -108,6 +108,7 @@
container.addMessageListener(redisAlarmMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM_RECEIVE));
container.addMessageListener(redisStreamMsgListener, new PatternTopic(VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + "PUSH"));
container.addMessageListener(redisGbPlayMsgListener, new PatternTopic(RedisGbPlayMsgListener.WVP_PUSH_STREAM_KEY));
+ container.addMessageListener(redisPushStreamStatusMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_STATUS_CHANGE));
return container;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java
index 4377282..6dcf0df 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java
@@ -154,6 +154,11 @@
*/
private String createTime;
+ /**
+ * 鏍戠被鍨� 鍥芥爣瑙勫畾浜嗕袱绉嶆爲鐨勫睍鐜版柟寮� 琛屾斂鍖哄垝 CivilCode 鍜屼笟鍔″垎缁�:BusinessGroup
+ */
+ private String treeType;
+
public Integer getId() {
return id;
}
@@ -394,4 +399,12 @@
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
+
+ public String getTreeType() {
+ return treeType;
+ }
+
+ public void setTreeType(String treeType) {
+ this.treeType = treeType;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/PlatformCatalog.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/PlatformCatalog.java
index 065971d..58a9cbb 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/PlatformCatalog.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/PlatformCatalog.java
@@ -1,12 +1,28 @@
package com.genersoft.iot.vmp.gb28181.bean;
+/**
+ * 鍥芥爣绾ц仈-鐩綍
+ * @author lin
+ */
public class PlatformCatalog {
private String id;
private String name;
private String platformId;
private String parentId;
- private int childrenCount; // 瀛愯妭鐐规暟
- private int type; // 0 鐩綍, 1 鍥芥爣閫氶亾, 2 鐩存挱娴�
+
+ private String civilCode;
+
+ private String businessGroupId;
+
+ /**
+ * 瀛愯妭鐐规暟
+ */
+ private int childrenCount;
+
+ /**
+ * 0 鐩綍, 1 鍥芥爣閫氶亾, 2 鐩存挱娴�
+ */
+ private int type;
public String getId() {
return id;
@@ -68,4 +84,19 @@
this.type = 2;
}
+ public String getCivilCode() {
+ return civilCode;
+ }
+
+ public void setCivilCode(String civilCode) {
+ this.civilCode = civilCode;
+ }
+
+ public String getBusinessGroupId() {
+ return businessGroupId;
+ }
+
+ public void setBusinessGroupId(String businessGroupId) {
+ this.businessGroupId = businessGroupId;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/TreeType.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/TreeType.java
new file mode 100644
index 0000000..bb684e1
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/TreeType.java
@@ -0,0 +1,10 @@
+package com.genersoft.iot.vmp.gb28181.bean;
+
+/**
+ * 鐩綍缁撴瀯绫诲瀷
+ * @author lin
+ */
+public class TreeType {
+ public static final String BUSINESS_GROUP = "BusinessGroup";
+ public static final String CIVIL_CODE = "CivilCode";
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEvent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEvent.java
index c035b80..5c064f7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEvent.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEvent.java
@@ -11,13 +11,40 @@
super(source);
}
- public static final String ON = "ON"; // 涓婄嚎
- public static final String OFF = "OFF"; // 绂荤嚎
- public static final String VLOST = "VLOST"; // 瑙嗛涓㈠け
- public static final String DEFECT = "DEFECT"; // 鏁呴殰
- public static final String ADD = "ADD"; // 澧炲姞
- public static final String DEL = "DEL"; // 鍒犻櫎
- public static final String UPDATE = "UPDATE"; // 鏇存柊
+ /**
+ * 涓婄嚎
+ */
+ public static final String ON = "ON";
+
+ /**
+ * 绂荤嚎
+ */
+ public static final String OFF = "OFF";
+
+ /**
+ * 瑙嗛涓㈠け
+ */
+ public static final String VLOST = "VLOST";
+
+ /**
+ * 鏁呴殰
+ */
+ public static final String DEFECT = "DEFECT";
+
+ /**
+ * 澧炲姞
+ */
+ public static final String ADD = "ADD";
+
+ /**
+ * 鍒犻櫎
+ */
+ public static final String DEL = "DEL";
+
+ /**
+ * 鏇存柊
+ */
+ public static final String UPDATE = "UPDATE";
private List<DeviceChannel> deviceChannels;
private List<GbStream> gbStreams;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
index e38733d..224fa1e 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
@@ -58,17 +58,16 @@
ParentPlatform parentPlatform = null;
Map<String, List<ParentPlatform>> parentPlatformMap = new HashMap<>();
- if (event.getPlatformId() != null) {
+ if (!StringUtils.isEmpty(event.getPlatformId())) {
+ subscribe = subscribeHolder.getCatalogSubscribe(event.getPlatformId());
+ if (subscribe == null) {
+ return;
+ }
parentPlatform = storager.queryParentPlatByServerGBId(event.getPlatformId());
if (parentPlatform != null && !parentPlatform.isStatus()) {
return;
}
- subscribe = subscribeHolder.getCatalogSubscribe(event.getPlatformId());
- if (subscribe == null) {
- logger.info("鍙戦�佽闃呮秷鎭椂鍙戠幇璁㈤槄淇℃伅宸茬粡涓嶅瓨鍦�: {}", event.getPlatformId());
- return;
- }
}else {
// 鑾峰彇鎵�鐢ㄨ闃�
List<String> platforms = subscribeHolder.getAllCatalogSubscribePlatform();
@@ -144,11 +143,8 @@
}
if (event.getGbStreams() != null && event.getGbStreams().size() > 0){
for (GbStream gbStream : event.getGbStreams()) {
- DeviceChannel deviceChannelByStream = gbStreamService.getDeviceChannelListByStream(gbStream, gbStream.getCatalogId(), parentPlatform);
- if (deviceChannelByStream.getParentId().length() <= 10) { // 鐖惰妭鐐规槸琛屾斂鍖哄垝,鍒欒缃瓹ivilCode浣跨敤姝よ鏀垮尯鍒�
- deviceChannelByStream.setCivilCode(deviceChannelByStream.getParentId());
- }
- deviceChannelList.add(deviceChannelByStream);
+ deviceChannelList.add(
+ gbStreamService.getDeviceChannelListByStream(gbStream, gbStream.getCatalogId(), parentPlatform));
}
}
if (deviceChannelList.size() > 0) {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/MobilePositionSubscribeHandlerTask.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/MobilePositionSubscribeHandlerTask.java
index 66b57fe..0bad048 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/MobilePositionSubscribeHandlerTask.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/MobilePositionSubscribeHandlerTask.java
@@ -57,18 +57,14 @@
SubscribeInfo subscribe = subscribeHolder.getMobilePositionSubscribe(platform.getServerGBId());
if (subscribe != null) {
-// if (!parentPlatform.isStatus()) {
-// logger.info("鍙戦�佽闃呮椂鍙戠幇骞冲彴宸茬粡绂荤嚎锛歿}", platformId);
-// return;
-// }
// TODO 鏆傛椂鍙鐞嗚棰戞祦鐨勫洖澶�,鍚庣画澧炲姞瀵瑰浗鏍囪澶囩殑鏀寔
- List<GbStream> gbStreams = storager.queryGbStreamListInPlatform(platform.getServerGBId());
+ List<DeviceChannel> gbStreams = storager.queryGbStreamListInPlatform(platform.getServerGBId());
if (gbStreams.size() == 0) {
logger.info("鍙戦�佽闃呮椂鍙戠幇骞冲彴宸茬粡娌℃湁鍏宠仈鐨勭洿鎾祦锛歿}", platform.getServerGBId());
return;
}
- for (GbStream gbStream : gbStreams) {
- String gbId = gbStream.getGbId();
+ for (DeviceChannel deviceChannel : gbStreams) {
+ String gbId = deviceChannel.getChannelId();
GPSMsgInfo gpsMsgInfo = redisCatchStorage.getGpsMsgInfo(gbId);
if (gpsMsgInfo != null) { // 鏃犳渶鏂颁綅缃笉鍙戦��
if (logger.isDebugEnabled()) {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
index 73f9c4f..10f428b 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -257,37 +257,37 @@
catalogXml.append("<DeviceList Num=\"" + channels.size() +"\">\r\n");
if (channels.size() > 0) {
for (DeviceChannel channel : channels) {
+ if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
+ channel.setParentId(parentPlatform.getDeviceGBId());
+ }
catalogXml.append("<Item>\r\n");
+ // 琛屾斂鍖哄垝鍒嗙粍鍙渶瑕佽繖涓ら」灏卞彲浠�
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
catalogXml.append("<Name>" + channel.getName() + "</Name>\r\n");
- catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
if (channel.getParentId() != null) {
+ // 涓氬姟鍒嗙粍鍔犱笂杩欎竴椤瑰嵆鍙紝鎻愰珮鍏煎鎬э紝
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
}
- if (channel.getChannelId().length() == 20) {
- if (Integer.parseInt(channel.getChannelId().substring(10, 13)) == 216) { // 铏氭嫙缁勭粐澧炲姞BusinessGroupID瀛楁
- catalogXml.append("<BusinessGroupID>" + channel.getParentId() + "</BusinessGroupID>\r\n");
- }
+ if (channel.getChannelId().length() == 20 && Integer.parseInt(channel.getChannelId().substring(10, 13)) == 216) {
+ // 铏氭嫙缁勭粐澧炲姞BusinessGroupID瀛楁
+ catalogXml.append("<BusinessGroupID>" + channel.getParentId() + "</BusinessGroupID>\r\n");
+ }
+ catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
+ if (channel.getParental() == 0) {
+ // 閫氶亾椤�
catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
+ catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
- catalogXml.append("<Status>" + (channel.getStatus() == 0?"OFF":"ON") + "</Status>\r\n");
- if (channel.getChannelType() != 2) { // 涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝 涓嶈缃互涓嬪瓧娈�
- catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
+ catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
+
+ if (channel.getChannelType() != 2) { // 涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝 涓嶈缃互涓嬪睘鎬�
catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
- catalogXml.append("<Owner>" + channel.getOwner() + "</Owner>\r\n");
+ catalogXml.append("<Owner> " + channel.getOwner()+ "</Owner>\r\n");
catalogXml.append("<CivilCode>" + channel.getCivilCode() + "</CivilCode>\r\n");
catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
- catalogXml.append("<Longitude>" + channel.getLongitudeWgs84() + "</Longitude>\r\n");
- catalogXml.append("<Latitude>" + channel.getLatitudeWgs84() + "</Latitude>\r\n");
- catalogXml.append("<IPAddress>" + channel.getIpAddress() + "</IPAddress>\r\n");
- catalogXml.append("<Port>" + channel.getPort() + "</Port>\r\n");
- catalogXml.append("<Info>\r\n");
- catalogXml.append("<PTZType>" + channel.getPTZType() + "</PTZType>\r\n");
- catalogXml.append("</Info>\r\n");
}
+
}
-
-
catalogXml.append("</Item>\r\n");
}
}
@@ -592,27 +592,35 @@
channel.setParentId(parentPlatform.getDeviceGBId());
}
catalogXml.append("<Item>\r\n");
+ // 琛屾斂鍖哄垝鍒嗙粍鍙渶瑕佽繖涓ら」灏卞彲浠�
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
catalogXml.append("<Name>" + channel.getName() + "</Name>\r\n");
- catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
- catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
if (channel.getParentId() != null) {
+ // 涓氬姟鍒嗙粍鍔犱笂杩欎竴椤瑰嵆鍙紝鎻愰珮鍏煎鎬э紝
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
}
- catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
- catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
- catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
- if (channel.getChannelId().length() == 20 && Integer.parseInt(channel.getChannelId().substring(10, 13)) == 216) { // 铏氭嫙缁勭粐澧炲姞BusinessGroupID瀛楁
+ if (channel.getChannelId().length() == 20 && Integer.parseInt(channel.getChannelId().substring(10, 13)) == 216) {
+ // 铏氭嫙缁勭粐澧炲姞BusinessGroupID瀛楁
catalogXml.append("<BusinessGroupID>" + channel.getParentId() + "</BusinessGroupID>\r\n");
}
- if (channel.getChannelType() == 2) { // 涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝 涓嶈缃互涓嬪睘鎬�
- catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
- catalogXml.append("<Owner>0</Owner>\r\n");
- catalogXml.append("<CivilCode>CivilCode</CivilCode>\r\n");
- catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
- }
- if (!"presence".equals(subscribeInfo.getEventType())) {
- catalogXml.append("<Event>" + type + "</Event>\r\n");
+ catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
+ if (channel.getParental() == 0) {
+ // 閫氶亾椤�
+ catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
+ catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
+ catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
+ catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
+
+ if (channel.getChannelType() != 2) { // 涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝 涓嶈缃互涓嬪睘鎬�
+ catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
+ catalogXml.append("<Owner> " + channel.getOwner()+ "</Owner>\r\n");
+ catalogXml.append("<CivilCode>" + channel.getCivilCode() + "</CivilCode>\r\n");
+ catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
+ }
+ if (!"presence".equals(subscribeInfo.getEventType())) {
+ catalogXml.append("<Event>" + type + "</Event>\r\n");
+ }
+
}
catalogXml.append("</Item>\r\n");
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
index 376d74b..c8a221b 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -15,6 +15,7 @@
import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
+import com.genersoft.iot.vmp.service.IDeviceChannelService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
@@ -70,6 +71,9 @@
@Autowired
private SIPProcessorObserver sipProcessorObserver;
+
+ @Autowired
+ private IDeviceChannelService deviceChannelService;
private boolean taskQueueHandlerRun = false;
@@ -173,28 +177,7 @@
logger.info("[鏀跺埌 绉诲姩浣嶇疆璁㈤槄]锛歿}/{}->{}.{}", mobilePosition.getDeviceId(), mobilePosition.getChannelId(),
mobilePosition.getLongitude(), mobilePosition.getLatitude());
mobilePosition.setReportSource("Mobile Position");
- // 榛樿鏉ユ簮鍧愭爣绯讳负WGS-84澶勭悊
- if ("WGS84".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeWgs84(mobilePosition.getLongitude());
- mobilePosition.setLatitudeWgs84(mobilePosition.getLatitude());
- Double[] position = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeGcj02(position[0]);
- mobilePosition.setLatitudeGcj02(position[1]);
- }else if ("GCJ02".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeGcj02(mobilePosition.getLongitude());
- mobilePosition.setLatitudeGcj02(mobilePosition.getLatitude());
- Double[] position = Coordtransform.GCJ02ToWGS84(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeWgs84(position[0]);
- mobilePosition.setLatitudeWgs84(position[1]);
- }else {
- mobilePosition.setLongitudeGcj02(0.00);
- mobilePosition.setLatitudeGcj02(0.00);
- mobilePosition.setLongitudeWgs84(0.00);
- mobilePosition.setLatitudeWgs84(0.00);
- }
- if (userSetting.getSavePositionHistory()) {
- storager.insertMobilePosition(mobilePosition);
- }
+
// 鏇存柊device channel 鐨勭粡绾害
DeviceChannel deviceChannel = new DeviceChannel();
@@ -202,11 +185,18 @@
deviceChannel.setChannelId(channelId);
deviceChannel.setLongitude(mobilePosition.getLongitude());
deviceChannel.setLatitude(mobilePosition.getLatitude());
- deviceChannel.setLongitudeWgs84(mobilePosition.getLongitudeWgs84());
- deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
- deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
- deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
deviceChannel.setGpsTime(mobilePosition.getTime());
+ deviceChannel = deviceChannelService.updateGps(deviceChannel, device);
+
+ mobilePosition.setLongitudeWgs84(deviceChannel.getLongitudeWgs84());
+ mobilePosition.setLatitudeWgs84(deviceChannel.getLatitudeWgs84());
+ mobilePosition.setLongitudeGcj02(deviceChannel.getLongitudeGcj02());
+ mobilePosition.setLatitudeGcj02(deviceChannel.getLatitudeGcj02());
+
+ if (userSetting.getSavePositionHistory()) {
+ storager.insertMobilePosition(mobilePosition);
+ }
+
storager.updateChannelPosition(deviceChannel);
// 鍙戦�乺edis娑堟伅銆� 閫氱煡浣嶇疆淇℃伅鐨勫彉鍖�
JSONObject jsonObject = new JSONObject();
@@ -281,38 +271,28 @@
mobilePosition.setLongitude(deviceAlarm.getLongitude());
mobilePosition.setLatitude(deviceAlarm.getLatitude());
mobilePosition.setReportSource("GPS Alarm");
- if ("WGS84".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeWgs84(mobilePosition.getLongitude());
- mobilePosition.setLatitudeWgs84(mobilePosition.getLatitude());
- Double[] position = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeGcj02(position[0]);
- mobilePosition.setLatitudeGcj02(position[1]);
- }else if ("GCJ02".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeGcj02(mobilePosition.getLongitude());
- mobilePosition.setLatitudeGcj02(mobilePosition.getLatitude());
- Double[] position = Coordtransform.GCJ02ToWGS84(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeWgs84(position[0]);
- mobilePosition.setLatitudeWgs84(position[1]);
- }else {
- mobilePosition.setLongitudeGcj02(0.00);
- mobilePosition.setLatitudeGcj02(0.00);
- mobilePosition.setLongitudeWgs84(0.00);
- mobilePosition.setLatitudeWgs84(0.00);
- }
- if (userSetting.getSavePositionHistory()) {
- storager.insertMobilePosition(mobilePosition);
- }
+
+
+
// 鏇存柊device channel 鐨勭粡绾害
DeviceChannel deviceChannel = new DeviceChannel();
deviceChannel.setDeviceId(device.getDeviceId());
deviceChannel.setChannelId(channelId);
deviceChannel.setLongitude(mobilePosition.getLongitude());
deviceChannel.setLatitude(mobilePosition.getLatitude());
- deviceChannel.setLongitudeWgs84(mobilePosition.getLongitudeWgs84());
- deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
- deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
- deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
deviceChannel.setGpsTime(mobilePosition.getTime());
+
+ deviceChannel = deviceChannelService.updateGps(deviceChannel, device);
+
+ mobilePosition.setLongitudeWgs84(deviceChannel.getLongitudeWgs84());
+ mobilePosition.setLatitudeWgs84(deviceChannel.getLatitudeWgs84());
+ mobilePosition.setLongitudeGcj02(deviceChannel.getLongitudeGcj02());
+ mobilePosition.setLatitudeGcj02(deviceChannel.getLatitudeGcj02());
+
+ if (userSetting.getSavePositionHistory()) {
+ storager.insertMobilePosition(mobilePosition);
+ }
+
storager.updateChannelPosition(deviceChannel);
}
// TODO: 闇�瑕佸疄鐜板瓨鍌ㄦ姤璀︿俊鎭�佹姤璀﹀垎绫�
@@ -364,7 +344,7 @@
}else {
event = eventElement.getText().toUpperCase();
}
- DeviceChannel channel = XmlUtil.channelContentHander(itemDevice, device);
+ DeviceChannel channel = XmlUtil.channelContentHander(itemDevice, device, event);
channel.setDeviceId(device.getDeviceId());
logger.info("[鏀跺埌 鐩綍璁㈤槄]锛歿}/{}", device.getDeviceId(), channel.getChannelId());
switch (event) {
@@ -389,7 +369,7 @@
case CatalogEvent.ADD:
// 澧炲姞
logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑澧炲姞閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
- storager.updateChannel(deviceId, channel);
+ deviceChannelService.updateChannel(deviceId, channel);
break;
case CatalogEvent.DEL:
// 鍒犻櫎
@@ -399,7 +379,7 @@
case CatalogEvent.UPDATE:
// 鏇存柊
logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鏇存柊閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
- storager.updateChannel(deviceId, channel);
+ deviceChannelService.updateChannel(deviceId, channel);
break;
default:
logger.warn("[ NotifyCatalog ] event not found 锛� {}", event );
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java
index 8dfd233..265694a 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java
@@ -11,6 +11,7 @@
import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
import com.genersoft.iot.vmp.service.IDeviceAlarmService;
+import com.genersoft.iot.vmp.service.IDeviceChannelService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
@@ -57,6 +58,9 @@
@Autowired
private IDeviceAlarmService deviceAlarmService;
+
+ @Autowired
+ private IDeviceChannelService deviceChannelService;
@Override
public void afterPropertiesSet() throws Exception {
@@ -119,38 +123,26 @@
mobilePosition.setLongitude(deviceAlarm.getLongitude());
mobilePosition.setLatitude(deviceAlarm.getLatitude());
mobilePosition.setReportSource("GPS Alarm");
- if ("WGS84".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeWgs84(mobilePosition.getLongitude());
- mobilePosition.setLatitudeWgs84(mobilePosition.getLatitude());
- Double[] position = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeGcj02(position[0]);
- mobilePosition.setLatitudeGcj02(position[1]);
- }else if ("GCJ02".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeGcj02(mobilePosition.getLongitude());
- mobilePosition.setLatitudeGcj02(mobilePosition.getLatitude());
- Double[] position = Coordtransform.GCJ02ToWGS84(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeWgs84(position[0]);
- mobilePosition.setLatitudeWgs84(position[1]);
- }else {
- mobilePosition.setLongitudeGcj02(0.00);
- mobilePosition.setLatitudeGcj02(0.00);
- mobilePosition.setLongitudeWgs84(0.00);
- mobilePosition.setLatitudeWgs84(0.00);
- }
- if (userSetting.getSavePositionHistory()) {
- storager.insertMobilePosition(mobilePosition);
- }
+
+
// 鏇存柊device channel 鐨勭粡绾害
DeviceChannel deviceChannel = new DeviceChannel();
deviceChannel.setDeviceId(device.getDeviceId());
deviceChannel.setChannelId(channelId);
deviceChannel.setLongitude(mobilePosition.getLongitude());
deviceChannel.setLatitude(mobilePosition.getLatitude());
- deviceChannel.setLongitudeWgs84(mobilePosition.getLongitudeWgs84());
- deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
- deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
- deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
deviceChannel.setGpsTime(mobilePosition.getTime());
+
+ deviceChannel = deviceChannelService.updateGps(deviceChannel, device);
+
+ mobilePosition.setLongitudeWgs84(deviceChannel.getLongitudeWgs84());
+ mobilePosition.setLatitudeWgs84(deviceChannel.getLatitudeWgs84());
+ mobilePosition.setLongitudeGcj02(deviceChannel.getLongitudeGcj02());
+ mobilePosition.setLatitudeGcj02(deviceChannel.getLatitudeGcj02());
+
+ if (userSetting.getSavePositionHistory()) {
+ storager.insertMobilePosition(mobilePosition);
+ }
storager.updateChannelPosition(deviceChannel);
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java
index d714ee4..0b27855 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/CatalogNotifyMessageHandler.java
@@ -58,85 +58,21 @@
// 鍑嗗鍥炲閫氶亾淇℃伅
List<DeviceChannelInPlatform> deviceChannels = storage.queryChannelListInParentPlatform(parentPlatform.getServerGBId());
// 鏌ヨ鍏宠仈鐨勭洿鎾�氶亾
- List<GbStream> gbStreams = storage.queryGbStreamListInPlatform(parentPlatform.getServerGBId());
+ List<DeviceChannel> gbStreams = storage.queryGbStreamListInPlatform(parentPlatform.getServerGBId());
+ // 鍥炲鐩綍淇℃伅
+ List<DeviceChannel> catalogs = storage.queryCatalogInPlatform(parentPlatform.getServerGBId());
List<DeviceChannel> allChannels = new ArrayList<>();
- // 鍥炲鐩綍淇℃伅
- List<PlatformCatalog> catalogs = storage.queryCatalogInPlatform(parentPlatform.getServerGBId());
if (catalogs.size() > 0) {
- for (PlatformCatalog catalog : catalogs) {
- if (catalog.getParentId().equals(catalog.getPlatformId())) {
- catalog.setParentId(parentPlatform.getDeviceGBId());
- }
- DeviceChannel deviceChannel = new DeviceChannel();
- deviceChannel.setChannelId(catalog.getId());
- deviceChannel.setName(catalog.getName());
- deviceChannel.setLongitude(0.0);
- deviceChannel.setLatitude(0.0);
- deviceChannel.setDeviceId(parentPlatform.getDeviceGBId());
- deviceChannel.setManufacture("wvp-pro");
- deviceChannel.setStatus(1);
- deviceChannel.setParental(1);
- deviceChannel.setParentId(catalog.getParentId());
- deviceChannel.setRegisterWay(1);
- if (catalog.getParentId() != null && catalog.getParentId().length() <= 10) {
- deviceChannel.setCivilCode(catalog.getParentId());
- }else {
- deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
- }
- deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
- deviceChannel.setModel("live");
- deviceChannel.setOwner("wvp-pro");
- deviceChannel.setSecrecy("0");
- allChannels.add(deviceChannel);
- }
+ allChannels.addAll(catalogs);
}
// 鍥炲绾ц仈鐨勯�氶亾
if (deviceChannels.size() > 0) {
- for (DeviceChannelInPlatform channel : deviceChannels) {
- if (channel.getCatalogId().equals(parentPlatform.getServerGBId())) {
- channel.setCatalogId(parentPlatform.getDeviceGBId());
- }
- DeviceChannel deviceChannel = storage.queryChannel(channel.getDeviceId(), channel.getChannelId());
- deviceChannel.setParental(0);
- deviceChannel.setParentId(channel.getCatalogId());
- if (channel.getCatalogId() != null && channel.getCatalogId().length() <= 10) {
- channel.setCivilCode(channel.getCatalogId());
- }else {
- deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
- }
-
- allChannels.add(deviceChannel);
- }
+ allChannels.addAll(deviceChannels);
}
// 鍥炲鐩存挱鐨勯�氶亾
if (gbStreams.size() > 0) {
- for (GbStream gbStream : gbStreams) {
- if (gbStream.getCatalogId().equals(parentPlatform.getServerGBId())) {
- gbStream.setCatalogId(null);
- }
- DeviceChannel deviceChannel = new DeviceChannel();
- deviceChannel.setChannelId(gbStream.getGbId());
- deviceChannel.setName(gbStream.getName());
- deviceChannel.setLongitude(gbStream.getLongitude());
- deviceChannel.setLatitude(gbStream.getLatitude());
- deviceChannel.setDeviceId(parentPlatform.getDeviceGBId());
- deviceChannel.setManufacture("wvp-pro");
-// deviceChannel.setStatus(gbStream.isStatus()?1:0);
- deviceChannel.setStatus(1);
- deviceChannel.setParentId(gbStream.getCatalogId());
- deviceChannel.setRegisterWay(1);
- if (gbStream.getCatalogId() != null && gbStream.getCatalogId().length() <= 10) {
- deviceChannel.setCivilCode(gbStream.getCatalogId());
- }else {
- deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
- }
- deviceChannel.setModel("live");
- deviceChannel.setOwner("wvp-pro");
- deviceChannel.setParental(0);
- deviceChannel.setSecrecy("0");
- allChannels.add(deviceChannel);
- }
+ allChannels.addAll(gbStreams);
}
if (allChannels.size() > 0) {
cmderFroPlatform.catalogQuery(allChannels, parentPlatform, sn, fromHeader.getTag());
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
index aa91556..2402494 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
@@ -7,6 +7,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.NotifyMessageHandler;
import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
+import com.genersoft.iot.vmp.service.IDeviceChannelService;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.utils.GpsUtil;
@@ -41,6 +42,9 @@
@Autowired
private IVideoManagerStorage storager;
+
+ @Autowired
+ private IDeviceChannelService deviceChannelService;
@Override
public void afterPropertiesSet() throws Exception {
@@ -79,38 +83,26 @@
mobilePosition.setAltitude(0.0);
}
mobilePosition.setReportSource("Mobile Position");
- if ("WGS84".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeWgs84(mobilePosition.getLongitude());
- mobilePosition.setLatitudeWgs84(mobilePosition.getLatitude());
- Double[] position = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeGcj02(position[0]);
- mobilePosition.setLatitudeGcj02(position[1]);
- }else if ("GCJ02".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeGcj02(mobilePosition.getLongitude());
- mobilePosition.setLatitudeGcj02(mobilePosition.getLatitude());
- Double[] position = Coordtransform.GCJ02ToWGS84(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeWgs84(position[0]);
- mobilePosition.setLatitudeWgs84(position[1]);
- }else {
- mobilePosition.setLongitudeGcj02(0.00);
- mobilePosition.setLatitudeGcj02(0.00);
- mobilePosition.setLongitudeWgs84(0.00);
- mobilePosition.setLatitudeWgs84(0.00);
- }
- if (userSetting.getSavePositionHistory()) {
- storager.insertMobilePosition(mobilePosition);
- }
+
+
// 鏇存柊device channel 鐨勭粡绾害
DeviceChannel deviceChannel = new DeviceChannel();
deviceChannel.setDeviceId(device.getDeviceId());
deviceChannel.setChannelId(mobilePosition.getChannelId());
deviceChannel.setLongitude(mobilePosition.getLongitude());
deviceChannel.setLatitude(mobilePosition.getLatitude());
- deviceChannel.setLongitudeWgs84(mobilePosition.getLongitudeWgs84());
- deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
- deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
- deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
deviceChannel.setGpsTime(mobilePosition.getTime());
+
+ deviceChannel = deviceChannelService.updateGps(deviceChannel, device);
+
+ mobilePosition.setLongitudeWgs84(deviceChannel.getLongitudeWgs84());
+ mobilePosition.setLatitudeWgs84(deviceChannel.getLatitudeWgs84());
+ mobilePosition.setLongitudeGcj02(deviceChannel.getLongitudeGcj02());
+ mobilePosition.setLatitudeGcj02(deviceChannel.getLatitudeGcj02());
+
+ if (userSetting.getSavePositionHistory()) {
+ storager.insertMobilePosition(mobilePosition);
+ }
storager.updateChannelPosition(deviceChannel);
//鍥炲 200 OK
responseAck(evt, Response.OK);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
index 0e97961..7f6f817 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
@@ -70,86 +70,24 @@
Element snElement = rootElement.element("SN");
String sn = snElement.getText();
// 鍑嗗鍥炲閫氶亾淇℃伅
- List<DeviceChannelInPlatform> deviceChannelInPlatforms = storager.queryChannelListInParentPlatform(parentPlatform.getServerGBId());
+ List<DeviceChannel> deviceChannelInPlatforms = storager.queryChannelWithCatalog(parentPlatform.getServerGBId());
// 鏌ヨ鍏宠仈鐨勭洿鎾�氶亾
- List<GbStream> gbStreams = storager.queryGbStreamListInPlatform(parentPlatform.getServerGBId());
+ List<DeviceChannel> gbStreams = storager.queryGbStreamListInPlatform(parentPlatform.getServerGBId());
// 鍥炲鐩綍淇℃伅
- List<PlatformCatalog> catalogs = storager.queryCatalogInPlatform(parentPlatform.getServerGBId());
+ List<DeviceChannel> catalogs = storager.queryCatalogInPlatform(parentPlatform.getServerGBId());
List<DeviceChannel> allChannels = new ArrayList<>();
+
if (catalogs.size() > 0) {
- for (PlatformCatalog catalog : catalogs) {
- if (catalog.getParentId().equals(catalog.getPlatformId())) {
- catalog.setParentId(parentPlatform.getDeviceGBId());
- }
- DeviceChannel deviceChannel = new DeviceChannel();
- // 閫氶亾鐨勭被鍨嬶紝0->鍥芥爣閫氶亾 1->鐩存挱娴侀�氶亾 2->涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝
- deviceChannel.setChannelType(2);
- deviceChannel.setChannelId(catalog.getId());
- deviceChannel.setName(catalog.getName());
- deviceChannel.setDeviceId(parentPlatform.getDeviceGBId());
- deviceChannel.setManufacture("wvp-pro");
- deviceChannel.setStatus(1);
- deviceChannel.setParental(1);
- deviceChannel.setParentId(catalog.getParentId());
- deviceChannel.setRegisterWay(1);
- if (catalog.getParentId() != null && catalog.getParentId().length() < 10) {
- deviceChannel.setCivilCode(catalog.getParentId());
- }else {
- deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
- }
- allChannels.add(deviceChannel);
- }
+ allChannels.addAll(catalogs);
}
// 鍥炲绾ц仈鐨勯�氶亾
if (deviceChannelInPlatforms.size() > 0) {
- for (DeviceChannelInPlatform channel : deviceChannelInPlatforms) {
- if (channel.getCatalogId().equals(parentPlatform.getServerGBId())) {
- channel.setCatalogId(parentPlatform.getDeviceGBId());
- }
- DeviceChannel deviceChannel = storage.queryChannel(channel.getDeviceId(), channel.getChannelId());
- // 閫氶亾鐨勭被鍨嬶紝0->鍥芥爣閫氶亾 1->鐩存挱娴侀�氶亾 2->涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝
- deviceChannel.setChannelType(0);
- deviceChannel.setParental(0);
- deviceChannel.setParentId(channel.getCatalogId());
- if (channel.getCatalogId() != null && channel.getCatalogId().length() < 10) {
- deviceChannel.setCivilCode(channel.getCatalogId());
- }else {
- deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
- }
- allChannels.add(deviceChannel);
- }
+ allChannels.addAll(deviceChannelInPlatforms);
}
// 鍥炲鐩存挱鐨勯�氶亾
if (gbStreams.size() > 0) {
- for (GbStream gbStream : gbStreams) {
- if (gbStream.getCatalogId().equals(parentPlatform.getServerGBId())) {
- gbStream.setCatalogId(null);
- }
- DeviceChannel deviceChannel = new DeviceChannel();
- // 閫氶亾鐨勭被鍨嬶紝0->鍥芥爣閫氶亾 1->鐩存挱娴侀�氶亾 2->涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝
- deviceChannel.setChannelType(1);
- deviceChannel.setChannelId(gbStream.getGbId());
- deviceChannel.setName(gbStream.getName());
- deviceChannel.setLongitude(gbStream.getLongitude());
- deviceChannel.setLatitude(gbStream.getLatitude());
- deviceChannel.setDeviceId(parentPlatform.getDeviceGBId());
- deviceChannel.setManufacture("wvp-pro");
-// deviceChannel.setStatus(gbStream.isStatus()?1:0);
- deviceChannel.setStatus(1);
- deviceChannel.setParentId(gbStream.getCatalogId());
- deviceChannel.setRegisterWay(1);
- if (gbStream.getCatalogId() != null && gbStream.getCatalogId().length() < 10) {
- deviceChannel.setCivilCode(gbStream.getCatalogId());
- }else {
- deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
- }
- deviceChannel.setModel("live");
- deviceChannel.setOwner("wvp-pro");
- deviceChannel.setParental(0);
- deviceChannel.setSecrecy("0");
- allChannels.add(deviceChannel);
- }
+ allChannels.addAll(gbStreams);
}
if (allChannels.size() > 0) {
cmderFroPlatform.catalogQuery(allChannels, parentPlatform, sn, fromHeader.getTag());
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
index 2766474..66e92c5 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
@@ -125,11 +125,7 @@
if (channelDeviceElement == null) {
continue;
}
- //by brewswang
- // if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Longitude"))) {//濡傛灉鍖呭惈浣嶇疆淇℃伅锛屽氨鏇存柊涓�涓嬩綅缃�
- // processNotifyMobilePosition(evt, itemDevice);
- // }
- DeviceChannel deviceChannel = XmlUtil.channelContentHander(itemDevice, device);
+ DeviceChannel deviceChannel = XmlUtil.channelContentHander(itemDevice, device, null);
deviceChannel.setDeviceId(take.getDevice().getDeviceId());
channelList.add(deviceChannel);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java
index eb2c7b8..f5d04be 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java
@@ -87,7 +87,6 @@
device.setStreamMode("UDP");
}
deviceService.updateDevice(device);
-// storager.updateDevice(device);
RequestMessage msg = new RequestMessage();
msg.setKey(key);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java
index e562fa4..4c723ab 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java
@@ -7,6 +7,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
+import com.genersoft.iot.vmp.service.IDeviceChannelService;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.utils.GpsUtil;
@@ -41,6 +42,9 @@
@Autowired
private IVideoManagerStorage storager;
+
+ @Autowired
+ private IDeviceChannelService deviceChannelService;
@Override
public void afterPropertiesSet() throws Exception {
@@ -79,38 +83,25 @@
mobilePosition.setAltitude(0.0);
}
mobilePosition.setReportSource("Mobile Position");
- if ("WGS84".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeWgs84(mobilePosition.getLongitude());
- mobilePosition.setLatitudeWgs84(mobilePosition.getLatitude());
- Double[] position = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeGcj02(position[0]);
- mobilePosition.setLatitudeGcj02(position[1]);
- }else if ("GCJ02".equals(device.getGeoCoordSys())) {
- mobilePosition.setLongitudeGcj02(mobilePosition.getLongitude());
- mobilePosition.setLatitudeGcj02(mobilePosition.getLatitude());
- Double[] position = Coordtransform.GCJ02ToWGS84(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- mobilePosition.setLongitudeWgs84(position[0]);
- mobilePosition.setLatitudeWgs84(position[1]);
- }else {
- mobilePosition.setLongitudeGcj02(0.00);
- mobilePosition.setLatitudeGcj02(0.00);
- mobilePosition.setLongitudeWgs84(0.00);
- mobilePosition.setLatitudeWgs84(0.00);
- }
- if (userSetting.getSavePositionHistory()) {
- storager.insertMobilePosition(mobilePosition);
- }
+
// 鏇存柊device channel 鐨勭粡绾害
DeviceChannel deviceChannel = new DeviceChannel();
deviceChannel.setDeviceId(device.getDeviceId());
deviceChannel.setChannelId(mobilePosition.getChannelId());
deviceChannel.setLongitude(mobilePosition.getLongitude());
deviceChannel.setLatitude(mobilePosition.getLatitude());
- deviceChannel.setLongitudeWgs84(mobilePosition.getLongitudeWgs84());
- deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
- deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
- deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
deviceChannel.setGpsTime(mobilePosition.getTime());
+
+ deviceChannel = deviceChannelService.updateGps(deviceChannel, device);
+
+ mobilePosition.setLongitudeWgs84(deviceChannel.getLongitudeWgs84());
+ mobilePosition.setLatitudeWgs84(deviceChannel.getLatitudeWgs84());
+ mobilePosition.setLongitudeGcj02(deviceChannel.getLongitudeGcj02());
+ mobilePosition.setLatitudeGcj02(deviceChannel.getLatitudeGcj02());
+
+ if (userSetting.getSavePositionHistory()) {
+ storager.insertMobilePosition(mobilePosition);
+ }
storager.updateChannelPosition(deviceChannel);
//鍥炲 200 OK
responseAck(evt, Response.OK);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
index 72206d8..ced97ef 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
@@ -4,6 +4,8 @@
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+import com.genersoft.iot.vmp.gb28181.bean.TreeType;
+import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
import com.genersoft.iot.vmp.utils.DateUtil;
import org.dom4j.Attribute;
import org.dom4j.Document;
@@ -29,7 +31,7 @@
/**
* 鏃ュ織鏈嶅姟
*/
- private static Logger LOG = LoggerFactory.getLogger(XmlUtil.class);
+ private static Logger logger = LoggerFactory.getLogger(XmlUtil.class);
/**
* 瑙f瀽XML涓篋ocument瀵硅薄
@@ -46,7 +48,7 @@
try {
document = saxReader.read(sr);
} catch (DocumentException e) {
- LOG.error("瑙f瀽澶辫触", e);
+ logger.error("瑙f瀽澶辫触", e);
}
return null == document ? null : document.getRootElement();
}
@@ -182,47 +184,69 @@
return xml.getRootElement();
}
- public static DeviceChannel channelContentHander(Element itemDevice, Device device){
- Element channdelNameElement = itemDevice.element("Name");
- String channelName = channdelNameElement != null ? channdelNameElement.getTextTrim().toString() : "";
- Element statusElement = itemDevice.element("Status");
- String status = statusElement != null ? statusElement.getTextTrim().toString() : "ON";
+ private enum ChannelType{
+ CivilCode, BusinessGroup,VirtualOrganization,Other
+ }
+
+ public static DeviceChannel channelContentHander(Element itemDevice, Device device, String event){
DeviceChannel deviceChannel = new DeviceChannel();
- deviceChannel.setName(channelName);
+ deviceChannel.setDeviceId(device.getDeviceId());
Element channdelIdElement = itemDevice.element("DeviceID");
- String channelId = channdelIdElement != null ? channdelIdElement.getTextTrim().toString() : "";
- deviceChannel.setChannelId(channelId);
- // ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR鐨勫吋瀹规�у鐞�
- if (status.equals("ON") || status.equals("On") || status.equals("ONLINE") || status.equals("OK")) {
- deviceChannel.setStatus(1);
+ if (channdelIdElement == null) {
+ logger.warn("瑙f瀽Catalog娑堟伅鏃跺彂鐜扮己灏� DeviceID");
+ return null;
}
- if (status.equals("OFF") || status.equals("Off") || status.equals("OFFLINE")) {
- deviceChannel.setStatus(0);
+ String channelId = channdelIdElement.getTextTrim();
+ if (StringUtils.isEmpty(channelId)) {
+ logger.warn("瑙f瀽Catalog娑堟伅鏃跺彂鐜扮己灏� DeviceID");
+ return null;
+ }
+ deviceChannel.setChannelId(channelId);
+ if (event != null && !event.equals(CatalogEvent.ADD) && !event.equals(CatalogEvent.UPDATE)) {
+ // 闄や簡ADD鍜寀pdate鎯呭喌涓嬮渶瑕佽瘑鍒叏閮ㄥ唴瀹癸紝
+ return deviceChannel;
}
- deviceChannel.setManufacture(XmlUtil.getText(itemDevice, "Manufacturer"));
- deviceChannel.setModel(XmlUtil.getText(itemDevice, "Model"));
- deviceChannel.setOwner(XmlUtil.getText(itemDevice, "Owner"));
- deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
- deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
- deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
- String businessGroupID = XmlUtil.getText(itemDevice, "BusinessGroupID");
- if (XmlUtil.getText(itemDevice, "Parental") == null
- || XmlUtil.getText(itemDevice, "Parental").equals("")) {
- if (deviceChannel.getChannelId().length() <= 10
- || (deviceChannel.getChannelId().length() == 20 && (
- Integer.parseInt(deviceChannel.getChannelId().substring(10, 13)) == 215
- || Integer.parseInt(deviceChannel.getChannelId().substring(10, 13)) == 216
- )
- )
- ) {
- deviceChannel.setParental(1);
- }else {
- deviceChannel.setParental(0);
+ ChannelType channelType = ChannelType.Other;
+ if (channelId.length() <= 8) {
+ channelType = ChannelType.CivilCode;
+ }else {
+ if (channelId.length() == 20) {
+ int code = Integer.parseInt(channelId.substring(10, 13));
+ switch (code){
+ case 215:
+ channelType = ChannelType.BusinessGroup;
+ break;
+ case 216:
+ channelType = ChannelType.VirtualOrganization;
+ break;
+ default:
+ break;
+
+ }
}
- } else {
- // 鐢变簬娴峰悍浼氶敊璇殑鍙戦��65535浣滀负杩欓噷鐨勫彇鍊�,鎵�浠ヨ繖閲岄櫎闈炴槸0鍚﹀垯璁や负鏄�1
- deviceChannel.setParental(Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")) == 1?1:0);
+ }
+
+ Element channdelNameElement = itemDevice.element("Name");
+ String channelName = channdelNameElement != null ? channdelNameElement.getTextTrim() : "";
+ deviceChannel.setName(channelName);
+
+ String civilCode = XmlUtil.getText(itemDevice, "CivilCode");
+ deviceChannel.setCivilCode(civilCode);
+ if (channelType == ChannelType.CivilCode && civilCode == null) {
+ deviceChannel.setParental(1);
+ // 琛屾斂鍖哄垝濡傛灉娌℃湁浼犻�掑叿浣撳�硷紝鍒欐帹娴嬩竴涓�
+ if (channelId.length() > 2) {
+ deviceChannel.setCivilCode(channelId.substring(0, channelId.length() - 2));
+ }
+ }
+ if (channelType.equals(ChannelType.CivilCode)) {
+ // 琛屾斂鍖哄垝鍏朵粬瀛楁娌″繀瑕佽瘑鍒簡锛岄粯璁ゅ湪绾垮嵆鍙�
+ deviceChannel.setStatus(1);
+ deviceChannel.setParental(1);
+ deviceChannel.setCreateTime(DateUtil.getNow());
+ deviceChannel.setUpdateTime(DateUtil.getNow());
+ return deviceChannel;
}
/**
* 琛屾斂鍖哄垝灞曠ず璁惧鏍戜笌涓氬姟鍒嗙粍灞曠ず璁惧鏍戞槸涓ょ涓嶅悓鐨勬ā寮�
@@ -230,7 +254,17 @@
* 娌冲寳鐪�
* --> 鐭冲搴勫競
* --> 鎽勫儚澶�
- * --> 姝e畾鍘�
+ *String parentId = XmlUtil.getText(itemDevice, "ParentID");
+ if (parentId != null) {
+ if (parentId.contains("/")) {
+ String lastParentId = parentId.substring(parentId.lastIndexOf("/") + 1);
+ String businessGroup = parentId.substring(0, parentId.indexOf("/"));
+ deviceChannel.setParentId(lastParentId);
+ }else {
+ deviceChannel.setParentId(parentId);
+ }
+ }
+ deviceCh --> 姝e畾鍘�
* --> 鎽勫儚澶�
* --> 鎽勫儚澶�
*
@@ -243,59 +277,88 @@
* --> 鎽勫儚澶�
*/
String parentId = XmlUtil.getText(itemDevice, "ParentID");
+ String businessGroupID = XmlUtil.getText(itemDevice, "BusinessGroupID");
if (parentId != null) {
if (parentId.contains("/")) {
String lastParentId = parentId.substring(parentId.lastIndexOf("/") + 1);
+ if (businessGroupID == null) {
+ businessGroupID = parentId.substring(0, parentId.indexOf("/"));
+ }
deviceChannel.setParentId(lastParentId);
}else {
deviceChannel.setParentId(parentId);
}
}
deviceChannel.setBusinessGroupId(businessGroupID);
+ if (channelType.equals(ChannelType.BusinessGroup) || channelType.equals(ChannelType.VirtualOrganization)) {
+ // 涓氬姟鍒嗙粍鍜岃櫄鎷熺粍缁� 鍏朵粬瀛楁娌″繀瑕佽瘑鍒簡锛岄粯璁ゅ湪绾垮嵆鍙�
+ deviceChannel.setStatus(1);
+ deviceChannel.setParental(1);
+ deviceChannel.setCreateTime(DateUtil.getNow());
+ deviceChannel.setUpdateTime(DateUtil.getNow());
+ return deviceChannel;
+ }
-// else {
-// if (deviceChannel.getChannelId().length() <= 10) { // 姝ゆ椂涓鸿鏀垮尯鍒�, 涓婁笅绾ц鏀垮尯鍒掍娇鐢―eviceId鍏宠仈
-// deviceChannel.setParentId(deviceChannel.getChannelId().substring(0, deviceChannel.getChannelId().length() - 2));
-// }else if (deviceChannel.getChannelId().length() == 20) {
-// if (Integer.parseInt(deviceChannel.getChannelId().substring(10, 13)) == 216) { // 铏氭嫙缁勭粐
-// deviceChannel.setBusinessGroupId(businessGroupID);
-// }else if (Integer.parseInt(device.getDeviceId().substring(10, 13) )== 118) {//NVR 濡傛灉涓婄骇璁惧缂栧彿鏄疦VR鍒欑洿鎺ュ皢NVR鐨勭紪鍙疯缃粰閫氶亾鐨勪笂绾х紪鍙�
-// deviceChannel.setParentId(device.getDeviceId());
-// }else if (deviceChannel.getCivilCode() != null) {
-// // 璁惧锛� 鏃爌arentId鐨�20浣嶆槸浣跨敤CivilCode琛ㄧず涓婄骇鐨勮澶囷紝
-// // 娉細215 涓氬姟鍒嗙粍鏄渶瑕佹湁parentId鐨�
-// deviceChannel.setParentId(deviceChannel.getCivilCode());
-// }
-// }else {
-// deviceChannel.setParentId(deviceChannel.getDeviceId());
-// }
-// }
+ Element statusElement = itemDevice.element("Status");
- if (XmlUtil.getText(itemDevice, "SafetyWay") == null
- || XmlUtil.getText(itemDevice, "SafetyWay") == "") {
+ if (statusElement != null) {
+ String status = statusElement.getTextTrim().trim();
+ // ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR鐨勫吋瀹规�у鐞�
+ if (status.equals("ON") || status.equals("On") || status.equals("ONLINE") || status.equals("OK")) {
+ deviceChannel.setStatus(1);
+ }
+ if (status.equals("OFF") || status.equals("Off") || status.equals("OFFLINE")) {
+ deviceChannel.setStatus(0);
+ }
+ }else {
+ deviceChannel.setStatus(1);
+ }
+ // 璇嗗埆鑷甫鐨勭洰褰曟爣璇�
+ String parental = XmlUtil.getText(itemDevice, "Parental");
+ // 鐢变簬娴峰悍浼氶敊璇殑鍙戦��65535浣滀负杩欓噷鐨勫彇鍊�,鎵�浠ヨ繖閲岄櫎闈炴槸0鍚﹀垯璁や负鏄�1
+ if (!StringUtils.isEmpty(parental) && parental.length() == 1 && Integer.parseInt(parental) == 0) {
+ deviceChannel.setParental(0);
+ }else {
+ deviceChannel.setParental(1);
+ }
+
+
+ deviceChannel.setManufacture(XmlUtil.getText(itemDevice, "Manufacturer"));
+ deviceChannel.setModel(XmlUtil.getText(itemDevice, "Model"));
+ deviceChannel.setOwner(XmlUtil.getText(itemDevice, "Owner"));
+ deviceChannel.setCertNum(XmlUtil.getText(itemDevice, "CertNum"));
+ deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
+ deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
+ deviceChannel.setPassword(XmlUtil.getText(itemDevice, "Password"));
+
+ String safetyWay = XmlUtil.getText(itemDevice, "SafetyWay");
+ if (StringUtils.isEmpty(safetyWay)) {
deviceChannel.setSafetyWay(0);
} else {
- deviceChannel.setSafetyWay(Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
+ deviceChannel.setSafetyWay(Integer.parseInt(safetyWay));
}
- if (XmlUtil.getText(itemDevice, "RegisterWay") == null
- || XmlUtil.getText(itemDevice, "RegisterWay") == "") {
+
+ String registerWay = XmlUtil.getText(itemDevice, "RegisterWay");
+ if (StringUtils.isEmpty(registerWay)) {
deviceChannel.setRegisterWay(1);
} else {
- deviceChannel.setRegisterWay(Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
+ deviceChannel.setRegisterWay(Integer.parseInt(registerWay));
}
- deviceChannel.setCertNum(XmlUtil.getText(itemDevice, "CertNum"));
+
if (XmlUtil.getText(itemDevice, "Certifiable") == null
|| XmlUtil.getText(itemDevice, "Certifiable") == "") {
deviceChannel.setCertifiable(0);
} else {
deviceChannel.setCertifiable(Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
}
+
if (XmlUtil.getText(itemDevice, "ErrCode") == null
|| XmlUtil.getText(itemDevice, "ErrCode") == "") {
deviceChannel.setErrCode(0);
} else {
deviceChannel.setErrCode(Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
}
+
deviceChannel.setEndTime(XmlUtil.getText(itemDevice, "EndTime"));
deviceChannel.setSecrecy(XmlUtil.getText(itemDevice, "Secrecy"));
deviceChannel.setIpAddress(XmlUtil.getText(itemDevice, "IPAddress"));
@@ -304,43 +367,23 @@
} else {
deviceChannel.setPort(Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
}
- deviceChannel.setPassword(XmlUtil.getText(itemDevice, "Password"));
- if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Longitude"))) {
- deviceChannel.setLongitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
+
+
+ String longitude = XmlUtil.getText(itemDevice, "Longitude");
+ if (NumericUtil.isDouble(longitude)) {
+ deviceChannel.setLongitude(Double.parseDouble(longitude));
} else {
deviceChannel.setLongitude(0.00);
}
- if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Latitude"))) {
- deviceChannel.setLatitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
+ String latitude = XmlUtil.getText(itemDevice, "Latitude");
+ if (NumericUtil.isDouble(latitude)) {
+ deviceChannel.setLatitude(Double.parseDouble(latitude));
} else {
deviceChannel.setLatitude(0.00);
}
deviceChannel.setGpsTime(DateUtil.getNow());
- if (deviceChannel.getLongitude()*deviceChannel.getLatitude() > 0) {
- 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]);
- }else {
- deviceChannel.setLongitudeGcj02(0.00);
- deviceChannel.setLatitudeGcj02(0.00);
- deviceChannel.setLongitudeWgs84(0.00);
- deviceChannel.setLatitudeWgs84(0.00);
- }
- }else {
- deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude());
- deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude());
- deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude());
- deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude());
- }
+
+
if (XmlUtil.getText(itemDevice, "PTZType") == null || "".equals(XmlUtil.getText(itemDevice, "PTZType"))) {
//鍏煎INFO涓殑淇℃伅
Element info = itemDevice.element("Info");
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
index 249ec03..c8f9040 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
@@ -136,4 +136,12 @@
return sendGet(mediaServerItem, "api/record/file/duration",param, callback);
}
+ public JSONObject addStreamCallInfo(MediaServerItem mediaServerItem, String app, String stream, String callId, RequestCallback callback){
+ Map<String, Object> param = new HashMap<>();
+ param.put("app",app);
+ param.put("stream",stream);
+ param.put("callId",callId);
+ return sendGet(mediaServerItem, "api/record/addStreamCallInfo",param, callback);
+ }
+
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index f4a2744..4b51d7c 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -87,6 +87,9 @@
@Autowired
private VideoStreamSessionManager sessionManager;
+ @Autowired
+ private AssistRESTfulUtils assistRESTfulUtils;
+
/**
* 鏈嶅姟鍣ㄥ畾鏃朵笂鎶ユ椂闂达紝涓婃姤闂撮殧鍙厤缃紝榛樿10s涓婃姤涓�娆�
*
@@ -200,6 +203,8 @@
logger.info("[ ZLM HOOK ]on_publish API璋冪敤锛屽弬鏁帮細" + json.toString());
JSONObject ret = new JSONObject();
+ String mediaServerId = json.getString("mediaServerId");
+ MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
if (!"rtp".equals(param.getApp())) {
// 鎺ㄦ祦閴存潈
if (param.getParams() == null) {
@@ -231,6 +236,10 @@
streamAuthorityInfo.setSign(sign);
// 閴存潈閫氳繃
redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), param.getStream(), streamAuthorityInfo);
+ // 閫氱煡assist鏂扮殑callId
+ if (mediaInfo != null) {
+ assistRESTfulUtils.addStreamCallInfo(mediaInfo, param.getApp(), param.getStream(), callId, null);
+ }
}
ret.put("code", 0);
@@ -240,10 +249,9 @@
ret.put("enable_audio", true);
}
- String mediaServerId = json.getString("mediaServerId");
+
ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json);
if (subscribe != null) {
- MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
if (mediaInfo != null) {
subscribe.response(mediaInfo, json);
}else {
@@ -270,10 +278,12 @@
ret.put("mp4_max_second", 10);
ret.put("enable_mp4", true);
ret.put("enable_audio", true);
+
}
}
+
return new ResponseEntity<String>(ret.toString(), HttpStatus.OK);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
index 366ed22..cbef9ce 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
@@ -292,7 +292,7 @@
logger.warn("鏌ヨ娴�({}/{})鏄惁鏈夊叾瀹冭鐪嬭�呮椂寰楀埌锛� {}", app, streamId, mediaInfo.getString("msg"));
return -1;
}
- if ( code == 0 && ! mediaInfo.getBoolean("online")) {
+ if ( code == 0 && mediaInfo.getBoolean("online") != null && !mediaInfo.getBoolean("online")) {
logger.warn("鏌ヨ娴�({}/{})鏄惁鏈夊叾瀹冭鐪嬭�呮椂寰楀埌锛� {}", app, streamId, mediaInfo.getString("msg"));
return -1;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java b/src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java
new file mode 100644
index 0000000..9629e3a
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java
@@ -0,0 +1,35 @@
+package com.genersoft.iot.vmp.service;
+
+import com.genersoft.iot.vmp.gb28181.bean.Device;
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+
+import java.util.List;
+
+/**
+ * 鍥芥爣閫氶亾涓氬姟绫�
+ * @author lin
+ */
+public interface IDeviceChannelService {
+
+ /**
+ * 鏇存柊gps淇℃伅
+ */
+ DeviceChannel updateGps(DeviceChannel deviceChannel, Device device);
+
+ /**
+ * 娣诲姞璁惧閫氶亾
+ *
+ * @param deviceId 璁惧id
+ * @param channel 閫氶亾
+ */
+ void updateChannel(String deviceId, DeviceChannel channel);
+
+ /**
+ * 鎵归噺娣诲姞璁惧閫氶亾
+ *
+ * @param deviceId 璁惧id
+ * @param channels 澶氫釜閫氶亾
+ */
+ int updateChannels(String deviceId, List<DeviceChannel> channels);
+
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java b/src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java
index abdde6d..0a39206 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java
@@ -18,7 +18,7 @@
* @param count
* @return
*/
- PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId, String catalogId,String query,Boolean pushing,String mediaServerId);
+ PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId, String catalogId,String query,String mediaServerId);
/**
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IPlatformChannelService.java b/src/main/java/com/genersoft/iot/vmp/service/IPlatformChannelService.java
new file mode 100644
index 0000000..739e6b8
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/service/IPlatformChannelService.java
@@ -0,0 +1,22 @@
+package com.genersoft.iot.vmp.service;
+
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
+
+import java.util.List;
+
+/**
+ * 骞冲彴鍏宠仈閫氶亾绠$悊
+ * @author lin
+ */
+public interface IPlatformChannelService {
+
+ /**
+ * 鏇存柊鐩綍涓嬬殑閫氶亾
+ * @param platformId 骞冲彴缂栧彿
+ * @param channelReduces 閫氶亾淇℃伅
+ * @param catalogId 鐩綍缂栧彿
+ * @return
+ */
+ int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces, String catalogId);
+
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java b/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java
index ac10000..1dd74ee 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java
@@ -101,4 +101,9 @@
void zlmServerOffline(String mediaServerId);
void clean();
+
+ /**
+ * 鏇存柊浠g悊娴�
+ */
+ boolean updateStreamProxy(StreamProxyItem streamProxyItem);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java b/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java
index acf0d27..5dd45ef 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/IStreamPushService.java
@@ -5,6 +5,7 @@
import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
+import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto;
import com.github.pagehelper.PageInfo;
@@ -44,31 +45,55 @@
* 鍋滄涓�璺帹娴�
* @param app 搴旂敤鍚�
* @param streamId 娴両D
- * @return
*/
boolean stop(String app, String streamId);
/**
* 鏂扮殑鑺傜偣鍔犲叆
- * @param mediaServerId
- * @return
*/
void zlmServerOnline(String mediaServerId);
/**
* 鑺傜偣绂荤嚎
- * @param mediaServerId
- * @return
*/
void zlmServerOffline(String mediaServerId);
+ /**
+ * 娓呯┖
+ */
void clean();
+
boolean saveToRandomGB();
+ /**
+ * 鎵归噺娣诲姞
+ */
void batchAdd(List<StreamPushItem> streamPushExcelDtoList);
+ /**
+ * 涓澶氫釜鎺ㄦ祦
+ */
boolean batchStop(List<GbStream> streamPushItems);
+ /**
+ * 瀵煎叆鏃舵壒閲忓鍔�
+ */
void batchAddForUpload(List<StreamPushItem> streamPushItems, Map<String, List<String[]>> streamPushItemsForAll);
+
+ /**
+ * 鍏ㄩ儴绂荤嚎
+ */
+ void allStreamOffline();
+
+ /**
+ * 鎺ㄦ祦绂荤嚎
+ */
+ void offline(List<StreamPushItemFromRedis> offlineStreams);
+
+ /**
+ * 鎺ㄦ祦涓婄嚎
+ */
+ void online(List<StreamPushItemFromRedis> onlineStreams);
+
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceAlarmServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceAlarmServiceImpl.java
index ead291c..8c55986 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceAlarmServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceAlarmServiceImpl.java
@@ -17,7 +17,6 @@
@Autowired
private DeviceAlarmMapper deviceAlarmMapper;
-
@Override
public PageInfo<DeviceAlarm> getAllAlarm(int page, int count, String deviceId, String alarmPriority, String alarmMethod, String alarmType, String startTime, String endTime) {
PageHelper.startPage(page, count);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java
new file mode 100644
index 0000000..99ad3de
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java
@@ -0,0 +1,165 @@
+package com.genersoft.iot.vmp.service.impl;
+
+import com.genersoft.iot.vmp.common.StreamInfo;
+import com.genersoft.iot.vmp.gb28181.bean.Device;
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
+import com.genersoft.iot.vmp.service.IDeviceChannelService;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+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;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @author lin
+ */
+@Service
+public class DeviceChannelServiceImpl implements IDeviceChannelService {
+
+ private final static Logger logger = LoggerFactory.getLogger(DeviceChannelServiceImpl.class);
+
+ @Autowired
+ private IRedisCatchStorage redisCatchStorage;
+
+ @Autowired
+ private DeviceChannelMapper channelMapper;
+
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public DeviceChannel updateGps(DeviceChannel deviceChannel, Device device) {
+ if (deviceChannel.getLongitude()*deviceChannel.getLatitude() > 0) {
+ if (device == null) {
+ device = deviceMapper.getDeviceByDeviceId(deviceChannel.getDeviceId());
+ }
+
+ 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]);
+ }else {
+ deviceChannel.setLongitudeGcj02(0.00);
+ deviceChannel.setLatitudeGcj02(0.00);
+ deviceChannel.setLongitudeWgs84(0.00);
+ deviceChannel.setLatitudeWgs84(0.00);
+ }
+ }else {
+ deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude());
+ deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude());
+ }
+ return deviceChannel;
+ }
+
+ @Override
+ public void updateChannel(String deviceId, DeviceChannel channel) {
+ String channelId = channel.getChannelId();
+ channel.setDeviceId(deviceId);
+ StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId);
+ if (streamInfo != null) {
+ channel.setStreamId(streamInfo.getStream());
+ }
+ String now = DateUtil.getNow();
+ channel.setUpdateTime(now);
+ DeviceChannel deviceChannel = channelMapper.queryChannel(deviceId, channelId);
+ channel = updateGps(channel, null);
+ if (deviceChannel == null) {
+ channel.setCreateTime(now);
+ channelMapper.add(channel);
+ }else {
+ channelMapper.update(channel);
+ }
+ channelMapper.updateChannelSubCount(deviceId,channel.getParentId());
+ }
+
+ @Override
+ public int updateChannels(String deviceId, List<DeviceChannel> channels) {
+ List<DeviceChannel> addChannels = new ArrayList<>();
+ List<DeviceChannel> updateChannels = new ArrayList<>();
+ HashMap<String, DeviceChannel> channelsInStore = new HashMap<>();
+ Device device = deviceMapper.getDeviceByDeviceId(deviceId);
+ if (channels != null && channels.size() > 0) {
+ List<DeviceChannel> channelList = channelMapper.queryChannels(deviceId, null, null, null, null);
+ if (channelList.size() == 0) {
+ for (DeviceChannel channel : channels) {
+ channel.setDeviceId(deviceId);
+ StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channel.getChannelId());
+ if (streamInfo != null) {
+ channel.setStreamId(streamInfo.getStream());
+ }
+ String now = DateUtil.getNow();
+ channel.setUpdateTime(now);
+ channel.setCreateTime(now);
+ channel = updateGps(channel, device);
+ addChannels.add(channel);
+ }
+ }else {
+ for (DeviceChannel deviceChannel : channelList) {
+ channelsInStore.put(deviceChannel.getChannelId(), deviceChannel);
+ }
+ for (DeviceChannel channel : channels) {
+ channel.setDeviceId(deviceId);
+ StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channel.getChannelId());
+ if (streamInfo != null) {
+ channel.setStreamId(streamInfo.getStream());
+ }
+ String now = DateUtil.getNow();
+ channel.setUpdateTime(now);
+ channel = updateGps(channel, device);
+ if (channelsInStore.get(channel.getChannelId()) != null) {
+ updateChannels.add(channel);
+ }else {
+ addChannels.add(channel);
+ channel.setCreateTime(now);
+ }
+ }
+ }
+ int limitCount = 300;
+ if (addChannels.size() > 0) {
+ if (addChannels.size() > limitCount) {
+ for (int i = 0; i < addChannels.size(); i += limitCount) {
+ int toIndex = i + limitCount;
+ if (i + limitCount > addChannels.size()) {
+ toIndex = addChannels.size();
+ }
+ channelMapper.batchAdd(addChannels.subList(i, toIndex));
+ }
+ }else {
+ channelMapper.batchAdd(addChannels);
+ }
+ }
+ if (updateChannels.size() > 0) {
+ if (updateChannels.size() > limitCount) {
+ for (int i = 0; i < updateChannels.size(); i += limitCount) {
+ int toIndex = i + limitCount;
+ if (i + limitCount > updateChannels.size()) {
+ toIndex = updateChannels.size();
+ }
+ channelMapper.batchUpdate(updateChannels.subList(i, toIndex));
+ }
+ }else {
+ channelMapper.batchUpdate(updateChannels);
+ }
+ }
+ }
+ return addChannels.size() + updateChannels.size();
+ }
+}
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 9d376fb..579184c 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
@@ -7,6 +7,7 @@
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.IDeviceChannelService;
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;
@@ -54,6 +55,9 @@
@Autowired
private DeviceMapper deviceMapper;
+
+ @Autowired
+ private IDeviceChannelService deviceChannelService;
@Autowired
private DeviceChannelMapper deviceChannelMapper;
@@ -324,23 +328,12 @@
private void updateDeviceChannelGeoCoordSys(Device device) {
List<DeviceChannel> deviceChannels = deviceChannelMapper.getAllChannelWithCoordinate(device.getDeviceId());
if (deviceChannels.size() > 0) {
+ List<DeviceChannel> deviceChannelsForStore = new ArrayList<>();
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]);
- }
+ deviceChannelsForStore.add(deviceChannelService.updateGps(deviceChannel, device));
}
+ deviceChannelService.updateChannels(device.getDeviceId(), deviceChannelsForStore);
}
- storage.updateChannels(device.getDeviceId(), deviceChannels);
}
@@ -352,11 +345,11 @@
}
if (parentId == null || parentId.equals(deviceId)) {
// 瀛楁牴鑺傜偣寮�濮嬫煡璇�
- List<DeviceChannel> rootNodes = getRootNodes(deviceId, "CivilCode".equals(device.getTreeType()), true, !onlyCatalog);
+ List<DeviceChannel> rootNodes = getRootNodes(deviceId, TreeType.CIVIL_CODE.equals(device.getTreeType()), true, !onlyCatalog);
return transportChannelsToTree(rootNodes, "");
}
- if ("CivilCode".equals(device.getTreeType())) {
+ if (TreeType.CIVIL_CODE.equals(device.getTreeType())) {
if (parentId.length()%2 != 0) {
return null;
}
@@ -386,7 +379,7 @@
}
// 浣跨敤涓氬姟鍒嗙粍灞曠ず鏍�
- if ("BusinessGroup".equals(device.getTreeType())) {
+ if (TreeType.BUSINESS_GROUP.equals(device.getTreeType())) {
if (parentId.length() < 14 ) {
return null;
}
@@ -406,11 +399,11 @@
}
if (parentId == null || parentId.equals(deviceId)) {
// 瀛楁牴鑺傜偣寮�濮嬫煡璇�
- List<DeviceChannel> rootNodes = getRootNodes(deviceId, "CivilCode".equals(device.getTreeType()), false, true);
+ List<DeviceChannel> rootNodes = getRootNodes(deviceId, TreeType.CIVIL_CODE.equals(device.getTreeType()), false, true);
return rootNodes;
}
- if ("CivilCode".equals(device.getTreeType())) {
+ if (TreeType.CIVIL_CODE.equals(device.getTreeType())) {
if (parentId.length()%2 != 0) {
return null;
}
@@ -431,7 +424,7 @@
}
// 浣跨敤涓氬姟鍒嗙粍灞曠ず鏍�
- if ("BusinessGroup".equals(device.getTreeType())) {
+ if (TreeType.BUSINESS_GROUP.equals(device.getTreeType())) {
if (parentId.length() < 14 ) {
return null;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java
index 4a965a0..8734882 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java
@@ -1,14 +1,13 @@
package com.genersoft.iot.vmp.service.impl;
import com.genersoft.iot.vmp.conf.SipConfig;
-import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
-import com.genersoft.iot.vmp.gb28181.bean.GbStream;
-import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper;
+import com.genersoft.iot.vmp.storager.dao.PlatformCatalogMapper;
import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
import com.genersoft.iot.vmp.service.IGbStreamService;
import com.github.pagehelper.PageHelper;
@@ -46,15 +45,15 @@
private ParentPlatformMapper platformMapper;
@Autowired
- private SipConfig sipConfig;
+ private PlatformCatalogMapper catalogMapper;
@Autowired
private EventPublisher eventPublisher;
@Override
- public PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId, String catalogId, String query, Boolean pushing, String mediaServerId) {
+ public PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId, String catalogId, String query, String mediaServerId) {
PageHelper.startPage(page, count);
- List<GbStream> all = gbStreamMapper.selectAll(platFormId, catalogId, query, pushing, mediaServerId);
+ List<GbStream> all = gbStreamMapper.selectAll(platFormId, catalogId, query, mediaServerId);
return new PageInfo<>(all);
}
@@ -102,16 +101,25 @@
deviceChannel.setLatitude(gbStream.getLatitude());
deviceChannel.setDeviceId(platform.getDeviceGBId());
deviceChannel.setManufacture("wvp-pro");
-// deviceChannel.setStatus(gbStream.isStatus()?1:0);
- deviceChannel.setStatus(1);
- deviceChannel.setParentId(catalogId ==null?gbStream.getCatalogId():catalogId);
+ deviceChannel.setStatus(gbStream.isStatus()?1:0);
+
deviceChannel.setRegisterWay(1);
- if (catalogId.length() > 0 && catalogId.length() <= 10) {
- // 鐖惰妭鐐规槸琛屾斂鍖哄垝,鍒欒缃瓹ivilCode浣跨敤姝よ鏀垮尯鍒�
+ deviceChannel.setCivilCode(platform.getAdministrativeDivision());
+
+ if (platform.getTreeType().equals(TreeType.CIVIL_CODE)){
deviceChannel.setCivilCode(catalogId);
- }else {
- deviceChannel.setCivilCode(platform.getAdministrativeDivision());
+ }else if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)){
+ PlatformCatalog catalog = catalogMapper.select(catalogId);
+ if (catalog == null) {
+ deviceChannel.setParentId(platform.getDeviceGBId());
+ deviceChannel.setBusinessGroupId(null);
+ }else {
+ deviceChannel.setParentId(catalog.getId());
+ deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId());
+ }
+
}
+
deviceChannel.setModel("live");
deviceChannel.setOwner("wvp-pro");
deviceChannel.setParental(0);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformChannelServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformChannelServiceImpl.java
new file mode 100644
index 0000000..d024550
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformChannelServiceImpl.java
@@ -0,0 +1,106 @@
+package com.genersoft.iot.vmp.service.impl;
+
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog;
+import com.genersoft.iot.vmp.gb28181.bean.TreeType;
+import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
+import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
+import com.genersoft.iot.vmp.service.IPlatformChannelService;
+import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
+import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper;
+import com.genersoft.iot.vmp.storager.dao.PlatformCatalogMapper;
+import com.genersoft.iot.vmp.storager.dao.PlatformChannelMapper;
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author lin
+ */
+@Service
+public class PlatformChannelServiceImpl implements IPlatformChannelService {
+
+ private final static Logger logger = LoggerFactory.getLogger(PlatformChannelServiceImpl.class);
+
+ @Autowired
+ private PlatformChannelMapper platformChannelMapper;
+
+ @Autowired
+ private DeviceChannelMapper deviceChannelMapper;
+
+ @Autowired
+ private PlatformCatalogMapper catalogManager;
+
+ @Autowired
+ private ParentPlatformMapper platformMapper;
+
+ @Autowired
+ EventPublisher eventPublisher;
+
+ @Override
+ public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces, String catalogId) {
+ ParentPlatform platform = platformMapper.getParentPlatByServerGBId(platformId);
+ if (platform == null) {
+ logger.warn("鏇存柊绾ц仈閫氶亾淇℃伅鏃舵湭鎵惧埌骞冲彴{}鐨勪俊鎭�", platformId);
+ return 0;
+ }
+ Map<Integer, ChannelReduce> deviceAndChannels = new HashMap<>();
+ for (ChannelReduce channelReduce : channelReduces) {
+ channelReduce.setCatalogId(catalogId);
+ deviceAndChannels.put(channelReduce.getId(), channelReduce);
+ }
+ List<Integer> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet());
+ // 鏌ヨ褰撳墠宸茬粡瀛樺湪鐨�
+ List<Integer> channelIds = platformChannelMapper.findChannelRelatedPlatform(platformId, channelReduces);
+ if (deviceAndChannelList != null) {
+ deviceAndChannelList.removeAll(channelIds);
+ }
+ for (Integer channelId : channelIds) {
+ deviceAndChannels.remove(channelId);
+ }
+ List<ChannelReduce> channelReducesToAdd = new ArrayList<>(deviceAndChannels.values());
+ // 瀵瑰墿涓嬬殑鏁版嵁杩涜瀛樺偍
+ int result = 0;
+ if (channelReducesToAdd.size() > 0) {
+ result = platformChannelMapper.addChannels(platformId, channelReducesToAdd);
+ // TODO 鍚庣画缁欏钩鍙板鍔犳帶鍒跺紑鍏充互鎺у埗鏄惁鍝嶅簲鐩綍璁㈤槄
+ List<DeviceChannel> deviceChannelList = getDeviceChannelListByChannelReduceList(channelReducesToAdd, catalogId, platform);
+ eventPublisher.catalogEventPublish(platformId, deviceChannelList, CatalogEvent.ADD);
+ }
+
+ return result;
+ }
+
+ private List<DeviceChannel> getDeviceChannelListByChannelReduceList(List<ChannelReduce> channelReduces, String catalogId, ParentPlatform platform) {
+ List<DeviceChannel> deviceChannelList = new ArrayList<>();
+ if (channelReduces.size() > 0){
+ PlatformCatalog catalog = catalogManager.select(catalogId);
+ if (catalog == null && !catalogId.equals(platform.getServerGBId())) {
+ logger.warn("鏈煡璇㈠埌鐩綍{}鐨勪俊鎭�", catalogId);
+ return null;
+ }
+ for (ChannelReduce channelReduce : channelReduces) {
+ DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(channelReduce.getDeviceId(), channelReduce.getChannelId());
+ deviceChannel.setParental(0);
+ deviceChannelList.add(deviceChannel);
+ if (platform.getTreeType().equals(TreeType.CIVIL_CODE)){
+ deviceChannel.setCivilCode(catalogId);
+ }else if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)){
+ deviceChannel.setParentId(catalogId);
+ if (catalog != null) {
+ deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId());
+ }
+ }
+ }
+ }
+ return deviceChannelList;
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/RedisPushStreamStatusMsgListener.java b/src/main/java/com/genersoft/iot/vmp/service/impl/RedisPushStreamStatusMsgListener.java
new file mode 100644
index 0000000..27e4a7d
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/RedisPushStreamStatusMsgListener.java
@@ -0,0 +1,92 @@
+package com.genersoft.iot.vmp.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.genersoft.iot.vmp.common.VideoManagerConstants;
+import com.genersoft.iot.vmp.conf.DynamicTask;
+import com.genersoft.iot.vmp.conf.UserSetting;
+import com.genersoft.iot.vmp.gb28181.bean.GbStream;
+import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
+import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
+import com.genersoft.iot.vmp.media.zlm.ZLMMediaListManager;
+import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
+import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
+import com.genersoft.iot.vmp.service.IStreamPushService;
+import com.genersoft.iot.vmp.service.bean.PushStreamStatusChangeFromRedisDto;
+import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.data.redis.connection.Message;
+import org.springframework.data.redis.connection.MessageListener;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 鎺ユ敹redis鍙戦�佺殑鎺ㄦ祦璁惧涓婄嚎涓嬬嚎閫氱煡
+ * @author lin
+ */
+@Component
+public class RedisPushStreamStatusMsgListener implements MessageListener, ApplicationRunner {
+
+ private final static Logger logger = LoggerFactory.getLogger(RedisPushStreamStatusMsgListener.class);
+
+ @Autowired
+ private IRedisCatchStorage redisCatchStorage;
+
+ @Autowired
+ private IStreamPushService streamPushService;
+
+ @Autowired
+ private EventPublisher eventPublisher;
+
+ @Autowired
+ private UserSetting userSetting;
+
+ @Autowired
+ private DynamicTask dynamicTask;
+
+ @Override
+ public void onMessage(Message message, byte[] bytes) {
+ PushStreamStatusChangeFromRedisDto statusChangeFromPushStream = JSON.parseObject(message.getBody(), PushStreamStatusChangeFromRedisDto.class);
+ if (statusChangeFromPushStream == null) {
+ logger.warn("[REDIS 娑堟伅]鎺ㄦ祦璁惧鐘舵�佸彉鍖栨秷鎭В鏋愬け璐�");
+ return;
+ }
+ if (statusChangeFromPushStream.isSetAllOffline()) {
+ // 鎵�鏈夎澶囩绾�
+ streamPushService.allStreamOffline();
+ }
+ if (statusChangeFromPushStream.getOfflineStreams() != null
+ && statusChangeFromPushStream.getOfflineStreams().size() > 0) {
+ // 鏇存柊閮ㄥ垎璁惧绂荤嚎
+ streamPushService.offline(statusChangeFromPushStream.getOfflineStreams());
+ }
+ if (statusChangeFromPushStream.getOnlineStreams() != null &&
+ statusChangeFromPushStream.getOnlineStreams().size() > 0) {
+ // 鏇存柊閮ㄥ垎璁惧涓婄嚎
+ streamPushService.online(statusChangeFromPushStream.getOnlineStreams());
+ }
+ }
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ // 鍚姩鏃惰缃墍鏈夋帹娴侀�氶亾绂荤嚎锛屽彂璧锋煡璇㈣姹�
+ redisCatchStorage.sendStreamPushRequestedMsgForStatus();
+ dynamicTask.startDelay(VideoManagerConstants.VM_MSG_GET_ALL_ONLINE_REQUESTED, ()->{
+ logger.info("[REDIS 娑堟伅]鏈敹鍒皉edis鍥炲鎺ㄦ祦璁惧鐘舵�侊紝鎵ц鎺ㄦ祦璁惧绂荤嚎");
+ // 浜旂鏀朵笉鍒拌姹傚氨璁剧疆閫氶亾绂荤嚎锛岀劧鍚庨�氱煡涓婄骇绂荤嚎
+ streamPushService.allStreamOffline();
+ }, 5000);
+ }
+
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/RedisStreamMsgListener.java b/src/main/java/com/genersoft/iot/vmp/service/impl/RedisStreamMsgListener.java
index 07fffdc..83116f3 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/RedisStreamMsgListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/RedisStreamMsgListener.java
@@ -3,16 +3,12 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.conf.UserSetting;
-import com.genersoft.iot.vmp.gb28181.bean.AlarmChannelMessage;
-import com.genersoft.iot.vmp.gb28181.bean.Device;
-import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm;
-import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
import com.genersoft.iot.vmp.media.zlm.ZLMMediaListManager;
import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
-import com.genersoft.iot.vmp.utils.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +18,7 @@
/**
+ * 鎺ユ敹鍏朵粬wvp鍙戦�佹祦鍙樺寲閫氱煡
* @author lin
*/
@Component
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
index b9bb96b..6d699cf 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
@@ -3,10 +3,10 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.TreeType;
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
@@ -23,14 +23,19 @@
import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
import com.genersoft.iot.vmp.storager.dao.StreamProxyMapper;
import com.genersoft.iot.vmp.service.IStreamProxyService;
+import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.TransactionDefinition;
+import org.springframework.transaction.TransactionStatus;
import org.springframework.util.StringUtils;
+import java.net.InetAddress;
import java.util.*;
/**
@@ -48,7 +53,7 @@
private IMediaService mediaService;
@Autowired
- private ZLMRESTfulUtils zlmresTfulUtils;;
+ private ZLMRESTfulUtils zlmresTfulUtils;
@Autowired
private StreamProxyMapper streamProxyMapper;
@@ -61,9 +66,6 @@
@Autowired
private UserSetting userSetting;
-
- @Autowired
- private SipConfig sipConfig;
@Autowired
private GbStreamMapper gbStreamMapper;
@@ -83,6 +85,12 @@
@Autowired
private IMediaServerService mediaServerService;
+ @Autowired
+ DataSourceTransactionManager dataSourceTransactionManager;
+
+ @Autowired
+ TransactionDefinition transactionDefinition;
+
@Override
public WVPResult<StreamInfo> save(StreamProxyItem param) {
@@ -99,6 +107,7 @@
wvpResult.setMsg("淇濆瓨澶辫触");
return wvpResult;
}
+
String dstUrl = String.format("rtmp://%s:%s/%s/%s", "127.0.0.1", mediaInfo.getRtmpPort(), param.getApp(),
param.getStream() );
param.setDst_url(dstUrl);
@@ -108,9 +117,9 @@
boolean saveResult;
// 鏇存柊
if (videoManagerStorager.queryStreamProxy(param.getApp(), param.getStream()) != null) {
- saveResult = videoManagerStorager.updateStreamProxy(param);
+ saveResult = updateStreamProxy(param);
}else { // 鏂板
- saveResult = videoManagerStorager.addStreamProxy(param);
+ saveResult = addStreamProxy(param);
}
if (saveResult) {
result.append("淇濆瓨鎴愬姛");
@@ -124,7 +133,7 @@
if (param.isEnable_remove_none_reader()) {
del(param.getApp(), param.getStream());
}else {
- videoManagerStorager.updateStreamProxy(param);
+ updateStreamProxy(param);
}
}else {
@@ -154,6 +163,7 @@
for (ParentPlatform parentPlatform : parentPlatforms) {
param.setPlatformId(parentPlatform.getServerGBId());
param.setCatalogId(parentPlatform.getCatalogId());
+
String stream = param.getStream();
StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(param.getApp(), stream, parentPlatform.getServerGBId());
if (streamProxyItems == null) {
@@ -166,6 +176,77 @@
wvpResult.setMsg(result.toString());
return wvpResult;
+ }
+
+ /**
+ * 鏂板浠g悊娴�
+ * @param streamProxyItem
+ * @return
+ */
+ private boolean addStreamProxy(StreamProxyItem streamProxyItem) {
+ TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
+ boolean result = false;
+ streamProxyItem.setStreamType("proxy");
+ streamProxyItem.setStatus(true);
+ String now = DateUtil.getNow();
+ streamProxyItem.setCreateTime(now);
+ try {
+ if (streamProxyMapper.add(streamProxyItem) > 0) {
+ if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
+ if (gbStreamMapper.add(streamProxyItem) < 0) {
+ //浜嬪姟鍥炴粴
+ dataSourceTransactionManager.rollback(transactionStatus);
+ return false;
+ }
+ }
+ }else {
+ //浜嬪姟鍥炴粴
+ dataSourceTransactionManager.rollback(transactionStatus);
+ return false;
+ }
+ result = true;
+ dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦
+ }catch (Exception e) {
+ logger.error("鍚戞暟鎹簱娣诲姞娴佷唬鐞嗗け璐ワ細", e);
+ dataSourceTransactionManager.rollback(transactionStatus);
+ }
+
+
+ return result;
+ }
+
+ /**
+ * 鏇存柊浠g悊娴�
+ * @param streamProxyItem
+ * @return
+ */
+ @Override
+ public boolean updateStreamProxy(StreamProxyItem streamProxyItem) {
+ TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
+ boolean result = false;
+ streamProxyItem.setStreamType("proxy");
+ try {
+ if (streamProxyMapper.update(streamProxyItem) > 0) {
+ if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
+ if (gbStreamMapper.updateByAppAndStream(streamProxyItem) == 0) {
+ //浜嬪姟鍥炴粴
+ dataSourceTransactionManager.rollback(transactionStatus);
+ return false;
+ }
+ }
+ } else {
+ //浜嬪姟鍥炴粴
+ dataSourceTransactionManager.rollback(transactionStatus);
+ return false;
+ }
+
+ dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦
+ result = true;
+ }catch (Exception e) {
+ e.printStackTrace();
+ dataSourceTransactionManager.rollback(transactionStatus);
+ }
+ return result;
}
@Override
@@ -239,7 +320,7 @@
if (jsonObject.getInteger("code") == 0) {
result = true;
streamProxy.setEnable(true);
- videoManagerStorager.updateStreamProxy(streamProxy);
+ updateStreamProxy(streamProxy);
}
}
return result;
@@ -253,7 +334,7 @@
JSONObject jsonObject = removeStreamProxyFromZlm(streamProxyDto);
if (jsonObject != null && jsonObject.getInteger("code") == 0) {
streamProxyDto.setEnable(false);
- result = videoManagerStorager.updateStreamProxy(streamProxyDto);
+ result = updateStreamProxy(streamProxyDto);
}
}
return result;
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
index 837e135..faac5c9 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -13,6 +13,7 @@
import com.genersoft.iot.vmp.service.IGbStreamService;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.IStreamPushService;
+import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.dao.*;
import com.genersoft.iot.vmp.utils.DateUtil;
@@ -181,7 +182,6 @@
@Override
public StreamPushItem getPush(String app, String streamId) {
-
return streamPushMapper.selectOne(app, streamId);
}
@@ -481,4 +481,34 @@
}
return true;
}
+
+ @Override
+ public void allStreamOffline() {
+ List<GbStream> onlinePushers = streamPushMapper.getOnlinePusherForGb();
+ if (onlinePushers.size() == 0) {
+ return;
+ }
+ streamPushMapper.setAllStreamOffline();
+
+ // 鍙戦�侀�氱煡
+ eventPublisher.catalogEventPublishForStream(null, onlinePushers, CatalogEvent.OFF);
+ }
+
+ @Override
+ public void offline(List<StreamPushItemFromRedis> offlineStreams) {
+ // 鏇存柊閮ㄥ垎璁惧绂荤嚎
+ List<GbStream> onlinePushers = streamPushMapper.getOnlinePusherForGbInList(offlineStreams);
+ streamPushMapper.offline(offlineStreams);
+ // 鍙戦�侀�氱煡
+ eventPublisher.catalogEventPublishForStream(null, onlinePushers, CatalogEvent.OFF);
+ }
+
+ @Override
+ public void online(List<StreamPushItemFromRedis> onlineStreams) {
+ // 鏇存柊閮ㄥ垎璁惧涓婄嚎streamPushService
+ List<GbStream> onlinePushers = streamPushMapper.getOfflinePusherForGbInList(onlineStreams);
+ streamPushMapper.online(onlineStreams);
+ // 鍙戦�侀�氱煡
+ eventPublisher.catalogEventPublishForStream(null, onlinePushers, CatalogEvent.ON);
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java
index 45cbcf6..0baad96 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java
@@ -14,38 +14,60 @@
public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPushExcelDto> {
- // 閿欒鏁版嵁鐨勫洖璋冿紝鐢ㄤ簬灏嗛敊璇暟鎹彂閫佺粰椤甸潰
+ /**
+ * 閿欒鏁版嵁鐨勫洖璋冿紝鐢ㄤ簬灏嗛敊璇暟鎹彂閫佺粰椤甸潰
+ */
private ErrorDataHandler errorDataHandler;
- // 鎺ㄦ祦鐨勪笟鍔$被鐢ㄤ簬瀛樺偍鏁版嵁
+ /**
+ * 鎺ㄦ祦鐨勪笟鍔$被鐢ㄤ簬瀛樺偍鏁版嵁
+ */
private IStreamPushService pushService;
- // 榛樿娴佸獟浣撹妭鐐笽D
+ /**
+ * 榛樿娴佸獟浣撹妭鐐笽D
+ */
private String defaultMediaServerId;
- // 鐢ㄤ簬瀛樺偍涓嶅姞杩囨护鐨勬墍鏈夋暟鎹�
+ /**
+ * 鐢ㄤ簬瀛樺偍涓嶅姞杩囨护鐨勬墍鏈夋暟鎹�
+ */
private List<StreamPushItem> streamPushItems = new ArrayList<>();
- // 鐢ㄤ簬瀛樺偍鏇村叿APP+Stream杩囨护鍚庣殑鏁版嵁锛屽彲浠ョ洿鎺ュ瓨鍏tream_push琛ㄤ笌gb_stream琛�
+ /**
+ * 鐢ㄤ簬瀛樺偍鏇村叿APP+Stream杩囨护鍚庣殑鏁版嵁锛屽彲浠ョ洿鎺ュ瓨鍏tream_push琛ㄤ笌gb_stream琛�
+ */
private Map<String,StreamPushItem> streamPushItemForSave = new HashMap<>();
- // 鐢ㄤ簬瀛樺偍鎸夌収APP+Stream涓篕EY锛� 骞冲彴ID+鐩綍Id 涓簐alue鐨勬暟鎹紝鐢ㄤ簬瀛樺偍鍒癵b_stream琛ㄥ悗鑾峰彇app+Stream瀵瑰簲鐨勫钩鍙颁笌鐩綍淇℃伅锛岀劧鍚庡瓨鍏ュ叧鑱旇〃
+ /**
+ * 鐢ㄤ簬瀛樺偍鎸夌収APP+Stream涓篕EY锛� 骞冲彴ID+鐩綍Id 涓簐alue鐨勬暟鎹紝鐢ㄤ簬瀛樺偍鍒癵b_stream琛ㄥ悗鑾峰彇app+Stream瀵瑰簲鐨勫钩鍙颁笌鐩綍淇℃伅锛岀劧鍚庡瓨鍏ュ叧鑱旇〃
+ */
private Map<String, List<String[]>> streamPushItemsForPlatform = new HashMap<>();
- // 鐢ㄤ簬鍒ゆ柇鏂囦欢鏄惁瀛樺湪閲嶅鐨刟pp+Stream+骞冲彴ID
+ /**
+ * 鐢ㄤ簬鍒ゆ柇鏂囦欢鏄惁瀛樺湪閲嶅鐨刟pp+Stream+骞冲彴ID
+ */
private Set<String> streamPushStreamSet = new HashSet<>();
- // 鐢ㄤ簬瀛樺偍APP+Stream->鍥芥爣ID 鐨勬暟鎹粨鏋�, 鏁版嵁涓�涓�瀵瑰簲锛屽叏灞�鍒ゆ柇APP+Stream->鍥芥爣ID鏄惁瀛樺湪涓嶅搴�
+ /**
+ * 鐢ㄤ簬瀛樺偍APP+Stream->鍥芥爣ID 鐨勬暟鎹粨鏋�, 鏁版嵁涓�涓�瀵瑰簲锛屽叏灞�鍒ゆ柇APP+Stream->鍥芥爣ID鏄惁瀛樺湪涓嶅搴�
+ */
private BiMap<String,String> gBMap = HashBiMap.create();
- // 璁板綍閿欒鐨凙PP+Stream
+ /**
+ * 璁板綍閿欒鐨凙PP+Stream
+ */
private List<String> errorStreamList = new ArrayList<>();
- // 璁板綍閿欒鐨勫浗鏍嘔D
+ /**
+ * 璁板綍閿欒鐨勫浗鏍嘔D
+ */
private List<String> errorGBList = new ArrayList<>();
- // 璇诲彇鏁伴噺璁℃暟鍣�
+ /**
+ * 璇诲彇鏁伴噺璁℃暟鍣�
+ */
private int loadedSize = 0;
public StreamPushUploadFileHandler(IStreamPushService pushService, String defaultMediaServerId, ErrorDataHandler errorDataHandler) {
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
index 79e6b26..b9811da 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
@@ -233,4 +233,9 @@
* @return
*/
StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream);
+
+ /**
+ * 鍙戦�乺edis娑堟伅 鏌ヨ鎵�鏈夋帹娴佽澶囩殑鐘舵��
+ */
+ void sendStreamPushRequestedMsgForStatus();
}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java
index 96d4d95..543d8c1 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java
@@ -27,22 +27,6 @@
public boolean exists(String deviceId);
/**
- * 娣诲姞璁惧閫氶亾
- *
- * @param deviceId 璁惧id
- * @param channel 閫氶亾
- */
- public void updateChannel(String deviceId, DeviceChannel channel);
-
- /**
- * 鎵归噺娣诲姞璁惧閫氶亾
- *
- * @param deviceId 璁惧id
- * @param channels 澶氫釜閫氶亾
- */
- public int updateChannels(String deviceId, List<DeviceChannel> channels);
-
- /**
* 寮�濮嬫挱鏀�
* @param deviceId 璁惧id
* @param channelId 閫氶亾ID
@@ -224,13 +208,6 @@
List<DeviceChannelInPlatform> queryChannelListInParentPlatform(String platformId);
- /**
- * 鏇存柊涓婄骇骞冲彴鐨勯�氶亾淇℃伅
- * @param platformId
- * @param channelReduces
- * @return
- */
- int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces, String catalogId);
/**
* 绉婚櫎涓婄骇骞冲彴鐨勯�氶亾淇℃伅
@@ -277,20 +254,6 @@
public int clearMobilePositionsByDeviceId(String deviceId);
/**
- * 鏂板浠g悊娴�
- * @param streamProxyDto
- * @return
- */
- public boolean addStreamProxy(StreamProxyItem streamProxyDto);
-
- /**
- * 鏇存柊浠g悊娴�
- * @param streamProxyDto
- * @return
- */
- public boolean updateStreamProxy(StreamProxyItem streamProxyDto);
-
- /**
* 绉婚櫎浠g悊娴�
* @param app
* @param stream
@@ -334,7 +297,7 @@
* @param platformId
* @return
*/
- List<GbStream> queryGbStreamListInPlatform(String platformId);
+ List<DeviceChannel> queryGbStreamListInPlatform(String platformId);
/**
* 鎵归噺鏇存柊鎺ㄦ祦鍒楄〃
@@ -445,7 +408,7 @@
int setDefaultCatalog(String platformId, String catalogId);
- List<PlatformCatalog> queryCatalogInPlatform(String serverGBId);
+ List<DeviceChannel> queryCatalogInPlatform(String serverGBId);
int delRelation(PlatformCatalog platformCatalog);
@@ -466,4 +429,8 @@
List<ChannelSourceInfo> getChannelSource(String platformId, String gbId);
void updateChannelPosition(DeviceChannel deviceChannel);
+
+ void cleanContentForPlatform(String serverGBId);
+
+ List<DeviceChannel> queryChannelWithCatalog(String serverGBId);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
index ffa5cf1..653e39d 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
@@ -329,5 +329,13 @@
@Select("select * from device_channel where deviceId=#{deviceId} and SUBSTRING(channelId, 11, 3)=#{typeCode}")
List<DeviceChannel> getBusinessGroups(String deviceId, String typeCode);
-
+ @Select("select dc.id, dc.channelId, dc.deviceId, dc.name, dc.manufacture,dc.model,dc.owner, pc.civilCode,dc.block, " +
+ " dc.address, '0' as parental,'0' as channelType, pc.id as parentId, dc.safetyWay, dc.registerWay,dc.certNum, dc.certifiable, " +
+ " dc.errCode,dc.endTime, dc.secrecy, dc.ipAddress, dc.port, dc.PTZType, dc.password, dc.status, " +
+ " dc.longitudeWgs84 as longitude, dc.latitudeWgs84 as latitude, pc.businessGroupId " +
+ " from device_channel dc" +
+ " left join platform_gb_channel pgc on dc.id = pgc.deviceChannelId" +
+ " left join platform_catalog pc on pgc.catalogId = pc.id and pgc.platformId = pc.platformId" +
+ " where pgc.platformId=#{serverGBId}")
+ List<DeviceChannel> queryChannelWithCatalog(String serverGBId);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
index e8d23a8..73fff57 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.storager.dao;
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
@@ -15,10 +16,10 @@
public interface GbStreamMapper {
@Insert("REPLACE INTO gb_stream (app, stream, gbId, name, " +
- "longitude, latitude, streamType, mediaServerId, status, createTime) VALUES" +
+ "longitude, latitude, streamType, mediaServerId, createTime) VALUES" +
"('${app}', '${stream}', '${gbId}', '${name}', " +
"'${longitude}', '${latitude}', '${streamType}', " +
- "'${mediaServerId}', ${status}, '${createTime}')")
+ "'${mediaServerId}', '${createTime}')")
@Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId")
int add(GbStream gbStream);
@@ -30,8 +31,7 @@
"streamType=#{streamType}," +
"longitude=#{longitude}, " +
"latitude=#{latitude}," +
- "mediaServerId=#{mediaServerId}," +
- "status=${status} " +
+ "mediaServerId=#{mediaServerId}" +
"WHERE app=#{app} AND stream=#{stream}")
int updateByAppAndStream(GbStream gbStream);
@@ -43,8 +43,7 @@
"streamType=#{streamType}," +
"longitude=#{longitude}, " +
"latitude=#{latitude}," +
- "mediaServerId=#{mediaServerId}," +
- "status=${status} " +
+ "mediaServerId=#{mediaServerId}" +
"WHERE gbStreamId=#{gbStreamId}")
int update(GbStream gbStream);
@@ -60,12 +59,10 @@
" <if test='catalogId == null'> AND gs.gbStreamId not in" +
"(select pgs.gbStreamId from platform_gb_stream pgs where pgs.platformId = #{platformId}) </if> " +
" <if test='query != null'> AND (gs.app LIKE '%${query}%' OR gs.stream LIKE '%${query}%' OR gs.gbId LIKE '%${query}%' OR gs.name LIKE '%${query}%')</if> " +
- " <if test='pushing == true' > AND gs.status=1</if>" +
- " <if test='pushing == false' > AND gs.status=0</if>" +
" <if test='mediaServerId != null' > AND gs.mediaServerId=#{mediaServerId} </if>" +
" order by gs.gbStreamId asc " +
"</script>")
- List<GbStream> selectAll(String platformId, String catalogId, String query, Boolean pushing, String mediaServerId);
+ List<GbStream> selectAll(String platformId, String catalogId, String query, String mediaServerId);
@Select("SELECT * FROM gb_stream WHERE app=#{app} AND stream=#{stream}")
GbStream selectOne(String app, String stream);
@@ -78,10 +75,18 @@
"WHERE gs.gbId = '${gbId}' AND pgs.platformId = '${platformId}'")
GbStream queryStreamInPlatform(String platformId, String gbId);
- @Select("SELECT gs.*, pgs.platformId as platformId, pgs.catalogId as catalogId FROM gb_stream gs " +
- "LEFT JOIN platform_gb_stream pgs ON gs.gbStreamId = pgs.gbStreamId " +
- "WHERE pgs.platformId = #{platformId}")
- List<GbStream> queryGbStreamListInPlatform(String platformId);
+ @Select("select gt.gbId as channelId, gt.name, 'wvp-pro' as manufacture, st.status, gt.longitude, gt.latitude, pc.id as parentId," +
+ " '1' as registerWay, pc.civilCode, 'live' as model, 'wvp-pro' as owner, '0' as parental,'0' as secrecy" +
+ " from gb_stream gt " +
+ " left join (" +
+ " select sp.status, sp.app, sp.stream from stream_push sp" +
+ " union all" +
+ " select spxy.status, spxy.app, spxy.stream from stream_proxy spxy" +
+ " ) st on st.app = gt.app and st.stream = gt.stream" +
+ " left join platform_gb_stream pgs on gt.gbStreamId = pgs.gbStreamId" +
+ " left join platform_catalog pc on pgs.catalogId = pc.id and pgs.platformId = pc.platformId" +
+ " where pgs.platformId=#{platformId}")
+ List<DeviceChannel> queryGbStreamListInPlatform(String platformId);
@Select("SELECT gs.* FROM gb_stream gs LEFT JOIN platform_gb_stream pgs " +
@@ -110,12 +115,12 @@
@Insert("<script> " +
"INSERT IGNORE into gb_stream " +
"(app, stream, gbId, name, " +
- "longitude, latitude, streamType, mediaServerId, status, createTime)" +
+ "longitude, latitude, streamType, mediaServerId, createTime)" +
"values " +
"<foreach collection='subList' index='index' item='item' separator=','> " +
"('${item.app}', '${item.stream}', '${item.gbId}', '${item.name}', " +
"'${item.longitude}', '${item.latitude}', '${item.streamType}', " +
- "'${item.mediaServerId}', ${item.status}, '${item.createTime}') "+
+ "'${item.mediaServerId}', '${item.createTime}') "+
"</foreach> " +
"</script>")
@Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId")
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
index b57e103..0db6498 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
@@ -16,10 +16,10 @@
@Insert("INSERT INTO parent_platform (enable, name, serverGBId, serverGBDomain, serverIP, serverPort, deviceGBId, deviceIp, " +
" devicePort, username, password, expires, keepTimeout, transport, characterSet, ptz, rtcp, " +
- " status, shareAllLiveStream, startOfflinePush, catalogId, administrativeDivision, catalogGroup, createTime, updateTime) " +
+ " status, shareAllLiveStream, startOfflinePush, catalogId, administrativeDivision, catalogGroup, createTime, updateTime, treeType) " +
" VALUES (${enable}, '${name}', '${serverGBId}', '${serverGBDomain}', '${serverIP}', ${serverPort}, '${deviceGBId}', '${deviceIp}', " +
" '${devicePort}', '${username}', '${password}', '${expires}', '${keepTimeout}', '${transport}', '${characterSet}', ${ptz}, ${rtcp}, " +
- " ${status}, ${shareAllLiveStream}, ${startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup}, #{createTime}, #{updateTime})")
+ " ${status}, ${shareAllLiveStream}, ${startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup}, #{createTime}, #{updateTime}, #{treeType})")
int addParentPlatform(ParentPlatform parentPlatform);
@Update("UPDATE parent_platform " +
@@ -47,6 +47,7 @@
"administrativeDivision=#{administrativeDivision}, " +
"createTime=#{createTime}, " +
"updateTime=#{updateTime}, " +
+ "treeType=#{treeType}, " +
"catalogId=#{catalogId} " +
"WHERE id=#{id}")
int updateParentPlatform(ParentPlatform parentPlatform);
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformCatalogMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformCatalogMapper.java
index 95015bd..4ed0f32 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformCatalogMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformCatalogMapper.java
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.storager.dao;
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog;
import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream;
@@ -14,8 +15,8 @@
@Repository
public interface PlatformCatalogMapper {
- @Insert("INSERT INTO platform_catalog (id, name, platformId, parentId) VALUES" +
- "(#{id}, #{name}, #{platformId}, #{parentId})")
+ @Insert("INSERT INTO platform_catalog (id, name, platformId, parentId, civilCode, businessGroupId) VALUES" +
+ "(#{id}, #{name}, #{platformId}, #{parentId}, #{civilCode}, #{businessGroupId})")
int add(PlatformCatalog platformCatalog);
@Delete("DELETE FROM platform_catalog WHERE id=#{id}")
@@ -44,4 +45,12 @@
@Select("SELECT pc.* FROM platform_catalog pc WHERE pc.id = (SELECT pp.catalogId from parent_platform pp WHERE pp.serverGBId=#{platformId})")
PlatformCatalog selectDefaultByPlatFormId(String platformId);
+
+
+ @Select("SELECT pc.* FROM platform_catalog pc WHERE pc.id = #{id}")
+ PlatformCatalog selectParentCatalog(String id);
+
+ @Select("SELECT pc.id as channelId, pc.name, pc.civilCode, pc.businessGroupId,'0' as parental, pc.parentId " +
+ " FROM platform_catalog pc WHERE pc.platformId=#{platformId}")
+ List<DeviceChannel> queryCatalogInPlatform(String platformId);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
index 6c1e72d..895316d 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
@@ -2,6 +2,7 @@
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
+import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
import org.apache.ibatis.annotations.*;
// import org.omg.PortableInterceptor.INACTIVE;
import org.springframework.stereotype.Repository;
@@ -87,10 +88,10 @@
@Insert("<script>" +
"Insert IGNORE INTO stream_push (app, stream, totalReaderCount, originType, originTypeStr, " +
- "createTime, aliveSecond, mediaServerId) " +
+ "createTime, aliveSecond, mediaServerId, status) " +
"VALUES <foreach collection='streamPushItems' item='item' index='index' separator=','>" +
"( '${item.app}', '${item.stream}', '${item.totalReaderCount}', #{item.originType}, " +
- "'${item.originTypeStr}',#{item.createTime}, #{item.aliveSecond}, '${item.mediaServerId}' )" +
+ "'${item.originTypeStr}',#{item.createTime}, #{item.aliveSecond}, '${item.mediaServerId}', ${item.status} )" +
" </foreach>" +
"</script>")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
@@ -117,4 +118,45 @@
"SET status=#{status} " +
"WHERE mediaServerId=#{mediaServerId}")
void updateStatusByMediaServerId(String mediaServerId, boolean status);
+
+
+ @Select("<script> "+
+ "SELECT gs.* FROM stream_push sp left join gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream " +
+ "where sp.status = 1 and (gs.app, gs.stream) in (" +
+ "<foreach collection='offlineStreams' item='item' separator=','>" +
+ "(#{item.app}, #{item.stream}) " +
+ ")</foreach>" +
+ "</script>")
+ List<GbStream> getOnlinePusherForGbInList(List<StreamPushItemFromRedis> offlineStreams);
+
+ @Update("<script> "+
+ "UPDATE stream_push SET status=0 where (app, stream) in (" +
+ "<foreach collection='offlineStreams' item='item' separator=','>" +
+ "(#{item.app}, #{item.stream}) " +
+ ")</foreach>" +
+ "</script>")
+ void offline(List<StreamPushItemFromRedis> offlineStreams);
+
+ @Select("<script> "+
+ "SELECT * FROM stream_push sp left join gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream " +
+ "where sp.status = 0 and (gs.app, gs.stream) in (" +
+ "<foreach collection='onlineStreams' item='item' separator=','>" +
+ "(#{item.app}, #{item.stream}) " +
+ "</foreach>" +
+ ") </script>")
+ List<GbStream> getOfflinePusherForGbInList(List<StreamPushItemFromRedis> onlineStreams);
+
+ @Update("<script> "+
+ "UPDATE stream_push SET status=1 where (app, stream) in (" +
+ "<foreach collection='onlineStreams' item='item' separator=','>" +
+ "(#{item.app}, #{item.stream}) " +
+ ")</foreach>" +
+ "</script>")
+ void online(List<StreamPushItemFromRedis> onlineStreams);
+
+ @Select("SELECT gs.* FROM stream_push sp left join gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream where sp.status = 1")
+ List<GbStream> getOnlinePusherForGb();
+
+ @Update("UPDATE stream_push SET status=0")
+ void setAllStreamOffline();
}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
index d279847..8e98059 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -707,4 +707,12 @@
}
+ @Override
+ public void sendStreamPushRequestedMsgForStatus() {
+ String key = VideoManagerConstants.VM_MSG_GET_ALL_ONLINE_REQUESTED;
+ logger.info("[redis 閫氱煡]鑾峰彇鎵�鏈夋帹娴佽澶囩殑鐘舵��");
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put(key, key);
+ redis.convertAndSend(key, jsonObject);
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
index c4d1c9e..a839f72 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
@@ -48,11 +48,12 @@
@Autowired
SipConfig sipConfig;
- @Autowired
- DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
+
+ @Autowired
+ DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
private DeviceMapper deviceMapper;
@@ -102,96 +103,6 @@
@Override
public boolean exists(String deviceId) {
return deviceMapper.getDeviceByDeviceId(deviceId) != null;
- }
-
- @Override
- public synchronized void updateChannel(String deviceId, DeviceChannel channel) {
- String channelId = channel.getChannelId();
- channel.setDeviceId(deviceId);
- StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId);
- if (streamInfo != null) {
- channel.setStreamId(streamInfo.getStream());
- }
- String now = DateUtil.getNow();
- channel.setUpdateTime(now);
- DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(deviceId, channelId);
- if (deviceChannel == null) {
- channel.setCreateTime(now);
- deviceChannelMapper.add(channel);
- }else {
- deviceChannelMapper.update(channel);
- }
- deviceChannelMapper.updateChannelSubCount(deviceId,channel.getParentId());
- }
-
- @Override
- public int updateChannels(String deviceId, List<DeviceChannel> channels) {
- List<DeviceChannel> addChannels = new ArrayList<>();
- List<DeviceChannel> updateChannels = new ArrayList<>();
- HashMap<String, DeviceChannel> channelsInStore = new HashMap<>();
- if (channels != null && channels.size() > 0) {
- List<DeviceChannel> channelList = deviceChannelMapper.queryChannels(deviceId, null, null, null, null);
- if (channelList.size() == 0) {
- for (DeviceChannel channel : channels) {
- channel.setDeviceId(deviceId);
- StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channel.getChannelId());
- if (streamInfo != null) {
- channel.setStreamId(streamInfo.getStream());
- }
- String now = DateUtil.getNow();
- channel.setUpdateTime(now);
- channel.setCreateTime(now);
- addChannels.add(channel);
- }
- }else {
- for (DeviceChannel deviceChannel : channelList) {
- channelsInStore.put(deviceChannel.getChannelId(), deviceChannel);
- }
- for (DeviceChannel channel : channels) {
- channel.setDeviceId(deviceId);
- StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channel.getChannelId());
- if (streamInfo != null) {
- channel.setStreamId(streamInfo.getStream());
- }
- String now = DateUtil.getNow();
- channel.setUpdateTime(now);
- if (channelsInStore.get(channel.getChannelId()) != null) {
- updateChannels.add(channel);
- }else {
- addChannels.add(channel);
- channel.setCreateTime(now);
- }
- }
- }
- int limitCount = 300;
- if (addChannels.size() > 0) {
- if (addChannels.size() > limitCount) {
- for (int i = 0; i < addChannels.size(); i += limitCount) {
- int toIndex = i + limitCount;
- if (i + limitCount > addChannels.size()) {
- toIndex = addChannels.size();
- }
- deviceChannelMapper.batchAdd(addChannels.subList(i, toIndex));
- }
- }else {
- deviceChannelMapper.batchAdd(addChannels);
- }
- }
- if (updateChannels.size() > 0) {
- if (updateChannels.size() > limitCount) {
- for (int i = 0; i < updateChannels.size(); i += limitCount) {
- int toIndex = i + limitCount;
- if (i + limitCount > updateChannels.size()) {
- toIndex = updateChannels.size();
- }
- deviceChannelMapper.batchUpdate(updateChannels.subList(i, toIndex));
- }
- }else {
- deviceChannelMapper.batchUpdate(updateChannels);
- }
- }
- }
- return addChannels.size() + updateChannels.size();
}
@Override
@@ -596,36 +507,6 @@
return deviceChannelMapper.queryChannelByPlatformId(platformId);
}
- @Override
- public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces, String catalogId) {
-
- Map<Integer, ChannelReduce> deviceAndChannels = new HashMap<>();
- for (ChannelReduce channelReduce : channelReduces) {
- channelReduce.setCatalogId(catalogId);
- deviceAndChannels.put(channelReduce.getId(), channelReduce);
- }
- List<Integer> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet());
- // 鏌ヨ褰撳墠宸茬粡瀛樺湪鐨�
- List<Integer> channelIds = platformChannelMapper.findChannelRelatedPlatform(platformId, channelReduces);
- if (deviceAndChannelList != null) {
- deviceAndChannelList.removeAll(channelIds);
- }
- for (Integer channelId : channelIds) {
- deviceAndChannels.remove(channelId);
- }
- List<ChannelReduce> channelReducesToAdd = new ArrayList<>(deviceAndChannels.values());
- // 瀵瑰墿涓嬬殑鏁版嵁杩涜瀛樺偍
- int result = 0;
- if (channelReducesToAdd.size() > 0) {
- result = platformChannelMapper.addChannels(platformId, channelReducesToAdd);
- // TODO 鍚庣画缁欏钩鍙板鍔犳帶鍒跺紑鍏充互鎺у埗鏄惁鍝嶅簲鐩綍璁㈤槄
- List<DeviceChannel> deviceChannelList = getDeviceChannelListByChannelReduceList(channelReducesToAdd, catalogId);
- eventPublisher.catalogEventPublish(platformId, deviceChannelList, CatalogEvent.ADD);
- }
-
- return result;
- }
-
@Override
public int delChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
@@ -701,77 +582,6 @@
return deviceMobilePositionMapper.clearMobilePositionsByDeviceId(deviceId);
}
- /**
- * 鏂板浠g悊娴�
- * @param streamProxyItem
- * @return
- */
- @Override
- public boolean addStreamProxy(StreamProxyItem streamProxyItem) {
- TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
- boolean result = false;
- streamProxyItem.setStreamType("proxy");
- streamProxyItem.setStatus(true);
- String now = DateUtil.getNow();
- streamProxyItem.setCreateTime(now);
- try {
- if (streamProxyMapper.add(streamProxyItem) > 0) {
- if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
- if (gbStreamMapper.add(streamProxyItem) < 0) {
- //浜嬪姟鍥炴粴
- dataSourceTransactionManager.rollback(transactionStatus);
- return false;
- }
- }
- }else {
- //浜嬪姟鍥炴粴
- dataSourceTransactionManager.rollback(transactionStatus);
- return false;
- }
- result = true;
- dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦
- }catch (Exception e) {
- logger.error("鍚戞暟鎹簱娣诲姞娴佷唬鐞嗗け璐ワ細", e);
- dataSourceTransactionManager.rollback(transactionStatus);
- }
-
-
- return result;
- }
-
- /**
- * 鏇存柊浠g悊娴�
- * @param streamProxyItem
- * @return
- */
- @Override
- public boolean updateStreamProxy(StreamProxyItem streamProxyItem) {
- TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
- boolean result = false;
- streamProxyItem.setStreamType("proxy");
- try {
- if (streamProxyMapper.update(streamProxyItem) > 0) {
- if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
- if (gbStreamMapper.updateByAppAndStream(streamProxyItem) == 0) {
- //浜嬪姟鍥炴粴
- dataSourceTransactionManager.rollback(transactionStatus);
- return false;
- }
- }
- } else {
- //浜嬪姟鍥炴粴
- dataSourceTransactionManager.rollback(transactionStatus);
- return false;
- }
-
- dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦
- result = true;
- }catch (Exception e) {
- e.printStackTrace();
- dataSourceTransactionManager.rollback(transactionStatus);
- }
- return result;
- }
/**
* 绉婚櫎浠g悊娴�
@@ -824,7 +634,7 @@
* @return
*/
@Override
- public List<GbStream> queryGbStreamListInPlatform(String platformId) {
+ public List<DeviceChannel> queryGbStreamListInPlatform(String platformId) {
return gbStreamMapper.queryGbStreamListInPlatform(platformId);
}
@@ -910,6 +720,7 @@
return result;
}
+ @Override
public int mediaOnline(String app, String stream) {
GbStream gbStream = gbStreamMapper.selectOne(app, stream);
int result;
@@ -954,12 +765,39 @@
@Override
public int addCatalog(PlatformCatalog platformCatalog) {
+ ParentPlatform platform = platformMapper.getParentPlatByServerGBId(platformCatalog.getPlatformId());
+ if (platform == null) {
+ return 0;
+ }
+ if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)) {
+ if (platformCatalog.getPlatformId().equals(platformCatalog.getParentId())) {
+ // 绗竴灞傝妭鐐�
+ platformCatalog.setBusinessGroupId(platformCatalog.getId());
+ }else {
+ // 鑾峰彇椤跺眰鐨�
+ PlatformCatalog topCatalog = getTopCatalog(platformCatalog.getParentId(), platformCatalog.getPlatformId());
+ platformCatalog.setBusinessGroupId(topCatalog.getId());
+ }
+ }
+ if (platform.getTreeType().equals(TreeType.CIVIL_CODE)) {
+ platformCatalog.setCivilCode(platformCatalog.getId());
+ }
+
int result = catalogMapper.add(platformCatalog);
if (result > 0) {
DeviceChannel deviceChannel = getDeviceChannelByCatalog(platformCatalog);
eventPublisher.catalogEventPublish(platformCatalog.getPlatformId(), deviceChannel, CatalogEvent.ADD);
}
return result;
+ }
+
+ private PlatformCatalog getTopCatalog(String id, String platformId) {
+ PlatformCatalog catalog = catalogMapper.selectParentCatalog(id);
+ if (catalog.getParentId().equals(platformId)) {
+ return catalog;
+ }else {
+ return getTopCatalog(catalog.getParentId(), platformId);
+ }
}
@Override
@@ -1032,8 +870,8 @@
}
@Override
- public List<PlatformCatalog> queryCatalogInPlatform(String platformId) {
- return catalogMapper.selectByPlatForm(platformId);
+ public List<DeviceChannel> queryCatalogInPlatform(String platformId) {
+ return catalogMapper.queryCatalogInPlatform(platformId);
}
@Override
@@ -1076,20 +914,24 @@
}
private DeviceChannel getDeviceChannelByCatalog(PlatformCatalog catalog) {
- ParentPlatform parentPlatByServerGBId = platformMapper.getParentPlatByServerGBId(catalog.getPlatformId());
+ ParentPlatform platform = platformMapper.getParentPlatByServerGBId(catalog.getPlatformId());
DeviceChannel deviceChannel = new DeviceChannel();
deviceChannel.setChannelId(catalog.getId());
deviceChannel.setName(catalog.getName());
deviceChannel.setLongitude(0.0);
deviceChannel.setLatitude(0.0);
- deviceChannel.setDeviceId(parentPlatByServerGBId.getDeviceGBId());
+ deviceChannel.setDeviceId(platform.getDeviceGBId());
deviceChannel.setManufacture("wvp-pro");
deviceChannel.setStatus(1);
deviceChannel.setParental(1);
- deviceChannel.setParentId(catalog.getParentId());
+
deviceChannel.setRegisterWay(1);
// 琛屾斂鍖哄垝搴旇鏄疍omain鐨勫墠鍏綅
- deviceChannel.setCivilCode(parentPlatByServerGBId.getAdministrativeDivision());
+ if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)) {
+ deviceChannel.setParentId(catalog.getParentId());
+ deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId());
+ }
+
deviceChannel.setModel("live");
deviceChannel.setOwner("wvp-pro");
deviceChannel.setSecrecy("0");
@@ -1151,4 +993,27 @@
deviceChannelMapper.updatePosition(deviceChannel);
}
+
+ @Override
+ public void cleanContentForPlatform(String serverGBId) {
+// List<PlatformCatalog> catalogList = catalogMapper.selectByPlatForm(serverGBId);
+// if (catalogList.size() > 0) {
+// int result = catalogMapper.delByPlatformId(serverGBId);
+// if (result > 0) {
+// List<DeviceChannel> deviceChannels = new ArrayList<>();
+// for (PlatformCatalog catalog : catalogList) {
+// deviceChannels.add(getDeviceChannelByCatalog(catalog));
+// }
+// eventPublisher.catalogEventPublish(serverGBId, deviceChannels, CatalogEvent.DEL);
+// }
+// }
+ catalogMapper.delByPlatformId(serverGBId);
+ platformChannelMapper.delByPlatformId(serverGBId);
+ platformGbStreamMapper.delByPlatformId(serverGBId);
+ }
+
+ @Override
+ public List<DeviceChannel> queryChannelWithCatalog(String serverGBId) {
+ return deviceChannelMapper.queryChannelWithCatalog(serverGBId);
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
index 767e9c4..29f9d88 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
@@ -12,6 +12,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
+import com.genersoft.iot.vmp.service.IDeviceChannelService;
import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
@@ -51,6 +52,9 @@
@Autowired
private IVideoManagerStorage storager;
+
+ @Autowired
+ private IDeviceChannelService deviceChannelService;
@Autowired
private IRedisCatchStorage redisCatchStorage;
@@ -280,7 +284,7 @@
})
@PostMapping("/channel/update/{deviceId}")
public ResponseEntity<PageInfo> updateChannel(@PathVariable String deviceId,DeviceChannel channel){
- storager.updateChannel(deviceId, channel);
+ deviceChannelService.updateChannel(deviceId, channel);
return new ResponseEntity<>(null,HttpStatus.OK);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
index 300546f..fba050b 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
@@ -44,7 +44,6 @@
@ApiImplicitParam(name = "platformId", value = "骞冲彴ID", required = true , dataTypeClass = String.class),
@ApiImplicitParam(name = "catalogId", value = "鐩綍ID", required = false , dataTypeClass = String.class),
@ApiImplicitParam(name="query", value = "鏌ヨ鍐呭", required = false , dataTypeClass = String.class),
- @ApiImplicitParam(name="pushing", value = "鏄惁姝e湪鎺ㄦ祦", required = false , dataTypeClass = Boolean.class),
@ApiImplicitParam(name="mediaServerId", value = "娴佸獟浣揑D", required = false , dataTypeClass = String.class),
})
@@ -55,7 +54,6 @@
@RequestParam(required = true)String platformId,
@RequestParam(required = false)String catalogId,
@RequestParam(required = false)String query,
- @RequestParam(required = false)Boolean pushing,
@RequestParam(required = false)String mediaServerId){
if (StringUtils.isEmpty(catalogId)) {
catalogId = null;
@@ -69,7 +67,7 @@
// catalogId 涓簄ull 鏌ヨ鏈湪骞冲彴涓嬪垎閰嶇殑鏁版嵁
// catalogId 涓嶄负null 鏌ヨ骞冲彴涓嬭繖涓紝鐩綍涓嬬殑閫氶亾
- return gbStreamService.getAll(page, count, platformId, catalogId, query, pushing, mediaServerId);
+ return gbStreamService.getAll(page, count, platformId, catalogId, query, mediaServerId);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
index 44de6c9..8d2278e 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -9,6 +9,7 @@
import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog;
import com.genersoft.iot.vmp.gb28181.bean.SubscribeHolder;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
+import com.genersoft.iot.vmp.service.IPlatformChannelService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
@@ -47,6 +48,9 @@
@Autowired
private IVideoManagerStorage storager;
+
+ @Autowired
+ private IPlatformChannelService platformChannelService;
@Autowired
private IRedisCatchStorage redisCatchStorage;
@@ -236,6 +240,12 @@
parentPlatform.setCharacterSet(parentPlatform.getCharacterSet().toUpperCase());
ParentPlatform parentPlatformOld = storager.queryParentPlatByServerGBId(parentPlatform.getServerGBId());
parentPlatform.setUpdateTime(DateUtil.getNow());
+ if (!parentPlatformOld.getTreeType().equals(parentPlatform.getTreeType())) {
+ // 鐩綍缁撴瀯鍙戠敓鍙樺寲锛屾竻绌轰箣鍓嶇殑鍏宠仈鍏崇郴
+ logger.info("淇濆瓨骞冲彴{}鏃跺彂鐜扮洰褰曠粨鏋勫彉鍖栵紝娓呯┖鍏宠仈鍏崇郴", parentPlatform.getDeviceGBId());
+ storager.cleanContentForPlatform(parentPlatform.getServerGBId());
+
+ }
boolean updateResult = storager.updateParentPlatform(parentPlatform);
if (updateResult) {
@@ -256,6 +266,8 @@
}
} else if (parentPlatformOld != null && parentPlatformOld.isEnable() && !parentPlatform.isEnable()) { // 鍏抽棴鍚敤鏃舵敞閿�
commanderForPlatform.unregister(parentPlatformOld, null, null);
+ // 鍋滄璁㈤槄鐩稿叧鐨勫畾鏃朵换鍔�
+ subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId());
}
wvpResult.setCode(0);
wvpResult.setMsg("success");
@@ -405,7 +417,7 @@
if (logger.isDebugEnabled()) {
logger.debug("缁欎笂绾у钩鍙版坊鍔犲浗鏍囬�氶亾API璋冪敤");
}
- int result = storager.updateChannelForGB(param.getPlatformId(), param.getChannelReduces(), param.getCatalogId());
+ int result = platformChannelService.updateChannelForGB(param.getPlatformId(), param.getChannelReduces(), param.getCatalogId());
return new ResponseEntity<>(String.valueOf(result > 0), HttpStatus.OK);
}
@@ -484,7 +496,6 @@
}
PlatformCatalog platformCatalogInStore = storager.getCatalog(platformCatalog.getId());
WVPResult<List<PlatformCatalog>> result = new WVPResult<>();
-
if (platformCatalogInStore != null) {
result.setCode(-1);
diff --git a/web_src/src/components/ParentPlatformList.vue b/web_src/src/components/ParentPlatformList.vue
index 3ae0b65..23bebdb 100644
--- a/web_src/src/components/ParentPlatformList.vue
+++ b/web_src/src/components/ParentPlatformList.vue
@@ -143,7 +143,7 @@
});
},
chooseChannel: function(platform) {
- this.$refs.chooseChannelDialog.openDialog(platform.serverGBId, platform.name, platform.catalogId, this.initData)
+ this.$refs.chooseChannelDialog.openDialog(platform.serverGBId, platform.name, platform.catalogId, platform.treeType, this.initData)
},
initData: function() {
this.getPlatformList();
diff --git a/web_src/src/components/PushVideoList.vue b/web_src/src/components/PushVideoList.vue
index 0253c1e..fc645cf 100644
--- a/web_src/src/components/PushVideoList.vue
+++ b/web_src/src/components/PushVideoList.vue
@@ -56,7 +56,7 @@
<el-table-column label="寮�濮嬫椂闂�" min-width="200">
<template slot-scope="scope">
<el-button-group>
- {{ dateFormat(parseInt(scope.row.createStamp)) }}
+ {{ scope.row.pushTime == null? "-":scope.row.pushTime }}
</el-button-group>
</template>
</el-table-column>
@@ -241,19 +241,6 @@
}).catch(function (error) {
console.error(error);
});
- },
- dateFormat: function (/** timestamp=0 **/) {
- let ts = arguments[0] || 0;
- let t, y, m, d, h, i, s;
- t = ts ? new Date(ts) : new Date();
- y = t.getFullYear();
- m = t.getMonth() + 1;
- d = t.getDate();
- h = t.getHours();
- i = t.getMinutes();
- s = t.getSeconds();
- // 鍙牴鎹渶瑕佸湪杩欓噷瀹氫箟鏃堕棿鏍煎紡
- return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d) + ' ' + (h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s);
},
importChannel: function () {
this.$refs.importChannel.openDialog(() => {
diff --git a/web_src/src/components/dialog/catalogEdit.vue b/web_src/src/components/dialog/catalogEdit.vue
index 13cabfb..22ff181 100644
--- a/web_src/src/components/dialog/catalogEdit.vue
+++ b/web_src/src/components/dialog/catalogEdit.vue
@@ -49,11 +49,43 @@
props: ['platformId'],
created() {},
data() {
+ let checkId = (rule, value, callback) => {
+ console.log("checkId")
+ console.log(this.treeType)
+ console.log(rule)
+ console.log(value)
+ console.log(value.length)
+ console.log(this.level)
+ if (!value) {
+ return callback(new Error('缂栧彿涓嶈兘涓虹┖'));
+ }
+ if (this.treeType === "BusinessGroup" && value.length !== 20) {
+ return callback(new Error('缂栧彿蹇呴』鐢�20浣嶆暟瀛楃粍鎴�'));
+ }
+ if (this.treeType === "CivilCode" && value.length <= 8 && value.length%2 !== 0) {
+ return callback(new Error('琛屾斂鍖哄垝蹇呴』鏄叓浣嶄互涓嬬殑鍋舵暟涓暟瀛楃粍鎴�'));
+ }
+ if (this.treeType === "BusinessGroup") {
+ let catalogType = value.substring(10, 13);
+ console.log(catalogType)
+ // 216 涓鸿櫄鎷熺粍缁� 215 涓轰笟鍔″垎缁勶紱鐩綍绗竴绾у繀椤讳负涓氬姟鍒嗙粍锛� 涓氬姟鍒嗙粍涓嬩负铏氭嫙缁勭粐锛岃櫄鎷熺粍缁囦笅鍙互鏈夊叾浠栬櫄鎷熺粍缁�
+ if (this.level === 1 && catalogType !== "215") {
+ return callback(new Error('涓氬姟鍒嗙粍妯″紡涓嬬涓�灞傜洰褰曠殑缂栧彿10鍒�13浣嶅繀椤讳负215'));
+ }
+ if (this.level > 1 && catalogType !== "216") {
+ return callback(new Error('涓氬姟鍒嗙粍妯″紡涓嬬涓�灞備互涓嬬洰褰曠殑缂栧彿10鍒�13浣嶅繀椤讳负216'));
+ }
+
+ }
+ callback();
+ }
return {
submitCallback: null,
showDialog: false,
isLoging: false,
isEdit: false,
+ treeType: null,
+ level: 0,
form: {
id: null,
name: null,
@@ -62,12 +94,12 @@
},
rules: {
name: [{ required: true, message: "璇疯緭鍏ュ悕绉�", trigger: "blur" }],
- id: [{ required: true, message: "璇疯緭鍏D", trigger: "blur" }]
+ id: [{ trigger: "blur",validator: checkId }]
},
};
},
methods: {
- openDialog: function (isEdit, id, name, parentId, callback) {
+ openDialog: function (isEdit, id, name, parentId, treeType, level, callback) {
console.log("parentId: " + parentId)
console.log(this.form)
this.isEdit = isEdit;
@@ -77,6 +109,8 @@
this.form.parentId = parentId;
this.showDialog = true;
this.submitCallback = callback;
+ this.treeType = treeType;
+ this.level = level;
},
onSubmit: function () {
console.log("onSubmit");
diff --git a/web_src/src/components/dialog/chooseChannel.vue b/web_src/src/components/dialog/chooseChannel.vue
index 599921e..cd8132a 100644
--- a/web_src/src/components/dialog/chooseChannel.vue
+++ b/web_src/src/components/dialog/chooseChannel.vue
@@ -8,7 +8,7 @@
<el-tab-pane label="鐩綍缁撴瀯" name="catalog">
<el-container>
<el-main v-bind:style="{backgroundColor: '#FFF', maxHeight: winHeight + 'px'}">
- <chooseChannelForCatalog ref="chooseChannelForCatalog" :platformId=platformId :platformName=platformName :defaultCatalogId=defaultCatalogId :catalogIdChange="catalogIdChange" ></chooseChannelForCatalog>
+ <chooseChannelForCatalog ref="chooseChannelForCatalog" :platformId=platformId :platformName=platformName :defaultCatalogId=defaultCatalogId :catalogIdChange="catalogIdChange" :treeType=treeType ></chooseChannelForCatalog>
</el-main>
</el-container>
</el-tab-pane>
@@ -66,18 +66,20 @@
platformName: "",
defaultCatalogId: "",
showDialog: false,
+ treeType: null,
chooseData: {},
winHeight: window.innerHeight - 250,
};
},
methods: {
- openDialog(platformId, platformName, defaultCatalogId, closeCallback) {
+ openDialog(platformId, platformName, defaultCatalogId, treeType, closeCallback) {
this.platformId = platformId
this.platformName = platformName
this.defaultCatalogId = defaultCatalogId
this.showDialog = true
this.closeCallback = closeCallback
+ this.treeType = treeType
},
tabClick (tab, event){
diff --git a/web_src/src/components/dialog/chooseChannelForCatalog.vue b/web_src/src/components/dialog/chooseChannelForCatalog.vue
index a0cb98c..86fb48d 100644
--- a/web_src/src/components/dialog/chooseChannelForCatalog.vue
+++ b/web_src/src/components/dialog/chooseChannelForCatalog.vue
@@ -38,7 +38,7 @@
import catalogEdit from './catalogEdit.vue'
export default {
name: 'chooseChannelForCatalog',
- props: ['platformId', 'platformName', 'defaultCatalogId', 'catalogIdChange'],
+ props: ['platformId', 'platformName', 'defaultCatalogId', 'catalogIdChange', 'treeType'],
created() {
this.chooseId = this.defaultCatalogId;
this.defaultCatalogIdSign = this.defaultCatalogId;
@@ -102,8 +102,9 @@
},
addCatalog: function (parentId, node){
let that = this;
+ console.log(this.treeType)
// 鎵撳紑娣诲姞寮圭獥
- that.$refs.catalogEdit.openDialog(false, null, null, parentId, ()=>{
+ that.$refs.catalogEdit.openDialog(false, null, null, parentId, this.treeType, node.level, ()=>{
node.loaded = false
node.expand();
});
diff --git a/web_src/src/components/dialog/chooseChannelForStream.vue b/web_src/src/components/dialog/chooseChannelForStream.vue
index d5e5ac3..1eec0b2 100644
--- a/web_src/src/components/dialog/chooseChannelForStream.vue
+++ b/web_src/src/components/dialog/chooseChannelForStream.vue
@@ -174,7 +174,6 @@
page: that.currentPage,
count: that.count,
query: that.searchSrt,
- pushing: that.pushing,
platformId: that.platformId,
catalogId: that.catalogId,
mediaServerId: that.mediaServerId
diff --git a/web_src/src/components/dialog/platformEdit.vue b/web_src/src/components/dialog/platformEdit.vue
index 0caec32..c129281 100644
--- a/web_src/src/components/dialog/platformEdit.vue
+++ b/web_src/src/components/dialog/platformEdit.vue
@@ -78,6 +78,12 @@
<el-option label="8" value="8"></el-option>
</el-select>
</el-form-item>
+ <el-form-item label="鐩綍缁撴瀯" prop="treeType" >
+ <el-select v-model="platform.treeType" style="width: 100%" >
+ <el-option key="WGS84" label="琛屾斂鍖哄垝" value="CivilCode"></el-option>
+ <el-option key="GCJ02" label="涓氬姟鍒嗙粍" value="BusinessGroup"></el-option>
+ </el-select>
+ </el-form-item>
<el-form-item label="瀛楃闆�" prop="characterSet">
<el-select
v-model="platform.characterSet"
@@ -157,6 +163,7 @@
startOfflinePush: false,
catalogGroup: 1,
administrativeDivision: null,
+ treeType: "BusinessGroup",
},
rules: {
name: [{ required: true, message: "璇疯緭鍏ュ钩鍙板悕绉�", trigger: "blur" }],
@@ -194,6 +201,7 @@
that.platform.devicePort = res.data.devicePort;
that.platform.username = res.data.username;
that.platform.password = res.data.password;
+ that.platform.treeType = res.data.treeType;
that.platform.administrativeDivision = res.data.username.substr(0, 6);
}).catch(function (error) {
console.log(error);
@@ -222,6 +230,7 @@
this.platform.startOfflinePush = platform.startOfflinePush;
this.platform.catalogGroup = platform.catalogGroup;
this.platform.administrativeDivision = platform.administrativeDivision;
+ this.platform.treeType = platform.treeType;
this.onSubmit_text = "淇濆瓨";
this.saveUrl = "/api/platform/save";
}
@@ -242,32 +251,49 @@
},
onSubmit: function () {
+ if (this.onSubmit_text === "淇濆瓨") {
+ this.$confirm("淇敼鐩綍缁撴瀯浼氬鑷村叧鑱旂洰褰曚笌閫氶亾鏁版嵁琚竻绌�", '鎻愮ず', {
+ dangerouslyUseHTMLString: true,
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ center: true,
+ type: 'warning'
+ }).then(() => {
+ this.saveForm()
+ }).catch(() => {
+
+ });
+ }else {
+ this.saveForm()
+ }
+ },
+ saveForm: function (){
var that = this;
that.$axios({
method: 'post',
url: this.saveUrl,
data: that.platform
}).then(function (res) {
- if (res.data.code === 0) {
- that.$message({
- showClose: true,
- message: "淇濆瓨鎴愬姛",
- type: "success",
- });
- that.showDialog = false;
- if (that.listChangeCallback != null) {
- that.listChangeCallback();
- }
- }else {
- that.$message({
- showClose: true,
- message: res.data.msg,
- type: "error",
- });
+ if (res.data.code === 0) {
+ that.$message({
+ showClose: true,
+ message: "淇濆瓨鎴愬姛",
+ type: "success",
+ });
+ that.showDialog = false;
+ if (that.listChangeCallback != null) {
+ that.listChangeCallback();
}
- }).catch(function (error) {
- console.log(error);
- });
+ }else {
+ that.$message({
+ showClose: true,
+ message: res.data.msg,
+ type: "error",
+ });
+ }
+ }).catch(function (error) {
+ console.log(error);
+ });
},
close: function () {
this.showDialog = false;
@@ -293,6 +319,7 @@
keepTimeout: 60,
transport: "UDP",
characterSet: "GB2312",
+ treeType: "BusinessGroup",
shareAllLiveStream: false,
startOfflinePush: false,
catalogGroup: 1,
--
Gitblit v1.8.0