Commit f5fcc79a2c7e6379a73b14ba4e366ad1654e9475
1 parent
0da45229
优化国标树型展示
Showing
29 changed files
with
1340 additions
and
536 deletions
sql/mysql.sql
| 1 | --- MariaDB dump 10.19 Distrib 10.7.3-MariaDB, for Linux (x86_64) | 1 | +-- MySQL dump 10.13 Distrib 8.0.29, for Linux (x86_64) |
| 2 | -- | 2 | -- |
| 3 | -- Host: 127.0.0.1 Database: wvp3 | 3 | -- Host: 127.0.0.1 Database: wvp3 |
| 4 | -- ------------------------------------------------------ | 4 | -- ------------------------------------------------------ |
| 5 | --- Server version 8.0.0-dmr | 5 | +-- Server version 8.0.29-0ubuntu0.22.04.2 |
| 6 | 6 | ||
| 7 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; | 7 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
| 8 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; | 8 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; |
| 9 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; | 9 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; |
| 10 | -/*!40101 SET NAMES utf8mb4 */; | 10 | +/*!50503 SET NAMES utf8mb4 */; |
| 11 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; | 11 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; |
| 12 | /*!40103 SET TIME_ZONE='+00:00' */; | 12 | /*!40103 SET TIME_ZONE='+00:00' */; |
| 13 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; | 13 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
| @@ -21,34 +21,36 @@ | @@ -21,34 +21,36 @@ | ||
| 21 | 21 | ||
| 22 | DROP TABLE IF EXISTS `device`; | 22 | DROP TABLE IF EXISTS `device`; |
| 23 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 23 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 24 | -/*!40101 SET character_set_client = utf8 */; | 24 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 25 | CREATE TABLE `device` ( | 25 | CREATE TABLE `device` ( |
| 26 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 27 | - `deviceId` varchar(50) NOT NULL, | ||
| 28 | - `name` varchar(255) DEFAULT NULL, | ||
| 29 | - `manufacturer` varchar(255) DEFAULT NULL, | ||
| 30 | - `model` varchar(255) DEFAULT NULL, | ||
| 31 | - `firmware` varchar(255) DEFAULT NULL, | ||
| 32 | - `transport` varchar(50) DEFAULT NULL, | ||
| 33 | - `streamMode` varchar(50) DEFAULT NULL, | ||
| 34 | - `online` varchar(50) DEFAULT NULL, | ||
| 35 | - `registerTime` varchar(50) DEFAULT NULL, | ||
| 36 | - `keepaliveTime` varchar(50) DEFAULT NULL, | ||
| 37 | - `ip` varchar(50) NOT NULL, | ||
| 38 | - `createTime` varchar(50) NOT NULL, | ||
| 39 | - `updateTime` varchar(50) NOT NULL, | ||
| 40 | - `port` int(11) NOT NULL, | ||
| 41 | - `expires` int(11) NOT NULL, | ||
| 42 | - `subscribeCycleForCatalog` int(11) NOT NULL, | ||
| 43 | - `subscribeCycleForMobilePosition` int(11) NOT NULL, | ||
| 44 | - `mobilePositionSubmissionInterval` int(11) NOT NULL DEFAULT '5', | ||
| 45 | - `subscribeCycleForAlarm` int(11) NOT NULL, | ||
| 46 | - `hostAddress` varchar(50) NOT NULL, | ||
| 47 | - `charset` varchar(50) NOT NULL, | ||
| 48 | - `ssrcCheck` int(11) DEFAULT '0', | ||
| 49 | - PRIMARY KEY (`id`), | ||
| 50 | - UNIQUE KEY `device_deviceId_uindex` (`deviceId`) | ||
| 51 | -) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8mb4; | 26 | + `id` int NOT NULL AUTO_INCREMENT, |
| 27 | + `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 28 | + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 29 | + `manufacturer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 30 | + `model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 31 | + `firmware` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 32 | + `transport` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 33 | + `streamMode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 34 | + `online` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 35 | + `registerTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 36 | + `keepaliveTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 37 | + `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 38 | + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 39 | + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 40 | + `port` int NOT NULL, | ||
| 41 | + `expires` int NOT NULL, | ||
| 42 | + `subscribeCycleForCatalog` int NOT NULL, | ||
| 43 | + `hostAddress` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 44 | + `charset` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 45 | + `subscribeCycleForMobilePosition` int DEFAULT NULL, | ||
| 46 | + `mobilePositionSubmissionInterval` int DEFAULT '5', | ||
| 47 | + `subscribeCycleForAlarm` int DEFAULT NULL, | ||
| 48 | + `ssrcCheck` int DEFAULT '0', | ||
| 49 | + `geoCoordSys` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 50 | + `treeType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 51 | + PRIMARY KEY (`id`) USING BTREE, | ||
| 52 | + UNIQUE KEY `device_deviceId_uindex` (`deviceId`) USING BTREE | ||
| 53 | +) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 52 | /*!40101 SET character_set_client = @saved_cs_client */; | 54 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 53 | 55 | ||
| 54 | -- | 56 | -- |
| @@ -66,20 +68,20 @@ UNLOCK TABLES; | @@ -66,20 +68,20 @@ UNLOCK TABLES; | ||
| 66 | 68 | ||
| 67 | DROP TABLE IF EXISTS `device_alarm`; | 69 | DROP TABLE IF EXISTS `device_alarm`; |
| 68 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 70 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 69 | -/*!40101 SET character_set_client = utf8 */; | 71 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 70 | CREATE TABLE `device_alarm` ( | 72 | CREATE TABLE `device_alarm` ( |
| 71 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 72 | - `deviceId` varchar(50) NOT NULL, | ||
| 73 | - `channelId` varchar(50) NOT NULL, | ||
| 74 | - `alarmPriority` varchar(50) NOT NULL, | ||
| 75 | - `alarmMethod` varchar(50) DEFAULT NULL, | ||
| 76 | - `alarmTime` varchar(50) NOT NULL, | ||
| 77 | - `alarmDescription` varchar(255) DEFAULT NULL, | ||
| 78 | - `longitude` double DEFAULT NULL, | ||
| 79 | - `latitude` double DEFAULT NULL, | ||
| 80 | - `alarmType` varchar(50) DEFAULT NULL, | ||
| 81 | - PRIMARY KEY (`id`) USING BTREE | ||
| 82 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 73 | + `id` int NOT NULL AUTO_INCREMENT, |
| 74 | + `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 75 | + `channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 76 | + `alarmPriority` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 77 | + `alarmMethod` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 78 | + `alarmTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 79 | + `alarmDescription` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 80 | + `longitude` double DEFAULT NULL, | ||
| 81 | + `latitude` double DEFAULT NULL, | ||
| 82 | + `alarmType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 83 | + PRIMARY KEY (`id`) USING BTREE | ||
| 84 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 83 | /*!40101 SET character_set_client = @saved_cs_client */; | 85 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 84 | 86 | ||
| 85 | -- | 87 | -- |
| @@ -97,43 +99,48 @@ UNLOCK TABLES; | @@ -97,43 +99,48 @@ UNLOCK TABLES; | ||
| 97 | 99 | ||
| 98 | DROP TABLE IF EXISTS `device_channel`; | 100 | DROP TABLE IF EXISTS `device_channel`; |
| 99 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 101 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 100 | -/*!40101 SET character_set_client = utf8 */; | 102 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 101 | CREATE TABLE `device_channel` ( | 103 | CREATE TABLE `device_channel` ( |
| 102 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 103 | - `channelId` varchar(50) NOT NULL, | ||
| 104 | - `name` varchar(255) DEFAULT NULL, | ||
| 105 | - `manufacture` varchar(50) DEFAULT NULL, | ||
| 106 | - `model` varchar(50) DEFAULT NULL, | ||
| 107 | - `owner` varchar(50) DEFAULT NULL, | ||
| 108 | - `civilCode` varchar(50) DEFAULT NULL, | ||
| 109 | - `block` varchar(50) DEFAULT NULL, | ||
| 110 | - `address` varchar(50) DEFAULT NULL, | ||
| 111 | - `parentId` varchar(50) DEFAULT NULL, | ||
| 112 | - `safetyWay` int(11) DEFAULT NULL, | ||
| 113 | - `registerWay` int(11) DEFAULT NULL, | ||
| 114 | - `certNum` varchar(50) DEFAULT NULL, | ||
| 115 | - `certifiable` int(11) DEFAULT NULL, | ||
| 116 | - `errCode` int(11) DEFAULT NULL, | ||
| 117 | - `endTime` varchar(50) DEFAULT NULL, | ||
| 118 | - `secrecy` varchar(50) DEFAULT NULL, | ||
| 119 | - `ipAddress` varchar(50) DEFAULT NULL, | ||
| 120 | - `port` int(11) DEFAULT NULL, | ||
| 121 | - `password` varchar(255) DEFAULT NULL, | ||
| 122 | - `PTZType` int(11) DEFAULT NULL, | ||
| 123 | - `status` int(11) DEFAULT NULL, | ||
| 124 | - `longitude` double DEFAULT NULL, | ||
| 125 | - `latitude` double DEFAULT NULL, | ||
| 126 | - `streamId` varchar(50) DEFAULT NULL, | ||
| 127 | - `deviceId` varchar(50) NOT NULL, | ||
| 128 | - `parental` varchar(50) DEFAULT NULL, | ||
| 129 | - `hasAudio` bit(1) DEFAULT NULL, | ||
| 130 | - `createTime` varchar(50) NOT NULL, | ||
| 131 | - `updateTime` varchar(50) NOT NULL, | ||
| 132 | - `subCount` int(11) DEFAULT '0', | ||
| 133 | - PRIMARY KEY (`id`), | ||
| 134 | - UNIQUE KEY `device_channel_id_uindex` (`id`), | ||
| 135 | - UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`) | ||
| 136 | -) ENGINE=InnoDB AUTO_INCREMENT=81657 DEFAULT CHARSET=utf8mb4; | 104 | + `id` int NOT NULL AUTO_INCREMENT, |
| 105 | + `channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 106 | + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 107 | + `manufacture` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 108 | + `model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 109 | + `owner` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 110 | + `civilCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 111 | + `block` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 112 | + `address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 113 | + `parentId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 114 | + `safetyWay` int DEFAULT NULL, | ||
| 115 | + `registerWay` int DEFAULT NULL, | ||
| 116 | + `certNum` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 117 | + `certifiable` int DEFAULT NULL, | ||
| 118 | + `errCode` int DEFAULT NULL, | ||
| 119 | + `endTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 120 | + `secrecy` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 121 | + `ipAddress` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 122 | + `port` int DEFAULT NULL, | ||
| 123 | + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 124 | + `PTZType` int DEFAULT NULL, | ||
| 125 | + `status` int DEFAULT NULL, | ||
| 126 | + `longitude` double DEFAULT NULL, | ||
| 127 | + `latitude` double DEFAULT NULL, | ||
| 128 | + `streamId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 129 | + `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 130 | + `parental` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 131 | + `hasAudio` bit(1) DEFAULT NULL, | ||
| 132 | + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 133 | + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 134 | + `subCount` int DEFAULT '0', | ||
| 135 | + `longitudeGcj02` double DEFAULT NULL, | ||
| 136 | + `latitudeGcj02` double DEFAULT NULL, | ||
| 137 | + `longitudeWgs84` double DEFAULT NULL, | ||
| 138 | + `latitudeWgs84` double DEFAULT NULL, | ||
| 139 | + `businessGroupId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 140 | + PRIMARY KEY (`id`) USING BTREE, | ||
| 141 | + UNIQUE KEY `device_channel_id_uindex` (`id`) USING BTREE, | ||
| 142 | + UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`) USING BTREE | ||
| 143 | +) ENGINE=InnoDB AUTO_INCREMENT=19314 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 137 | /*!40101 SET character_set_client = @saved_cs_client */; | 144 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 138 | 145 | ||
| 139 | -- | 146 | -- |
| @@ -151,24 +158,24 @@ UNLOCK TABLES; | @@ -151,24 +158,24 @@ UNLOCK TABLES; | ||
| 151 | 158 | ||
| 152 | DROP TABLE IF EXISTS `device_mobile_position`; | 159 | DROP TABLE IF EXISTS `device_mobile_position`; |
| 153 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 160 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 154 | -/*!40101 SET character_set_client = utf8 */; | 161 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 155 | CREATE TABLE `device_mobile_position` ( | 162 | CREATE TABLE `device_mobile_position` ( |
| 156 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 157 | - `deviceId` varchar(50) NOT NULL, | ||
| 158 | - `channelId` varchar(50) NOT NULL, | ||
| 159 | - `deviceName` varchar(255) DEFAULT NULL, | ||
| 160 | - `time` varchar(50) NOT NULL, | ||
| 161 | - `longitude` double NOT NULL, | ||
| 162 | - `latitude` double NOT NULL, | ||
| 163 | - `altitude` double DEFAULT NULL, | ||
| 164 | - `speed` double DEFAULT NULL, | ||
| 165 | - `direction` double DEFAULT NULL, | ||
| 166 | - `reportSource` varchar(50) DEFAULT NULL, | ||
| 167 | - `geodeticSystem` varchar(50) DEFAULT NULL, | ||
| 168 | - `cnLng` varchar(50) DEFAULT NULL, | ||
| 169 | - `cnLat` varchar(50) DEFAULT NULL, | ||
| 170 | - PRIMARY KEY (`id`) | ||
| 171 | -) ENGINE=InnoDB AUTO_INCREMENT=6108 DEFAULT CHARSET=utf8mb4; | 163 | + `id` int NOT NULL AUTO_INCREMENT, |
| 164 | + `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 165 | + `channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 166 | + `deviceName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 167 | + `time` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 168 | + `longitude` double NOT NULL, | ||
| 169 | + `latitude` double NOT NULL, | ||
| 170 | + `altitude` double DEFAULT NULL, | ||
| 171 | + `speed` double DEFAULT NULL, | ||
| 172 | + `direction` double DEFAULT NULL, | ||
| 173 | + `reportSource` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 174 | + `geodeticSystem` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 175 | + `cnLng` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 176 | + `cnLat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 177 | + PRIMARY KEY (`id`) USING BTREE | ||
| 178 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 172 | /*!40101 SET character_set_client = @saved_cs_client */; | 179 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 173 | 180 | ||
| 174 | -- | 181 | -- |
| @@ -186,23 +193,23 @@ UNLOCK TABLES; | @@ -186,23 +193,23 @@ UNLOCK TABLES; | ||
| 186 | 193 | ||
| 187 | DROP TABLE IF EXISTS `gb_stream`; | 194 | DROP TABLE IF EXISTS `gb_stream`; |
| 188 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 195 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 189 | -/*!40101 SET character_set_client = utf8 */; | 196 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 190 | CREATE TABLE `gb_stream` ( | 197 | CREATE TABLE `gb_stream` ( |
| 191 | - `gbStreamId` int(11) NOT NULL AUTO_INCREMENT, | ||
| 192 | - `app` varchar(255) NOT NULL, | ||
| 193 | - `stream` varchar(255) NOT NULL, | ||
| 194 | - `gbId` varchar(50) NOT NULL, | ||
| 195 | - `name` varchar(255) DEFAULT NULL, | ||
| 196 | - `longitude` double DEFAULT NULL, | ||
| 197 | - `latitude` double DEFAULT NULL, | ||
| 198 | - `streamType` varchar(50) DEFAULT NULL, | ||
| 199 | - `mediaServerId` varchar(50) DEFAULT NULL, | ||
| 200 | - `status` int(11) DEFAULT NULL, | ||
| 201 | - `createStamp` bigint(20) DEFAULT NULL, | ||
| 202 | - PRIMARY KEY (`gbStreamId`) USING BTREE, | ||
| 203 | - UNIQUE KEY `app` (`app`,`stream`) USING BTREE, | ||
| 204 | - UNIQUE KEY `gbId` (`gbId`) USING BTREE | ||
| 205 | -) ENGINE=InnoDB AUTO_INCREMENT=300769 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 198 | + `gbStreamId` int NOT NULL AUTO_INCREMENT, |
| 199 | + `app` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 200 | + `stream` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 201 | + `gbId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 202 | + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 203 | + `longitude` double DEFAULT NULL, | ||
| 204 | + `latitude` double DEFAULT NULL, | ||
| 205 | + `streamType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 206 | + `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 207 | + `status` int DEFAULT NULL, | ||
| 208 | + `createStamp` bigint DEFAULT NULL, | ||
| 209 | + PRIMARY KEY (`gbStreamId`) USING BTREE, | ||
| 210 | + UNIQUE KEY `app` (`app`,`stream`) USING BTREE, | ||
| 211 | + UNIQUE KEY `gbId` (`gbId`) USING BTREE | ||
| 212 | +) ENGINE=InnoDB AUTO_INCREMENT=301679 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 206 | /*!40101 SET character_set_client = @saved_cs_client */; | 213 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 207 | 214 | ||
| 208 | -- | 215 | -- |
| @@ -220,19 +227,19 @@ UNLOCK TABLES; | @@ -220,19 +227,19 @@ UNLOCK TABLES; | ||
| 220 | 227 | ||
| 221 | DROP TABLE IF EXISTS `log`; | 228 | DROP TABLE IF EXISTS `log`; |
| 222 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 229 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 223 | -/*!40101 SET character_set_client = utf8 */; | 230 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 224 | CREATE TABLE `log` ( | 231 | CREATE TABLE `log` ( |
| 225 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 226 | - `name` varchar(50) NOT NULL, | ||
| 227 | - `type` varchar(50) NOT NULL, | ||
| 228 | - `uri` varchar(200) NOT NULL, | ||
| 229 | - `address` varchar(50) NOT NULL, | ||
| 230 | - `result` varchar(50) NOT NULL, | ||
| 231 | - `timing` bigint(20) NOT NULL, | ||
| 232 | - `username` varchar(50) NOT NULL, | ||
| 233 | - `createTime` varchar(50) NOT NULL, | ||
| 234 | - PRIMARY KEY (`id`) USING BTREE | ||
| 235 | -) ENGINE=InnoDB AUTO_INCREMENT=1552 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 232 | + `id` int NOT NULL AUTO_INCREMENT, |
| 233 | + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 234 | + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 235 | + `uri` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 236 | + `address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 237 | + `result` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 238 | + `timing` bigint NOT NULL, | ||
| 239 | + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 240 | + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 241 | + PRIMARY KEY (`id`) USING BTREE | ||
| 242 | +) ENGINE=InnoDB AUTO_INCREMENT=21611 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 236 | /*!40101 SET character_set_client = @saved_cs_client */; | 243 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 237 | 244 | ||
| 238 | -- | 245 | -- |
| @@ -250,34 +257,34 @@ UNLOCK TABLES; | @@ -250,34 +257,34 @@ UNLOCK TABLES; | ||
| 250 | 257 | ||
| 251 | DROP TABLE IF EXISTS `media_server`; | 258 | DROP TABLE IF EXISTS `media_server`; |
| 252 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 259 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 253 | -/*!40101 SET character_set_client = utf8 */; | 260 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 254 | CREATE TABLE `media_server` ( | 261 | CREATE TABLE `media_server` ( |
| 255 | - `id` varchar(255) NOT NULL, | ||
| 256 | - `ip` varchar(50) NOT NULL, | ||
| 257 | - `hookIp` varchar(50) NOT NULL, | ||
| 258 | - `sdpIp` varchar(50) NOT NULL, | ||
| 259 | - `streamIp` varchar(50) NOT NULL, | ||
| 260 | - `httpPort` int(11) NOT NULL, | ||
| 261 | - `httpSSlPort` int(11) NOT NULL, | ||
| 262 | - `rtmpPort` int(11) NOT NULL, | ||
| 263 | - `rtmpSSlPort` int(11) NOT NULL, | ||
| 264 | - `rtpProxyPort` int(11) NOT NULL, | ||
| 265 | - `rtspPort` int(11) NOT NULL, | ||
| 266 | - `rtspSSLPort` int(11) NOT NULL, | ||
| 267 | - `autoConfig` int(11) NOT NULL, | ||
| 268 | - `secret` varchar(50) NOT NULL, | ||
| 269 | - `streamNoneReaderDelayMS` int(11) NOT NULL, | ||
| 270 | - `rtpEnable` int(11) NOT NULL, | ||
| 271 | - `rtpPortRange` varchar(50) NOT NULL, | ||
| 272 | - `sendRtpPortRange` varchar(50) NOT NULL, | ||
| 273 | - `recordAssistPort` int(11) NOT NULL, | ||
| 274 | - `defaultServer` int(11) NOT NULL, | ||
| 275 | - `createTime` varchar(50) NOT NULL, | ||
| 276 | - `updateTime` varchar(50) NOT NULL, | ||
| 277 | - `hookAliveInterval` int(11) NOT NULL, | ||
| 278 | - PRIMARY KEY (`id`) USING BTREE, | ||
| 279 | - UNIQUE KEY `media_server_i` (`ip`,`httpPort`) USING BTREE | ||
| 280 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 262 | + `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
| 263 | + `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 264 | + `hookIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 265 | + `sdpIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 266 | + `streamIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 267 | + `httpPort` int NOT NULL, | ||
| 268 | + `httpSSlPort` int NOT NULL, | ||
| 269 | + `rtmpPort` int NOT NULL, | ||
| 270 | + `rtmpSSlPort` int NOT NULL, | ||
| 271 | + `rtpProxyPort` int NOT NULL, | ||
| 272 | + `rtspPort` int NOT NULL, | ||
| 273 | + `rtspSSLPort` int NOT NULL, | ||
| 274 | + `autoConfig` int NOT NULL, | ||
| 275 | + `secret` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 276 | + `streamNoneReaderDelayMS` int NOT NULL, | ||
| 277 | + `rtpEnable` int NOT NULL, | ||
| 278 | + `rtpPortRange` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 279 | + `sendRtpPortRange` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 280 | + `recordAssistPort` int NOT NULL, | ||
| 281 | + `defaultServer` int NOT NULL, | ||
| 282 | + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 283 | + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 284 | + `hookAliveInterval` int NOT NULL, | ||
| 285 | + PRIMARY KEY (`id`) USING BTREE, | ||
| 286 | + UNIQUE KEY `media_server_i` (`ip`,`httpPort`) USING BTREE | ||
| 287 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 281 | /*!40101 SET character_set_client = @saved_cs_client */; | 288 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 282 | 289 | ||
| 283 | -- | 290 | -- |
| @@ -295,36 +302,36 @@ UNLOCK TABLES; | @@ -295,36 +302,36 @@ UNLOCK TABLES; | ||
| 295 | 302 | ||
| 296 | DROP TABLE IF EXISTS `parent_platform`; | 303 | DROP TABLE IF EXISTS `parent_platform`; |
| 297 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 304 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 298 | -/*!40101 SET character_set_client = utf8 */; | 305 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 299 | CREATE TABLE `parent_platform` ( | 306 | CREATE TABLE `parent_platform` ( |
| 300 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 301 | - `enable` int(11) DEFAULT NULL, | ||
| 302 | - `name` varchar(255) DEFAULT NULL, | ||
| 303 | - `serverGBId` varchar(50) NOT NULL, | ||
| 304 | - `serverGBDomain` varchar(50) DEFAULT NULL, | ||
| 305 | - `serverIP` varchar(50) DEFAULT NULL, | ||
| 306 | - `serverPort` int(11) DEFAULT NULL, | ||
| 307 | - `deviceGBId` varchar(50) NOT NULL, | ||
| 308 | - `deviceIp` varchar(50) DEFAULT NULL, | ||
| 309 | - `devicePort` varchar(50) DEFAULT NULL, | ||
| 310 | - `username` varchar(255) DEFAULT NULL, | ||
| 311 | - `password` varchar(50) DEFAULT NULL, | ||
| 312 | - `expires` varchar(50) DEFAULT NULL, | ||
| 313 | - `keepTimeout` varchar(50) DEFAULT NULL, | ||
| 314 | - `transport` varchar(50) DEFAULT NULL, | ||
| 315 | - `characterSet` varchar(50) DEFAULT NULL, | ||
| 316 | - `catalogId` varchar(50) NOT NULL, | ||
| 317 | - `ptz` int(11) DEFAULT NULL, | ||
| 318 | - `rtcp` int(11) DEFAULT NULL, | ||
| 319 | - `status` bit(1) DEFAULT NULL, | ||
| 320 | - `shareAllLiveStream` int(11) DEFAULT NULL, | ||
| 321 | - `startOfflinePush` int(11) DEFAULT '0', | ||
| 322 | - `administrativeDivision` varchar(50) NOT NULL, | ||
| 323 | - `catalogGroup` int(11) DEFAULT '1', | ||
| 324 | - PRIMARY KEY (`id`), | ||
| 325 | - UNIQUE KEY `parent_platform_id_uindex` (`id`), | ||
| 326 | - UNIQUE KEY `parent_platform_pk` (`serverGBId`) | ||
| 327 | -) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 307 | + `id` int NOT NULL AUTO_INCREMENT, |
| 308 | + `enable` int DEFAULT NULL, | ||
| 309 | + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 310 | + `serverGBId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 311 | + `serverGBDomain` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 312 | + `serverIP` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 313 | + `serverPort` int DEFAULT NULL, | ||
| 314 | + `deviceGBId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 315 | + `deviceIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 316 | + `devicePort` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 317 | + `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 318 | + `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 319 | + `expires` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 320 | + `keepTimeout` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 321 | + `transport` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 322 | + `characterSet` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 323 | + `catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 324 | + `ptz` int DEFAULT NULL, | ||
| 325 | + `rtcp` int DEFAULT NULL, | ||
| 326 | + `status` bit(1) DEFAULT NULL, | ||
| 327 | + `shareAllLiveStream` int DEFAULT NULL, | ||
| 328 | + `startOfflinePush` int DEFAULT '0', | ||
| 329 | + `administrativeDivision` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 330 | + `catalogGroup` int DEFAULT '1', | ||
| 331 | + PRIMARY KEY (`id`) USING BTREE, | ||
| 332 | + UNIQUE KEY `parent_platform_id_uindex` (`id`) USING BTREE, | ||
| 333 | + UNIQUE KEY `parent_platform_pk` (`serverGBId`) USING BTREE | ||
| 334 | +) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 328 | /*!40101 SET character_set_client = @saved_cs_client */; | 335 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 329 | 336 | ||
| 330 | -- | 337 | -- |
| @@ -342,14 +349,14 @@ UNLOCK TABLES; | @@ -342,14 +349,14 @@ UNLOCK TABLES; | ||
| 342 | 349 | ||
| 343 | DROP TABLE IF EXISTS `platform_catalog`; | 350 | DROP TABLE IF EXISTS `platform_catalog`; |
| 344 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 351 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 345 | -/*!40101 SET character_set_client = utf8 */; | 352 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 346 | CREATE TABLE `platform_catalog` ( | 353 | CREATE TABLE `platform_catalog` ( |
| 347 | - `id` varchar(50) NOT NULL, | ||
| 348 | - `platformId` varchar(50) NOT NULL, | ||
| 349 | - `name` varchar(255) NOT NULL, | ||
| 350 | - `parentId` varchar(50) DEFAULT NULL, | ||
| 351 | - PRIMARY KEY (`id`) USING BTREE | ||
| 352 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 354 | + `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
| 355 | + `platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 356 | + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 357 | + `parentId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 358 | + PRIMARY KEY (`id`) USING BTREE | ||
| 359 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 353 | /*!40101 SET character_set_client = @saved_cs_client */; | 360 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 354 | 361 | ||
| 355 | -- | 362 | -- |
| @@ -367,14 +374,14 @@ UNLOCK TABLES; | @@ -367,14 +374,14 @@ UNLOCK TABLES; | ||
| 367 | 374 | ||
| 368 | DROP TABLE IF EXISTS `platform_gb_channel`; | 375 | DROP TABLE IF EXISTS `platform_gb_channel`; |
| 369 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 376 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 370 | -/*!40101 SET character_set_client = utf8 */; | 377 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 371 | CREATE TABLE `platform_gb_channel` ( | 378 | CREATE TABLE `platform_gb_channel` ( |
| 372 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 373 | - `platformId` varchar(50) NOT NULL, | ||
| 374 | - `catalogId` varchar(50) NOT NULL, | ||
| 375 | - `deviceChannelId` int(11) NOT NULL, | ||
| 376 | - PRIMARY KEY (`id`) | ||
| 377 | -) ENGINE=InnoDB AUTO_INCREMENT=250 DEFAULT CHARSET=utf8mb4; | 379 | + `id` int NOT NULL AUTO_INCREMENT, |
| 380 | + `platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 381 | + `catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 382 | + `deviceChannelId` int NOT NULL, | ||
| 383 | + PRIMARY KEY (`id`) USING BTREE | ||
| 384 | +) ENGINE=InnoDB AUTO_INCREMENT=4889 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 378 | /*!40101 SET character_set_client = @saved_cs_client */; | 385 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 379 | 386 | ||
| 380 | -- | 387 | -- |
| @@ -392,15 +399,15 @@ UNLOCK TABLES; | @@ -392,15 +399,15 @@ UNLOCK TABLES; | ||
| 392 | 399 | ||
| 393 | DROP TABLE IF EXISTS `platform_gb_stream`; | 400 | DROP TABLE IF EXISTS `platform_gb_stream`; |
| 394 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 401 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 395 | -/*!40101 SET character_set_client = utf8 */; | 402 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 396 | CREATE TABLE `platform_gb_stream` ( | 403 | CREATE TABLE `platform_gb_stream` ( |
| 397 | - `platformId` varchar(50) NOT NULL, | ||
| 398 | - `catalogId` varchar(50) NOT NULL, | ||
| 399 | - `gbStreamId` int(11) NOT NULL, | ||
| 400 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 401 | - PRIMARY KEY (`id`), | ||
| 402 | - UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`) | ||
| 403 | -) ENGINE=InnoDB AUTO_INCREMENT=301210 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 404 | + `platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
| 405 | + `catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 406 | + `gbStreamId` int NOT NULL, | ||
| 407 | + `id` int NOT NULL AUTO_INCREMENT, | ||
| 408 | + PRIMARY KEY (`id`) USING BTREE, | ||
| 409 | + UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`) USING BTREE | ||
| 410 | +) ENGINE=InnoDB AUTO_INCREMENT=302077 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 404 | /*!40101 SET character_set_client = @saved_cs_client */; | 411 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 405 | 412 | ||
| 406 | -- | 413 | -- |
| @@ -418,29 +425,29 @@ UNLOCK TABLES; | @@ -418,29 +425,29 @@ UNLOCK TABLES; | ||
| 418 | 425 | ||
| 419 | DROP TABLE IF EXISTS `stream_proxy`; | 426 | DROP TABLE IF EXISTS `stream_proxy`; |
| 420 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 427 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 421 | -/*!40101 SET character_set_client = utf8 */; | 428 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 422 | CREATE TABLE `stream_proxy` ( | 429 | CREATE TABLE `stream_proxy` ( |
| 423 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 424 | - `type` varchar(50) NOT NULL, | ||
| 425 | - `app` varchar(255) NOT NULL, | ||
| 426 | - `stream` varchar(255) NOT NULL, | ||
| 427 | - `url` varchar(255) DEFAULT NULL, | ||
| 428 | - `src_url` varchar(255) DEFAULT NULL, | ||
| 429 | - `dst_url` varchar(255) DEFAULT NULL, | ||
| 430 | - `timeout_ms` int(11) DEFAULT NULL, | ||
| 431 | - `ffmpeg_cmd_key` varchar(255) DEFAULT NULL, | ||
| 432 | - `rtp_type` varchar(50) DEFAULT NULL, | ||
| 433 | - `mediaServerId` varchar(50) DEFAULT NULL, | ||
| 434 | - `enable_hls` bit(1) DEFAULT NULL, | ||
| 435 | - `enable_mp4` bit(1) DEFAULT NULL, | ||
| 436 | - `enable` bit(1) NOT NULL, | ||
| 437 | - `status` bit(1) NOT NULL, | ||
| 438 | - `enable_remove_none_reader` bit(1) NOT NULL, | ||
| 439 | - `createTime` varchar(50) NOT NULL, | ||
| 440 | - `name` varchar(255) DEFAULT NULL, | ||
| 441 | - PRIMARY KEY (`id`), | ||
| 442 | - UNIQUE KEY `stream_proxy_pk` (`app`,`stream`) | ||
| 443 | -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4; | 430 | + `id` int NOT NULL AUTO_INCREMENT, |
| 431 | + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 432 | + `app` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 433 | + `stream` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 434 | + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 435 | + `src_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 436 | + `dst_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 437 | + `timeout_ms` int DEFAULT NULL, | ||
| 438 | + `ffmpeg_cmd_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 439 | + `rtp_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 440 | + `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 441 | + `enable_hls` bit(1) DEFAULT NULL, | ||
| 442 | + `enable_mp4` bit(1) DEFAULT NULL, | ||
| 443 | + `enable` bit(1) NOT NULL, | ||
| 444 | + `status` bit(1) NOT NULL, | ||
| 445 | + `enable_remove_none_reader` bit(1) NOT NULL, | ||
| 446 | + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 447 | + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 448 | + PRIMARY KEY (`id`) USING BTREE, | ||
| 449 | + UNIQUE KEY `stream_proxy_pk` (`app`,`stream`) USING BTREE | ||
| 450 | +) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 444 | /*!40101 SET character_set_client = @saved_cs_client */; | 451 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 445 | 452 | ||
| 446 | -- | 453 | -- |
| @@ -458,21 +465,21 @@ UNLOCK TABLES; | @@ -458,21 +465,21 @@ UNLOCK TABLES; | ||
| 458 | 465 | ||
| 459 | DROP TABLE IF EXISTS `stream_push`; | 466 | DROP TABLE IF EXISTS `stream_push`; |
| 460 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 467 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 461 | -/*!40101 SET character_set_client = utf8 */; | 468 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 462 | CREATE TABLE `stream_push` ( | 469 | CREATE TABLE `stream_push` ( |
| 463 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 464 | - `app` varchar(255) NOT NULL, | ||
| 465 | - `stream` varchar(255) NOT NULL, | ||
| 466 | - `totalReaderCount` varchar(50) DEFAULT NULL, | ||
| 467 | - `originType` int(11) DEFAULT NULL, | ||
| 468 | - `originTypeStr` varchar(50) DEFAULT NULL, | ||
| 469 | - `createStamp` bigint(20) DEFAULT NULL, | ||
| 470 | - `aliveSecond` int(11) DEFAULT NULL, | ||
| 471 | - `mediaServerId` varchar(50) DEFAULT NULL, | ||
| 472 | - `serverId` varchar(50) not NULL, | ||
| 473 | - PRIMARY KEY (`id`), | ||
| 474 | - UNIQUE KEY `stream_push_pk` (`app`,`stream`) | ||
| 475 | -) ENGINE=InnoDB AUTO_INCREMENT=300838 DEFAULT CHARSET=utf8mb4; | 470 | + `id` int NOT NULL AUTO_INCREMENT, |
| 471 | + `app` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 472 | + `stream` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 473 | + `totalReaderCount` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 474 | + `originType` int DEFAULT NULL, | ||
| 475 | + `originTypeStr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 476 | + `createStamp` bigint DEFAULT NULL, | ||
| 477 | + `aliveSecond` int DEFAULT NULL, | ||
| 478 | + `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, | ||
| 479 | + `serverId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 480 | + PRIMARY KEY (`id`) USING BTREE, | ||
| 481 | + UNIQUE KEY `stream_push_pk` (`app`,`stream`) USING BTREE | ||
| 482 | +) ENGINE=InnoDB AUTO_INCREMENT=305291 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 476 | /*!40101 SET character_set_client = @saved_cs_client */; | 483 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 477 | 484 | ||
| 478 | -- | 485 | -- |
| @@ -490,17 +497,17 @@ UNLOCK TABLES; | @@ -490,17 +497,17 @@ UNLOCK TABLES; | ||
| 490 | 497 | ||
| 491 | DROP TABLE IF EXISTS `user`; | 498 | DROP TABLE IF EXISTS `user`; |
| 492 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 499 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 493 | -/*!40101 SET character_set_client = utf8 */; | 500 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 494 | CREATE TABLE `user` ( | 501 | CREATE TABLE `user` ( |
| 495 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 496 | - `username` varchar(255) NOT NULL, | ||
| 497 | - `password` varchar(255) NOT NULL, | ||
| 498 | - `roleId` int(11) NOT NULL, | ||
| 499 | - `createTime` varchar(50) NOT NULL, | ||
| 500 | - `updateTime` varchar(50) NOT NULL, | ||
| 501 | - PRIMARY KEY (`id`) USING BTREE, | ||
| 502 | - UNIQUE KEY `user_username_uindex` (`username`) USING BTREE | ||
| 503 | -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 502 | + `id` int NOT NULL AUTO_INCREMENT, |
| 503 | + `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 504 | + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 505 | + `roleId` int NOT NULL, | ||
| 506 | + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 507 | + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 508 | + PRIMARY KEY (`id`) USING BTREE, | ||
| 509 | + UNIQUE KEY `user_username_uindex` (`username`) USING BTREE | ||
| 510 | +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 504 | /*!40101 SET character_set_client = @saved_cs_client */; | 511 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 505 | 512 | ||
| 506 | -- | 513 | -- |
| @@ -509,8 +516,7 @@ CREATE TABLE `user` ( | @@ -509,8 +516,7 @@ CREATE TABLE `user` ( | ||
| 509 | 516 | ||
| 510 | LOCK TABLES `user` WRITE; | 517 | LOCK TABLES `user` WRITE; |
| 511 | /*!40000 ALTER TABLE `user` DISABLE KEYS */; | 518 | /*!40000 ALTER TABLE `user` DISABLE KEYS */; |
| 512 | -INSERT INTO `user` VALUES | ||
| 513 | - (1,'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021 - 04 - 13 14:14:57','2021 - 04 - 13 14:14:57'); | 519 | +INSERT INTO `user` VALUES (1,'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021 - 04 - 13 14:14:57','2021 - 04 - 13 14:14:57'); |
| 514 | /*!40000 ALTER TABLE `user` ENABLE KEYS */; | 520 | /*!40000 ALTER TABLE `user` ENABLE KEYS */; |
| 515 | UNLOCK TABLES; | 521 | UNLOCK TABLES; |
| 516 | 522 | ||
| @@ -520,15 +526,15 @@ UNLOCK TABLES; | @@ -520,15 +526,15 @@ UNLOCK TABLES; | ||
| 520 | 526 | ||
| 521 | DROP TABLE IF EXISTS `user_role`; | 527 | DROP TABLE IF EXISTS `user_role`; |
| 522 | /*!40101 SET @saved_cs_client = @@character_set_client */; | 528 | /*!40101 SET @saved_cs_client = @@character_set_client */; |
| 523 | -/*!40101 SET character_set_client = utf8 */; | 529 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 524 | CREATE TABLE `user_role` ( | 530 | CREATE TABLE `user_role` ( |
| 525 | - `id` int(11) NOT NULL AUTO_INCREMENT, | ||
| 526 | - `name` varchar(50) NOT NULL, | ||
| 527 | - `authority` varchar(50) NOT NULL, | ||
| 528 | - `createTime` varchar(50) NOT NULL, | ||
| 529 | - `updateTime` varchar(50) NOT NULL, | ||
| 530 | - PRIMARY KEY (`id`) USING BTREE | ||
| 531 | -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; | 531 | + `id` int NOT NULL AUTO_INCREMENT, |
| 532 | + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 533 | + `authority` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 534 | + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 535 | + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||
| 536 | + PRIMARY KEY (`id`) USING BTREE | ||
| 537 | +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; | ||
| 532 | /*!40101 SET character_set_client = @saved_cs_client */; | 538 | /*!40101 SET character_set_client = @saved_cs_client */; |
| 533 | 539 | ||
| 534 | -- | 540 | -- |
| @@ -537,8 +543,7 @@ CREATE TABLE `user_role` ( | @@ -537,8 +543,7 @@ CREATE TABLE `user_role` ( | ||
| 537 | 543 | ||
| 538 | LOCK TABLES `user_role` WRITE; | 544 | LOCK TABLES `user_role` WRITE; |
| 539 | /*!40000 ALTER TABLE `user_role` DISABLE KEYS */; | 545 | /*!40000 ALTER TABLE `user_role` DISABLE KEYS */; |
| 540 | -INSERT INTO `user_role` VALUES | ||
| 541 | - (1,'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57'); | 546 | +INSERT INTO `user_role` VALUES (1,'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57'); |
| 542 | /*!40000 ALTER TABLE `user_role` ENABLE KEYS */; | 547 | /*!40000 ALTER TABLE `user_role` ENABLE KEYS */; |
| 543 | UNLOCK TABLES; | 548 | UNLOCK TABLES; |
| 544 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; | 549 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; |
| @@ -551,4 +556,4 @@ UNLOCK TABLES; | @@ -551,4 +556,4 @@ UNLOCK TABLES; | ||
| 551 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; | 556 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
| 552 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; | 557 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; |
| 553 | 558 | ||
| 554 | --- Dump completed on 2022-04-18 10:50:27 | 559 | +-- Dump completed on 2022-06-26 17:33:30 |
sql/update.sql
| @@ -2,7 +2,10 @@ alter table stream_push | @@ -2,7 +2,10 @@ alter table stream_push | ||
| 2 | add serverId varchar(50) not null; | 2 | add serverId varchar(50) not null; |
| 3 | alter table device | 3 | alter table device |
| 4 | add geoCoordSys varchar(50) not null; | 4 | add geoCoordSys varchar(50) not null; |
| 5 | +alter table device | ||
| 6 | + add treeType varchar(50) not null; | ||
| 5 | update device set device.geoCoordSys='WGS84'; | 7 | update device set device.geoCoordSys='WGS84'; |
| 8 | +update device set device.treeType='CivilCode'; | ||
| 6 | alter table device_channel | 9 | alter table device_channel |
| 7 | add longitudeGcj02 double default null; | 10 | add longitudeGcj02 double default null; |
| 8 | alter table device_channel | 11 | alter table device_channel |
| @@ -11,6 +14,8 @@ alter table device_channel | @@ -11,6 +14,8 @@ alter table device_channel | ||
| 11 | add longitudeWgs84 double default null; | 14 | add longitudeWgs84 double default null; |
| 12 | alter table device_channel | 15 | alter table device_channel |
| 13 | add latitudeWgs84 double default null; | 16 | add latitudeWgs84 double default null; |
| 17 | +alter table device_channel | ||
| 18 | + add businessGroupId varchar(50) default null; | ||
| 14 | 19 | ||
| 15 | 20 | ||
| 16 | 21 |
src/main/java/com/genersoft/iot/vmp/gb28181/bean/ChannelIdType.java
0 → 100644
| 1 | +package com.genersoft.iot.vmp.gb28181.bean; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * 国标类型编码,国标编码中11-13位为类型编码 | ||
| 5 | + * 详见 附 录 D 编码规则 A | ||
| 6 | + * @author lin | ||
| 7 | + */ | ||
| 8 | +public class ChannelIdType { | ||
| 9 | + /** | ||
| 10 | + * 中心信令控制服务器编码 | ||
| 11 | + */ | ||
| 12 | + public final static String CENTRAL_SIGNALING_CONTROL_SERVER = "200"; | ||
| 13 | + | ||
| 14 | + /** | ||
| 15 | + * 业务分组编码 | ||
| 16 | + */ | ||
| 17 | + public final static String BUSINESS_GROUP = "215"; | ||
| 18 | + | ||
| 19 | + /** | ||
| 20 | + * 虚拟组织编码 | ||
| 21 | + */ | ||
| 22 | + public final static String VIRTUAL_ORGANIZATION = "216"; | ||
| 23 | +} |
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
| @@ -138,6 +138,11 @@ public class Device { | @@ -138,6 +138,11 @@ public class Device { | ||
| 138 | */ | 138 | */ |
| 139 | private String geoCoordSys; | 139 | private String geoCoordSys; |
| 140 | 140 | ||
| 141 | + /** | ||
| 142 | + * 树类型 国标规定了两种树的展现方式 行政区划:CivilCode 和业务分组:BusinessGroup | ||
| 143 | + */ | ||
| 144 | + private String treeType; | ||
| 145 | + | ||
| 141 | 146 | ||
| 142 | public String getDeviceId() { | 147 | public String getDeviceId() { |
| 143 | return deviceId; | 148 | return deviceId; |
| @@ -338,4 +343,12 @@ public class Device { | @@ -338,4 +343,12 @@ public class Device { | ||
| 338 | public void setGeoCoordSys(String geoCoordSys) { | 343 | public void setGeoCoordSys(String geoCoordSys) { |
| 339 | this.geoCoordSys = geoCoordSys; | 344 | this.geoCoordSys = geoCoordSys; |
| 340 | } | 345 | } |
| 346 | + | ||
| 347 | + public String getTreeType() { | ||
| 348 | + return treeType; | ||
| 349 | + } | ||
| 350 | + | ||
| 351 | + public void setTreeType(String treeType) { | ||
| 352 | + this.treeType = treeType; | ||
| 353 | + } | ||
| 341 | } | 354 | } |
src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java
| @@ -194,6 +194,11 @@ public class DeviceChannel { | @@ -194,6 +194,11 @@ public class DeviceChannel { | ||
| 194 | */ | 194 | */ |
| 195 | private int channelType; | 195 | private int channelType; |
| 196 | 196 | ||
| 197 | + /** | ||
| 198 | + * 业务分组 | ||
| 199 | + */ | ||
| 200 | + private String businessGroupId; | ||
| 201 | + | ||
| 197 | public int getId() { | 202 | public int getId() { |
| 198 | return id; | 203 | return id; |
| 199 | } | 204 | } |
| @@ -506,4 +511,12 @@ public class DeviceChannel { | @@ -506,4 +511,12 @@ public class DeviceChannel { | ||
| 506 | public void setChannelType(int channelType) { | 511 | public void setChannelType(int channelType) { |
| 507 | this.channelType = channelType; | 512 | this.channelType = channelType; |
| 508 | } | 513 | } |
| 514 | + | ||
| 515 | + public String getBusinessGroupId() { | ||
| 516 | + return businessGroupId; | ||
| 517 | + } | ||
| 518 | + | ||
| 519 | + public void setBusinessGroupId(String businessGroupId) { | ||
| 520 | + this.businessGroupId = businessGroupId; | ||
| 521 | + } | ||
| 509 | } | 522 | } |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
| @@ -406,7 +406,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -406,7 +406,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 406 | if (parentPlatform == null) { | 406 | if (parentPlatform == null) { |
| 407 | return false; | 407 | return false; |
| 408 | } | 408 | } |
| 409 | - logger.info("[发送 移动位置订阅] {}/{}->{},{}", parentPlatform.getServerGBId(), gpsMsgInfo.getId(), gpsMsgInfo.getLng(), gpsMsgInfo.getLat()); | 409 | + if (logger.isDebugEnabled()) { |
| 410 | + logger.debug("[发送 移动位置订阅] {}/{}->{},{}", parentPlatform.getServerGBId(), gpsMsgInfo.getId(), gpsMsgInfo.getLng(), gpsMsgInfo.getLat()); | ||
| 411 | + } | ||
| 412 | + | ||
| 410 | try { | 413 | try { |
| 411 | String characterSet = parentPlatform.getCharacterSet(); | 414 | String characterSet = parentPlatform.getCharacterSet(); |
| 412 | StringBuffer deviceStatusXml = new StringBuffer(600); | 415 | StringBuffer deviceStatusXml = new StringBuffer(600); |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
| @@ -141,6 +141,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen | @@ -141,6 +141,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen | ||
| 141 | device.setStreamMode("UDP"); | 141 | device.setStreamMode("UDP"); |
| 142 | device.setCharset("GB2312"); | 142 | device.setCharset("GB2312"); |
| 143 | device.setGeoCoordSys("WGS84"); | 143 | device.setGeoCoordSys("WGS84"); |
| 144 | + device.setTreeType("CivilCode"); | ||
| 144 | device.setDeviceId(deviceId); | 145 | device.setDeviceId(deviceId); |
| 145 | } | 146 | } |
| 146 | device.setIp(received); | 147 | device.setIp(received); |
src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
| @@ -249,23 +249,26 @@ public class XmlUtil { | @@ -249,23 +249,26 @@ public class XmlUtil { | ||
| 249 | }else { | 249 | }else { |
| 250 | deviceChannel.setParentId(parentId); | 250 | deviceChannel.setParentId(parentId); |
| 251 | } | 251 | } |
| 252 | - }else { | ||
| 253 | - if (deviceChannel.getChannelId().length() <= 10) { // 此时为行政区划, 上下级行政区划使用DeviceId关联 | ||
| 254 | - deviceChannel.setParentId(deviceChannel.getChannelId().substring(0, deviceChannel.getChannelId().length() - 2)); | ||
| 255 | - }else if (deviceChannel.getChannelId().length() == 20) { | ||
| 256 | - if (Integer.parseInt(deviceChannel.getChannelId().substring(10, 13)) == 216) { // 虚拟组织 | ||
| 257 | - deviceChannel.setParentId(businessGroupID); | ||
| 258 | - }else if (Integer.parseInt(device.getDeviceId().substring(10, 13) )== 118) {//NVR 如果上级设备编号是NVR则直接将NVR的编号设置给通道的上级编号 | ||
| 259 | - deviceChannel.setParentId(device.getDeviceId()); | ||
| 260 | - }else if (deviceChannel.getCivilCode() != null) { | ||
| 261 | - // 设备, 无parentId的20位是使用CivilCode表示上级的设备, | ||
| 262 | - // 注:215 业务分组是需要有parentId的 | ||
| 263 | - deviceChannel.setParentId(deviceChannel.getCivilCode()); | ||
| 264 | - } | ||
| 265 | - }else { | ||
| 266 | - deviceChannel.setParentId(deviceChannel.getDeviceId()); | ||
| 267 | - } | ||
| 268 | } | 252 | } |
| 253 | + deviceChannel.setBusinessGroupId(businessGroupID); | ||
| 254 | + | ||
| 255 | +// else { | ||
| 256 | +// if (deviceChannel.getChannelId().length() <= 10) { // 此时为行政区划, 上下级行政区划使用DeviceId关联 | ||
| 257 | +// deviceChannel.setParentId(deviceChannel.getChannelId().substring(0, deviceChannel.getChannelId().length() - 2)); | ||
| 258 | +// }else if (deviceChannel.getChannelId().length() == 20) { | ||
| 259 | +// if (Integer.parseInt(deviceChannel.getChannelId().substring(10, 13)) == 216) { // 虚拟组织 | ||
| 260 | +// deviceChannel.setBusinessGroupId(businessGroupID); | ||
| 261 | +// }else if (Integer.parseInt(device.getDeviceId().substring(10, 13) )== 118) {//NVR 如果上级设备编号是NVR则直接将NVR的编号设置给通道的上级编号 | ||
| 262 | +// deviceChannel.setParentId(device.getDeviceId()); | ||
| 263 | +// }else if (deviceChannel.getCivilCode() != null) { | ||
| 264 | +// // 设备, 无parentId的20位是使用CivilCode表示上级的设备, | ||
| 265 | +// // 注:215 业务分组是需要有parentId的 | ||
| 266 | +// deviceChannel.setParentId(deviceChannel.getCivilCode()); | ||
| 267 | +// } | ||
| 268 | +// }else { | ||
| 269 | +// deviceChannel.setParentId(deviceChannel.getDeviceId()); | ||
| 270 | +// } | ||
| 271 | +// } | ||
| 269 | 272 | ||
| 270 | if (XmlUtil.getText(itemDevice, "SafetyWay") == null | 273 | if (XmlUtil.getText(itemDevice, "SafetyWay") == null |
| 271 | || XmlUtil.getText(itemDevice, "SafetyWay") == "") { | 274 | || XmlUtil.getText(itemDevice, "SafetyWay") == "") { |
src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java
| 1 | package com.genersoft.iot.vmp.service; | 1 | package com.genersoft.iot.vmp.service; |
| 2 | 2 | ||
| 3 | import com.genersoft.iot.vmp.gb28181.bean.Device; | 3 | import com.genersoft.iot.vmp.gb28181.bean.Device; |
| 4 | +import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | ||
| 4 | import com.genersoft.iot.vmp.gb28181.bean.SyncStatus; | 5 | import com.genersoft.iot.vmp.gb28181.bean.SyncStatus; |
| 6 | +import com.genersoft.iot.vmp.vmanager.bean.BaseTree; | ||
| 5 | 7 | ||
| 6 | import java.util.List; | 8 | import java.util.List; |
| 7 | 9 | ||
| @@ -110,4 +112,21 @@ public interface IDeviceService { | @@ -110,4 +112,21 @@ public interface IDeviceService { | ||
| 110 | * @param device 设备信息 | 112 | * @param device 设备信息 |
| 111 | */ | 113 | */ |
| 112 | void updateDevice(Device device); | 114 | void updateDevice(Device device); |
| 115 | + | ||
| 116 | + /** | ||
| 117 | + * 树形查询接口 | ||
| 118 | + * @param deviceId 设备ID | ||
| 119 | + * @param parentId 父ID | ||
| 120 | + * @param onlyCatalog 只获取目录 | ||
| 121 | + * @return | ||
| 122 | + */ | ||
| 123 | + List<BaseTree<DeviceChannel>> queryVideoDeviceTree(String deviceId, String parentId, boolean onlyCatalog); | ||
| 124 | + | ||
| 125 | + /** | ||
| 126 | + * 查询树节点下的通道 | ||
| 127 | + * @param deviceId 设备ID | ||
| 128 | + * @param parentId 父ID | ||
| 129 | + * @return | ||
| 130 | + */ | ||
| 131 | + List<DeviceChannel> queryVideoDeviceInTreeNode(String deviceId, String parentId); | ||
| 113 | } | 132 | } |
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
| 1 | package com.genersoft.iot.vmp.service.impl; | 1 | package com.genersoft.iot.vmp.service.impl; |
| 2 | 2 | ||
| 3 | import com.genersoft.iot.vmp.conf.DynamicTask; | 3 | import com.genersoft.iot.vmp.conf.DynamicTask; |
| 4 | -import com.genersoft.iot.vmp.gb28181.bean.Device; | ||
| 5 | -import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | ||
| 6 | -import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; | 4 | +import com.genersoft.iot.vmp.gb28181.bean.*; |
| 7 | import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; | 5 | import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; |
| 8 | import com.genersoft.iot.vmp.gb28181.task.ISubscribeTask; | 6 | import com.genersoft.iot.vmp.gb28181.task.ISubscribeTask; |
| 9 | import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander; | 7 | import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander; |
| @@ -12,20 +10,23 @@ import com.genersoft.iot.vmp.gb28181.utils.Coordtransform; | @@ -12,20 +10,23 @@ import com.genersoft.iot.vmp.gb28181.utils.Coordtransform; | ||
| 12 | import com.genersoft.iot.vmp.service.IDeviceService; | 10 | import com.genersoft.iot.vmp.service.IDeviceService; |
| 13 | import com.genersoft.iot.vmp.gb28181.task.impl.CatalogSubscribeTask; | 11 | import com.genersoft.iot.vmp.gb28181.task.impl.CatalogSubscribeTask; |
| 14 | import com.genersoft.iot.vmp.gb28181.task.impl.MobilePositionSubscribeTask; | 12 | import com.genersoft.iot.vmp.gb28181.task.impl.MobilePositionSubscribeTask; |
| 15 | -import com.genersoft.iot.vmp.gb28181.bean.SyncStatus; | ||
| 16 | import com.genersoft.iot.vmp.service.IMediaServerService; | 13 | import com.genersoft.iot.vmp.service.IMediaServerService; |
| 17 | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | 14 | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
| 18 | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; | 15 | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; |
| 19 | import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; | 16 | import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; |
| 20 | import com.genersoft.iot.vmp.storager.dao.DeviceMapper; | 17 | import com.genersoft.iot.vmp.storager.dao.DeviceMapper; |
| 21 | import com.genersoft.iot.vmp.utils.DateUtil; | 18 | import com.genersoft.iot.vmp.utils.DateUtil; |
| 19 | +import com.genersoft.iot.vmp.vmanager.bean.BaseTree; | ||
| 22 | import org.slf4j.Logger; | 20 | import org.slf4j.Logger; |
| 23 | import org.slf4j.LoggerFactory; | 21 | import org.slf4j.LoggerFactory; |
| 24 | import org.springframework.beans.factory.annotation.Autowired; | 22 | import org.springframework.beans.factory.annotation.Autowired; |
| 23 | +import org.springframework.jdbc.support.incrementer.AbstractIdentityColumnMaxValueIncrementer; | ||
| 25 | import org.springframework.stereotype.Service; | 24 | import org.springframework.stereotype.Service; |
| 26 | import org.springframework.util.StringUtils; | 25 | import org.springframework.util.StringUtils; |
| 27 | 26 | ||
| 28 | import java.time.Instant; | 27 | import java.time.Instant; |
| 28 | +import java.util.ArrayList; | ||
| 29 | +import java.util.Collections; | ||
| 29 | import java.util.List; | 30 | import java.util.List; |
| 30 | import java.util.concurrent.TimeUnit; | 31 | import java.util.concurrent.TimeUnit; |
| 31 | 32 | ||
| @@ -341,4 +342,180 @@ public class DeviceServiceImpl implements IDeviceService { | @@ -341,4 +342,180 @@ public class DeviceServiceImpl implements IDeviceService { | ||
| 341 | } | 342 | } |
| 342 | storage.updateChannels(device.getDeviceId(), deviceChannels); | 343 | storage.updateChannels(device.getDeviceId(), deviceChannels); |
| 343 | } | 344 | } |
| 345 | + | ||
| 346 | + | ||
| 347 | + @Override | ||
| 348 | + public List<BaseTree<DeviceChannel>> queryVideoDeviceTree(String deviceId, String parentId, boolean onlyCatalog) { | ||
| 349 | + Device device = deviceMapper.getDeviceByDeviceId(deviceId); | ||
| 350 | + if (device == null) { | ||
| 351 | + return null; | ||
| 352 | + } | ||
| 353 | + if (parentId == null || parentId.equals(deviceId)) { | ||
| 354 | + // 字根节点开始查询 | ||
| 355 | + List<DeviceChannel> rootNodes = getRootNodes(deviceId, "CivilCode".equals(device.getTreeType()), true, !onlyCatalog); | ||
| 356 | + return transportChannelsToTree(rootNodes, ""); | ||
| 357 | + } | ||
| 358 | + | ||
| 359 | + if ("CivilCode".equals(device.getTreeType())) { | ||
| 360 | + if (parentId.length()%2 != 0) { | ||
| 361 | + return null; | ||
| 362 | + } | ||
| 363 | + // 使用行政区划展示树 | ||
| 364 | + if (parentId.length() > 10) { | ||
| 365 | + // TODO 可能是行政区划与业务分组混杂的情形 | ||
| 366 | + return null; | ||
| 367 | + } | ||
| 368 | + | ||
| 369 | + if (parentId.length() == 10 ) { | ||
| 370 | + if (onlyCatalog) { | ||
| 371 | + return null; | ||
| 372 | + } | ||
| 373 | + // parentId为行业编码, 其下不会再有行政区划 | ||
| 374 | + List<DeviceChannel> channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); | ||
| 375 | + List<BaseTree<DeviceChannel>> trees = transportChannelsToTree(channels, parentId); | ||
| 376 | + return trees; | ||
| 377 | + } | ||
| 378 | + // 查询其下的行政区划和摄像机 | ||
| 379 | + List<DeviceChannel> channelsForCivilCode = deviceChannelMapper.getChannelsWithCivilCodeAndLength(deviceId, parentId, parentId.length() + 2); | ||
| 380 | + if (!onlyCatalog) { | ||
| 381 | + List<DeviceChannel> channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); | ||
| 382 | + channelsForCivilCode.addAll(channels); | ||
| 383 | + } | ||
| 384 | + List<BaseTree<DeviceChannel>> trees = transportChannelsToTree(channelsForCivilCode, parentId); | ||
| 385 | + return trees; | ||
| 386 | + | ||
| 387 | + } | ||
| 388 | + // 使用业务分组展示树 | ||
| 389 | + if ("BusinessGroup".equals(device.getTreeType())) { | ||
| 390 | + if (parentId.length() < 14 ) { | ||
| 391 | + return null; | ||
| 392 | + } | ||
| 393 | + List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, parentId, null, null, null); | ||
| 394 | + List<BaseTree<DeviceChannel>> trees = transportChannelsToTree(deviceChannels, parentId); | ||
| 395 | + return trees; | ||
| 396 | + } | ||
| 397 | + | ||
| 398 | + return null; | ||
| 399 | + } | ||
| 400 | + | ||
| 401 | + @Override | ||
| 402 | + public List<DeviceChannel> queryVideoDeviceInTreeNode(String deviceId, String parentId) { | ||
| 403 | + Device device = deviceMapper.getDeviceByDeviceId(deviceId); | ||
| 404 | + if (device == null) { | ||
| 405 | + return null; | ||
| 406 | + } | ||
| 407 | + if (parentId == null || parentId.equals(deviceId)) { | ||
| 408 | + // 字根节点开始查询 | ||
| 409 | + List<DeviceChannel> rootNodes = getRootNodes(deviceId, "CivilCode".equals(device.getTreeType()), false, true); | ||
| 410 | + return rootNodes; | ||
| 411 | + } | ||
| 412 | + | ||
| 413 | + if ("CivilCode".equals(device.getTreeType())) { | ||
| 414 | + if (parentId.length()%2 != 0) { | ||
| 415 | + return null; | ||
| 416 | + } | ||
| 417 | + // 使用行政区划展示树 | ||
| 418 | + if (parentId.length() > 10) { | ||
| 419 | + // TODO 可能是行政区划与业务分组混杂的情形 | ||
| 420 | + return null; | ||
| 421 | + } | ||
| 422 | + | ||
| 423 | + if (parentId.length() == 10 ) { | ||
| 424 | + // parentId为行业编码, 其下不会再有行政区划 | ||
| 425 | + List<DeviceChannel> channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); | ||
| 426 | + return channels; | ||
| 427 | + } | ||
| 428 | + // 查询其下的行政区划和摄像机 | ||
| 429 | + List<DeviceChannel> channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); | ||
| 430 | + return channels; | ||
| 431 | + | ||
| 432 | + } | ||
| 433 | + // 使用业务分组展示树 | ||
| 434 | + if ("BusinessGroup".equals(device.getTreeType())) { | ||
| 435 | + if (parentId.length() < 14 ) { | ||
| 436 | + return null; | ||
| 437 | + } | ||
| 438 | + List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, parentId, null, null, null); | ||
| 439 | + return deviceChannels; | ||
| 440 | + } | ||
| 441 | + | ||
| 442 | + return null; | ||
| 443 | + } | ||
| 444 | + | ||
| 445 | + private List<BaseTree<DeviceChannel>> transportChannelsToTree(List<DeviceChannel> channels, String parentId) { | ||
| 446 | + if (channels == null) { | ||
| 447 | + return null; | ||
| 448 | + } | ||
| 449 | + List<BaseTree<DeviceChannel>> treeNotes = new ArrayList<>(); | ||
| 450 | + if (channels.size() == 0) { | ||
| 451 | + return treeNotes; | ||
| 452 | + } | ||
| 453 | + for (DeviceChannel channel : channels) { | ||
| 454 | + | ||
| 455 | + BaseTree<DeviceChannel> node = new BaseTree<>(); | ||
| 456 | + node.setId(channel.getChannelId()); | ||
| 457 | + node.setDeviceId(channel.getDeviceId()); | ||
| 458 | + node.setName(channel.getName()); | ||
| 459 | + node.setPid(parentId); | ||
| 460 | + node.setBasicData(channel); | ||
| 461 | + node.setParent(false); | ||
| 462 | + if (channel.getChannelId().length() > 8) { | ||
| 463 | + String gbCodeType = channel.getChannelId().substring(10, 13); | ||
| 464 | + node.setParent(gbCodeType.equals(ChannelIdType.BUSINESS_GROUP) || gbCodeType.equals(ChannelIdType.VIRTUAL_ORGANIZATION) ); | ||
| 465 | + }else { | ||
| 466 | + node.setParent(true); | ||
| 467 | + } | ||
| 468 | + treeNotes.add(node); | ||
| 469 | + } | ||
| 470 | + Collections.sort(treeNotes); | ||
| 471 | + return treeNotes; | ||
| 472 | + } | ||
| 473 | + | ||
| 474 | + private List<DeviceChannel> getRootNodes(String deviceId, boolean isCivilCode, boolean haveCatalog, boolean haveChannel) { | ||
| 475 | + if (!haveCatalog && !haveChannel) { | ||
| 476 | + return null; | ||
| 477 | + } | ||
| 478 | + List<DeviceChannel> result = new ArrayList<>(); | ||
| 479 | + if (isCivilCode) { | ||
| 480 | + // 使用行政区划 | ||
| 481 | + Integer length= deviceChannelMapper.getChannelMinLength(deviceId); | ||
| 482 | + if (length == null) { | ||
| 483 | + return null; | ||
| 484 | + } | ||
| 485 | + if (length <= 10) { | ||
| 486 | + if (haveCatalog) { | ||
| 487 | + List<DeviceChannel> provinceNode = deviceChannelMapper.getChannelsWithCivilCodeAndLength(deviceId, null, length); | ||
| 488 | + if (provinceNode != null && provinceNode.size() > 0) { | ||
| 489 | + result.addAll(provinceNode); | ||
| 490 | + } | ||
| 491 | + } | ||
| 492 | + | ||
| 493 | + if (haveChannel) { | ||
| 494 | + // 查询那些civilCode不在通道中的不规范通道,放置在根目录 | ||
| 495 | + List<DeviceChannel> nonstandardNode = deviceChannelMapper.getChannelWithoutCiviCode(deviceId); | ||
| 496 | + if (nonstandardNode != null && nonstandardNode.size() > 0) { | ||
| 497 | + result.addAll(nonstandardNode); | ||
| 498 | + } | ||
| 499 | + } | ||
| 500 | + }else { | ||
| 501 | + if (haveChannel) { | ||
| 502 | + List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, null, null, null, null); | ||
| 503 | + if (deviceChannels != null && deviceChannels.size() > 0) { | ||
| 504 | + result.addAll(deviceChannels); | ||
| 505 | + } | ||
| 506 | + } | ||
| 507 | + } | ||
| 508 | + | ||
| 509 | + }else { | ||
| 510 | + // 使用业务分组+虚拟组织 | ||
| 511 | + | ||
| 512 | + // 只获取业务分组 | ||
| 513 | + List<DeviceChannel> deviceChannels = deviceChannelMapper.getBusinessGroups(deviceId, ChannelIdType.BUSINESS_GROUP); | ||
| 514 | + if (deviceChannels != null && deviceChannels.size() > 0) { | ||
| 515 | + result.addAll(deviceChannels); | ||
| 516 | + } | ||
| 517 | + } | ||
| 518 | + return result; | ||
| 519 | + } | ||
| 520 | + | ||
| 344 | } | 521 | } |
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
| @@ -123,7 +123,7 @@ public class PlayServiceImpl implements IPlayService { | @@ -123,7 +123,7 @@ public class PlayServiceImpl implements IPlayService { | ||
| 123 | result.onCompletion(()->{ | 123 | result.onCompletion(()->{ |
| 124 | // 点播结束时调用截图接口 | 124 | // 点播结束时调用截图接口 |
| 125 | // TODO 应该在上流时调用更好,结束也可能是错误结束 | 125 | // TODO 应该在上流时调用更好,结束也可能是错误结束 |
| 126 | - String path = "static/static/snap/"; | 126 | + String path = "snap"; |
| 127 | String fileName = deviceId + "_" + channelId + ".jpg"; | 127 | String fileName = deviceId + "_" + channelId + ".jpg"; |
| 128 | ResponseEntity responseEntity = (ResponseEntity)result.getResult(); | 128 | ResponseEntity responseEntity = (ResponseEntity)result.getResult(); |
| 129 | if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { | 129 | if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { |
| @@ -178,7 +178,6 @@ public class PlayServiceImpl implements IPlayService { | @@ -178,7 +178,6 @@ public class PlayServiceImpl implements IPlayService { | ||
| 178 | 178 | ||
| 179 | } | 179 | } |
| 180 | 180 | ||
| 181 | - | ||
| 182 | } | 181 | } |
| 183 | if (streamInfo == null) { | 182 | if (streamInfo == null) { |
| 184 | String streamId = null; | 183 | String streamId = null; |
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
| 1 | package com.genersoft.iot.vmp.storager.dao; | 1 | package com.genersoft.iot.vmp.storager.dao; |
| 2 | 2 | ||
| 3 | +import com.genersoft.iot.vmp.gb28181.bean.Device; | ||
| 3 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 4 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; |
| 4 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannelInPlatform; | 5 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannelInPlatform; |
| 5 | import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; | 6 | import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; |
| @@ -17,10 +18,12 @@ public interface DeviceChannelMapper { | @@ -17,10 +18,12 @@ public interface DeviceChannelMapper { | ||
| 17 | 18 | ||
| 18 | @Insert("INSERT INTO device_channel (channelId, deviceId, name, manufacture, model, owner, civilCode, block, " + | 19 | @Insert("INSERT INTO device_channel (channelId, deviceId, name, manufacture, model, owner, civilCode, block, " + |
| 19 | "address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " + | 20 | "address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " + |
| 20 | - "ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, longitudeWgs84, latitudeWgs84, createTime, updateTime) " + | 21 | + "ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, " + |
| 22 | + "longitudeWgs84, latitudeWgs84, createTime, updateTime, businessGroupId) " + | ||
| 21 | "VALUES ('${channelId}', '${deviceId}', '${name}', '${manufacture}', '${model}', '${owner}', '${civilCode}', '${block}'," + | 23 | "VALUES ('${channelId}', '${deviceId}', '${name}', '${manufacture}', '${model}', '${owner}', '${civilCode}', '${block}'," + |
| 22 | "'${address}', ${parental}, '${parentId}', ${safetyWay}, ${registerWay}, '${certNum}', ${certifiable}, ${errCode}, '${secrecy}', " + | 24 | "'${address}', ${parental}, '${parentId}', ${safetyWay}, ${registerWay}, '${certNum}', ${certifiable}, ${errCode}, '${secrecy}', " + |
| 23 | - "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status}, '${streamId}', ${longitude}, ${latitude}, ${longitudeGcj02}, ${latitudeGcj02}, ${longitudeWgs84}, ${latitudeWgs84},'${createTime}', '${updateTime}')") | 25 | + "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status}, '${streamId}', ${longitude}, ${latitude}, ${longitudeGcj02}, " + |
| 26 | + "${latitudeGcj02}, ${longitudeWgs84}, ${latitudeWgs84},'${createTime}', '${updateTime}', '${businessGroupId}')") | ||
| 24 | int add(DeviceChannel channel); | 27 | int add(DeviceChannel channel); |
| 25 | 28 | ||
| 26 | @Update(value = {" <script>" + | 29 | @Update(value = {" <script>" + |
| @@ -54,6 +57,7 @@ public interface DeviceChannelMapper { | @@ -54,6 +57,7 @@ public interface DeviceChannelMapper { | ||
| 54 | "<if test='latitudeGcj02 != null'>, latitudeGcj02=${latitudeGcj02}</if>" + | 57 | "<if test='latitudeGcj02 != null'>, latitudeGcj02=${latitudeGcj02}</if>" + |
| 55 | "<if test='longitudeWgs84 != null'>, longitudeWgs84=${longitudeWgs84}</if>" + | 58 | "<if test='longitudeWgs84 != null'>, longitudeWgs84=${longitudeWgs84}</if>" + |
| 56 | "<if test='latitudeWgs84 != null'>, latitudeWgs84=${latitudeWgs84}</if>" + | 59 | "<if test='latitudeWgs84 != null'>, latitudeWgs84=${latitudeWgs84}</if>" + |
| 60 | + "<if test='businessGroupId != null'>, businessGroupId=#{businessGroupId}</if>" + | ||
| 57 | "WHERE deviceId='${deviceId}' AND channelId='${channelId}'"+ | 61 | "WHERE deviceId='${deviceId}' AND channelId='${channelId}'"+ |
| 58 | " </script>"}) | 62 | " </script>"}) |
| 59 | int update(DeviceChannel channel); | 63 | int update(DeviceChannel channel); |
| @@ -143,7 +147,7 @@ public interface DeviceChannelMapper { | @@ -143,7 +147,7 @@ public interface DeviceChannelMapper { | ||
| 143 | "(channelId, deviceId, name, manufacture, model, owner, civilCode, block, subCount, " + | 147 | "(channelId, deviceId, name, manufacture, model, owner, civilCode, block, subCount, " + |
| 144 | " address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " + | 148 | " address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " + |
| 145 | " ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, " + | 149 | " ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, " + |
| 146 | - " longitudeWgs84, latitudeWgs84, createTime, updateTime) " + | 150 | + " longitudeWgs84, latitudeWgs84, createTime, updateTime, businessGroupId) " + |
| 147 | "values " + | 151 | "values " + |
| 148 | "<foreach collection='addChannels' index='index' item='item' separator=','> " + | 152 | "<foreach collection='addChannels' index='index' item='item' separator=','> " + |
| 149 | "('${item.channelId}', '${item.deviceId}', '${item.name}', '${item.manufacture}', '${item.model}', " + | 153 | "('${item.channelId}', '${item.deviceId}', '${item.name}', '${item.manufacture}', '${item.model}', " + |
| @@ -152,7 +156,7 @@ public interface DeviceChannelMapper { | @@ -152,7 +156,7 @@ public interface DeviceChannelMapper { | ||
| 152 | "'${item.certNum}', ${item.certifiable}, ${item.errCode}, '${item.secrecy}', " + | 156 | "'${item.certNum}', ${item.certifiable}, ${item.errCode}, '${item.secrecy}', " + |
| 153 | "'${item.ipAddress}', ${item.port}, '${item.password}', ${item.PTZType}, ${item.status}, " + | 157 | "'${item.ipAddress}', ${item.port}, '${item.password}', ${item.PTZType}, ${item.status}, " + |
| 154 | "'${item.streamId}', ${item.longitude}, ${item.latitude},${item.longitudeGcj02}, " + | 158 | "'${item.streamId}', ${item.longitude}, ${item.latitude},${item.longitudeGcj02}, " + |
| 155 | - "${item.latitudeGcj02},${item.longitudeWgs84}, ${item.latitudeWgs84},'${item.createTime}', '${item.updateTime}')" + | 159 | + "${item.latitudeGcj02},${item.longitudeWgs84}, ${item.latitudeWgs84},'${item.createTime}', '${item.updateTime}, '${item.businessGroupId}')" + |
| 156 | "</foreach> " + | 160 | "</foreach> " + |
| 157 | "ON DUPLICATE KEY UPDATE " + | 161 | "ON DUPLICATE KEY UPDATE " + |
| 158 | "updateTime=VALUES(updateTime), " + | 162 | "updateTime=VALUES(updateTime), " + |
| @@ -183,7 +187,8 @@ public interface DeviceChannelMapper { | @@ -183,7 +187,8 @@ public interface DeviceChannelMapper { | ||
| 183 | "longitudeGcj02=VALUES(longitudeGcj02), " + | 187 | "longitudeGcj02=VALUES(longitudeGcj02), " + |
| 184 | "latitudeGcj02=VALUES(latitudeGcj02), " + | 188 | "latitudeGcj02=VALUES(latitudeGcj02), " + |
| 185 | "longitudeWgs84=VALUES(longitudeWgs84), " + | 189 | "longitudeWgs84=VALUES(longitudeWgs84), " + |
| 186 | - "latitudeWgs84=VALUES(latitudeWgs84) " + | 190 | + "latitudeWgs84=VALUES(latitudeWgs84), " + |
| 191 | + "businessGroupId=VALUES(businessGroupId) " + | ||
| 187 | "</script>") | 192 | "</script>") |
| 188 | int batchAdd(List<DeviceChannel> addChannels); | 193 | int batchAdd(List<DeviceChannel> addChannels); |
| 189 | 194 | ||
| @@ -221,6 +226,7 @@ public interface DeviceChannelMapper { | @@ -221,6 +226,7 @@ public interface DeviceChannelMapper { | ||
| 221 | "<if test='item.latitudeGcj02 != null'>, latitudeGcj02=${item.latitudeGcj02}</if>" + | 226 | "<if test='item.latitudeGcj02 != null'>, latitudeGcj02=${item.latitudeGcj02}</if>" + |
| 222 | "<if test='item.longitudeWgs84 != null'>, longitudeWgs84=${item.longitudeWgs84}</if>" + | 227 | "<if test='item.longitudeWgs84 != null'>, longitudeWgs84=${item.longitudeWgs84}</if>" + |
| 223 | "<if test='item.latitudeWgs84 != null'>, latitudeWgs84=${item.latitudeWgs84}</if>" + | 228 | "<if test='item.latitudeWgs84 != null'>, latitudeWgs84=${item.latitudeWgs84}</if>" + |
| 229 | + "<if test='item.businessGroupId != null'>, businessGroupId=${item.businessGroupId}</if>" + | ||
| 224 | "WHERE deviceId='${item.deviceId}' AND channelId='${item.channelId}'"+ | 230 | "WHERE deviceId='${item.deviceId}' AND channelId='${item.channelId}'"+ |
| 225 | "</foreach>" + | 231 | "</foreach>" + |
| 226 | "</script>"}) | 232 | "</script>"}) |
| @@ -277,4 +283,33 @@ public interface DeviceChannelMapper { | @@ -277,4 +283,33 @@ public interface DeviceChannelMapper { | ||
| 277 | 283 | ||
| 278 | @Select("select * from device_channel where longitude*latitude > 0 and deviceId = #{deviceId}") | 284 | @Select("select * from device_channel where longitude*latitude > 0 and deviceId = #{deviceId}") |
| 279 | List<DeviceChannel> getAllChannelWithCoordinate(String deviceId); | 285 | List<DeviceChannel> getAllChannelWithCoordinate(String deviceId); |
| 286 | + | ||
| 287 | + | ||
| 288 | + @Select(value = {" <script>" + | ||
| 289 | + "select * " + | ||
| 290 | + "from device_channel " + | ||
| 291 | + "where deviceId=#{deviceId}" + | ||
| 292 | + " <if test='parentId != null' > and left(channelId, ${parentId.length()}) = #{parentId}</if>" + | ||
| 293 | + " <if test='length != null' > and length(channelId)=${length}</if>" + | ||
| 294 | + " </script>"}) | ||
| 295 | + List<DeviceChannel> getChannelsWithCivilCodeAndLength(String deviceId, String parentId, Integer length); | ||
| 296 | + | ||
| 297 | + @Select(value = {" <script>" + | ||
| 298 | + "select * " + | ||
| 299 | + "from device_channel " + | ||
| 300 | + "where deviceId=#{deviceId} and length(channelId)>14 and civilCode=#{parentId}" + | ||
| 301 | + " </script>"}) | ||
| 302 | + List<DeviceChannel> getChannelsByCivilCode(String deviceId, String parentId); | ||
| 303 | + | ||
| 304 | + @Select("select min(length(channelId)) as minLength " + | ||
| 305 | + "from device_channel " + | ||
| 306 | + "where deviceId=#{deviceId}") | ||
| 307 | + Integer getChannelMinLength(String deviceId); | ||
| 308 | + | ||
| 309 | + @Select("select * from device_channel where deviceId=#{deviceId} and civilCode not in " + | ||
| 310 | + "(select civilCode from device_channel where deviceId=#{deviceId} group by civilCode)") | ||
| 311 | + List<DeviceChannel> getChannelWithoutCiviCode(String deviceId); | ||
| 312 | + | ||
| 313 | + @Select("select * from device_channel where deviceId=#{deviceId} and SUBSTRING(channelId, 11, 3)=#{typeCode}") | ||
| 314 | + List<DeviceChannel> getBusinessGroups(String deviceId, String typeCode); | ||
| 280 | } | 315 | } |
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
| @@ -39,6 +39,7 @@ public interface DeviceMapper { | @@ -39,6 +39,7 @@ public interface DeviceMapper { | ||
| 39 | "subscribeCycleForAlarm," + | 39 | "subscribeCycleForAlarm," + |
| 40 | "ssrcCheck," + | 40 | "ssrcCheck," + |
| 41 | "geoCoordSys," + | 41 | "geoCoordSys," + |
| 42 | + "treeType," + | ||
| 42 | "online" + | 43 | "online" + |
| 43 | ") VALUES (" + | 44 | ") VALUES (" + |
| 44 | "#{deviceId}," + | 45 | "#{deviceId}," + |
| @@ -63,6 +64,7 @@ public interface DeviceMapper { | @@ -63,6 +64,7 @@ public interface DeviceMapper { | ||
| 63 | "#{subscribeCycleForAlarm}," + | 64 | "#{subscribeCycleForAlarm}," + |
| 64 | "#{ssrcCheck}," + | 65 | "#{ssrcCheck}," + |
| 65 | "#{geoCoordSys}," + | 66 | "#{geoCoordSys}," + |
| 67 | + "#{treeType}," + | ||
| 66 | "#{online}" + | 68 | "#{online}" + |
| 67 | ")") | 69 | ")") |
| 68 | int add(Device device); | 70 | int add(Device device); |
| @@ -90,6 +92,7 @@ public interface DeviceMapper { | @@ -90,6 +92,7 @@ public interface DeviceMapper { | ||
| 90 | "<if test=\"subscribeCycleForAlarm != null\">, subscribeCycleForAlarm=${subscribeCycleForAlarm}</if>" + | 92 | "<if test=\"subscribeCycleForAlarm != null\">, subscribeCycleForAlarm=${subscribeCycleForAlarm}</if>" + |
| 91 | "<if test=\"ssrcCheck != null\">, ssrcCheck=${ssrcCheck}</if>" + | 93 | "<if test=\"ssrcCheck != null\">, ssrcCheck=${ssrcCheck}</if>" + |
| 92 | "<if test=\"geoCoordSys != null\">, geoCoordSys=#{geoCoordSys}</if>" + | 94 | "<if test=\"geoCoordSys != null\">, geoCoordSys=#{geoCoordSys}</if>" + |
| 95 | + "<if test=\"treeType != null\">, treeType=#{treeType}</if>" + | ||
| 93 | "WHERE deviceId='${deviceId}'"+ | 96 | "WHERE deviceId='${deviceId}'"+ |
| 94 | " </script>"}) | 97 | " </script>"}) |
| 95 | int update(Device device); | 98 | int update(Device device); |
src/main/java/com/genersoft/iot/vmp/vmanager/bean/BaseTree.java
0 → 100644
| 1 | +package com.genersoft.iot.vmp.vmanager.bean; | ||
| 2 | + | ||
| 3 | +import org.jetbrains.annotations.NotNull; | ||
| 4 | + | ||
| 5 | +import java.text.Collator; | ||
| 6 | +import java.util.Comparator; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * @author lin | ||
| 10 | + */ | ||
| 11 | +public class BaseTree<T> implements Comparable<BaseTree>{ | ||
| 12 | + private String id; | ||
| 13 | + | ||
| 14 | + private String deviceId; | ||
| 15 | + private String pid; | ||
| 16 | + private String name; | ||
| 17 | + private boolean parent; | ||
| 18 | + | ||
| 19 | + private T basicData; | ||
| 20 | + | ||
| 21 | + public String getId() { | ||
| 22 | + return id; | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + public void setId(String id) { | ||
| 26 | + this.id = id; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + public String getDeviceId() { | ||
| 30 | + return deviceId; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + public void setDeviceId(String deviceId) { | ||
| 34 | + this.deviceId = deviceId; | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + public String getPid() { | ||
| 38 | + return pid; | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + public void setPid(String pid) { | ||
| 42 | + this.pid = pid; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + public String getName() { | ||
| 46 | + return name; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + public void setName(String name) { | ||
| 50 | + this.name = name; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + public T getBasicData() { | ||
| 54 | + return basicData; | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + public void setBasicData(T basicData) { | ||
| 58 | + this.basicData = basicData; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public boolean isParent() { | ||
| 62 | + return parent; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + public void setParent(boolean parent) { | ||
| 66 | + this.parent = parent; | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + @Override | ||
| 70 | + public int compareTo(@NotNull BaseTree treeNode) { | ||
| 71 | + if (this.parent || treeNode.isParent()) { | ||
| 72 | + if (!this.parent && !treeNode.isParent()) { | ||
| 73 | + Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); | ||
| 74 | + return cmp.compare(treeNode.getName(), this.getName()); | ||
| 75 | + }else { | ||
| 76 | + if (this.isParent()) { | ||
| 77 | + return 1; | ||
| 78 | + }else { | ||
| 79 | + return -1; | ||
| 80 | + } | ||
| 81 | + } | ||
| 82 | + }else{ | ||
| 83 | + Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); | ||
| 84 | + return cmp.compare(treeNode.getName(), this.getName()); | ||
| 85 | + } | ||
| 86 | + } | ||
| 87 | +} |
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
| @@ -15,6 +15,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; | @@ -15,6 +15,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; | ||
| 15 | import com.genersoft.iot.vmp.service.IDeviceService; | 15 | import com.genersoft.iot.vmp.service.IDeviceService; |
| 16 | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | 16 | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
| 17 | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; | 17 | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; |
| 18 | +import com.genersoft.iot.vmp.vmanager.bean.BaseTree; | ||
| 18 | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; | 19 | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; |
| 19 | import com.github.pagehelper.PageInfo; | 20 | import com.github.pagehelper.PageInfo; |
| 20 | import io.swagger.annotations.Api; | 21 | import io.swagger.annotations.Api; |
| @@ -479,4 +480,99 @@ public class DeviceQuery { | @@ -479,4 +480,99 @@ public class DeviceQuery { | ||
| 479 | resp.setStatus(HttpServletResponse.SC_NOT_FOUND); | 480 | resp.setStatus(HttpServletResponse.SC_NOT_FOUND); |
| 480 | } | 481 | } |
| 481 | } | 482 | } |
| 483 | + | ||
| 484 | + /** | ||
| 485 | + * 查询国标树 | ||
| 486 | + * @param deviceId 设备ID | ||
| 487 | + * @param parentId 父ID | ||
| 488 | + * @param page 当前页 | ||
| 489 | + * @param count 每页条数 | ||
| 490 | + * @return 国标设备 | ||
| 491 | + */ | ||
| 492 | + @ApiOperation("查询国标树") | ||
| 493 | + @ApiImplicitParams({ | ||
| 494 | + @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true, dataTypeClass = String.class), | ||
| 495 | + @ApiImplicitParam(name = "parentId", value = "父ID", required = false, dataTypeClass = String.class), | ||
| 496 | + @ApiImplicitParam(name = "onlyCatalog", value = "只获取目录", required = false, dataTypeClass = Boolean.class), | ||
| 497 | + @ApiImplicitParam(name="page", value = "当前页", required = true, dataTypeClass = Integer.class), | ||
| 498 | + @ApiImplicitParam(name="count", value = "每页条数", required = true, dataTypeClass = Integer.class), | ||
| 499 | + }) | ||
| 500 | + @GetMapping("/tree/{deviceId}") | ||
| 501 | + public ResponseEntity<PageInfo> getTree(@PathVariable String deviceId, @RequestParam(required = false) String parentId, @RequestParam(required = false) Boolean onlyCatalog, int page, int count){ | ||
| 502 | + | ||
| 503 | + | ||
| 504 | + if (page <= 0) { | ||
| 505 | + page = 1; | ||
| 506 | + } | ||
| 507 | + if (onlyCatalog == null) { | ||
| 508 | + onlyCatalog = false; | ||
| 509 | + } | ||
| 510 | + | ||
| 511 | + List<BaseTree<DeviceChannel>> treeData = deviceService.queryVideoDeviceTree(deviceId, parentId, onlyCatalog); | ||
| 512 | + if (treeData == null || (page - 1) * count > treeData.size()) { | ||
| 513 | + PageInfo<BaseTree<DeviceChannel>> pageInfo = new PageInfo<>(); | ||
| 514 | + pageInfo.setPageNum(page); | ||
| 515 | + pageInfo.setTotal(treeData == null? 0 : treeData.size()); | ||
| 516 | + pageInfo.setSize(0); | ||
| 517 | + pageInfo.setList(new ArrayList<>()); | ||
| 518 | + return new ResponseEntity<>(pageInfo,HttpStatus.OK); | ||
| 519 | + } | ||
| 520 | + | ||
| 521 | + int toIndex = Math.min(page * count, treeData.size()); | ||
| 522 | + // 处理分页 | ||
| 523 | + List<BaseTree<DeviceChannel>> trees = treeData.subList((page - 1) * count, toIndex); | ||
| 524 | + PageInfo<BaseTree<DeviceChannel>> pageInfo = new PageInfo<>(); | ||
| 525 | + pageInfo.setPageNum(page); | ||
| 526 | + pageInfo.setTotal(treeData.size()); | ||
| 527 | + pageInfo.setSize(trees.size()); | ||
| 528 | + pageInfo.setList(trees); | ||
| 529 | + | ||
| 530 | + return new ResponseEntity<>(pageInfo,HttpStatus.OK); | ||
| 531 | + } | ||
| 532 | + | ||
| 533 | + | ||
| 534 | + /** | ||
| 535 | + * 查询国标树下的通道 | ||
| 536 | + * @param deviceId 设备ID | ||
| 537 | + * @param parentId 父ID | ||
| 538 | + * @param page 当前页 | ||
| 539 | + * @param count 每页条数 | ||
| 540 | + * @return 国标设备 | ||
| 541 | + */ | ||
| 542 | + @ApiOperation("查询国标树下的通道") | ||
| 543 | + @ApiImplicitParams({ | ||
| 544 | + @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true, dataTypeClass = String.class), | ||
| 545 | + @ApiImplicitParam(name = "parentId", value = "父ID", required = false, dataTypeClass = String.class), | ||
| 546 | + @ApiImplicitParam(name="page", value = "当前页", required = true, dataTypeClass = Integer.class), | ||
| 547 | + @ApiImplicitParam(name="count", value = "每页条数", required = true, dataTypeClass = Integer.class), | ||
| 548 | + }) | ||
| 549 | + @GetMapping("/tree/channel/{deviceId}") | ||
| 550 | + public ResponseEntity<PageInfo> getChannelInTreeNode(@PathVariable String deviceId, @RequestParam(required = false) String parentId, int page, int count){ | ||
| 551 | + | ||
| 552 | + | ||
| 553 | + if (page <= 0) { | ||
| 554 | + page = 1; | ||
| 555 | + } | ||
| 556 | + | ||
| 557 | + List<DeviceChannel> treeData = deviceService.queryVideoDeviceInTreeNode(deviceId, parentId); | ||
| 558 | + if (treeData == null || (page - 1) * count > treeData.size()) { | ||
| 559 | + PageInfo<BaseTree<DeviceChannel>> pageInfo = new PageInfo<>(); | ||
| 560 | + pageInfo.setPageNum(page); | ||
| 561 | + pageInfo.setTotal(treeData == null? 0 : treeData.size()); | ||
| 562 | + pageInfo.setSize(0); | ||
| 563 | + pageInfo.setList(new ArrayList<>()); | ||
| 564 | + return new ResponseEntity<>(pageInfo,HttpStatus.OK); | ||
| 565 | + } | ||
| 566 | + | ||
| 567 | + int toIndex = Math.min(page * count, treeData.size()); | ||
| 568 | + // 处理分页 | ||
| 569 | + List<DeviceChannel> trees = treeData.subList((page - 1) * count, toIndex); | ||
| 570 | + PageInfo<DeviceChannel> pageInfo = new PageInfo<>(); | ||
| 571 | + pageInfo.setPageNum(page); | ||
| 572 | + pageInfo.setTotal(treeData.size()); | ||
| 573 | + pageInfo.setSize(trees.size()); | ||
| 574 | + pageInfo.setList(trees); | ||
| 575 | + | ||
| 576 | + return new ResponseEntity<>(pageInfo,HttpStatus.OK); | ||
| 577 | + } | ||
| 482 | } | 578 | } |
src/main/resources/logback-spring-local.xml
| @@ -11,6 +11,11 @@ | @@ -11,6 +11,11 @@ | ||
| 11 | <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> | 11 | <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> |
| 12 | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern> | 12 | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern> |
| 13 | </encoder> | 13 | </encoder> |
| 14 | + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> | ||
| 15 | + <!--与ThresholdFilter的区别,允许onmatch--> | ||
| 16 | + <!--设置日志级别 接收info级别的日志--> | ||
| 17 | + <level>DEBUG</level> | ||
| 18 | + </filter> | ||
| 14 | </appender> | 19 | </appender> |
| 15 | 20 | ||
| 16 | <!-- 按照每天生成日志文件 DEBUG以上级别的日志,仅用于测试环境,正式环境为info级别以上的日志--> | 21 | <!-- 按照每天生成日志文件 DEBUG以上级别的日志,仅用于测试环境,正式环境为info级别以上的日志--> |
web_src/package-lock.json
| @@ -22,7 +22,9 @@ | @@ -22,7 +22,9 @@ | ||
| 22 | "vue-clipboards": "^1.3.0", | 22 | "vue-clipboards": "^1.3.0", |
| 23 | "vue-contextmenujs": "^1.3.13", | 23 | "vue-contextmenujs": "^1.3.13", |
| 24 | "vue-cookies": "^1.7.4", | 24 | "vue-cookies": "^1.7.4", |
| 25 | - "vue-router": "^3.1.6" | 25 | + "vue-giant-tree": "^0.1.5", |
| 26 | + "vue-router": "^3.1.6", | ||
| 27 | + "vue-ztree-2.0": "^1.0.4" | ||
| 26 | }, | 28 | }, |
| 27 | "devDependencies": { | 29 | "devDependencies": { |
| 28 | "autoprefixer": "^7.1.2", | 30 | "autoprefixer": "^7.1.2", |
| @@ -50,7 +52,7 @@ | @@ -50,7 +52,7 @@ | ||
| 50 | "postcss-url": "^7.2.1", | 52 | "postcss-url": "^7.2.1", |
| 51 | "rimraf": "^2.6.0", | 53 | "rimraf": "^2.6.0", |
| 52 | "semver": "^5.3.0", | 54 | "semver": "^5.3.0", |
| 53 | - "shelljs": "^0.7.6", | 55 | + "shelljs": "^0.8.5", |
| 54 | "uglifyjs-webpack-plugin": "^1.1.1", | 56 | "uglifyjs-webpack-plugin": "^1.1.1", |
| 55 | "url-loader": "^0.5.8", | 57 | "url-loader": "^0.5.8", |
| 56 | "vue-loader": "^13.3.0", | 58 | "vue-loader": "^13.3.0", |
| @@ -116,6 +118,17 @@ | @@ -116,6 +118,17 @@ | ||
| 116 | "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", | 118 | "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", |
| 117 | "dev": true | 119 | "dev": true |
| 118 | }, | 120 | }, |
| 121 | + "node_modules/@ztree/ztree_v3": { | ||
| 122 | + "version": "3.5.48", | ||
| 123 | + "resolved": "https://registry.npmmirror.com/@ztree/ztree_v3/-/ztree_v3-3.5.48.tgz", | ||
| 124 | + "integrity": "sha512-4dSA1g26T3j/O3I89+r/Palg+a+xwMGRS1etZoggnCGBPoOrwW8VGA3zitJCK/Yd7eEMX+LfKTRJjEGiWpoN3w==", | ||
| 125 | + "dependencies": { | ||
| 126 | + "jquery": ">=1.4.4" | ||
| 127 | + }, | ||
| 128 | + "engines": { | ||
| 129 | + "node": ">=0.10.0" | ||
| 130 | + } | ||
| 131 | + }, | ||
| 119 | "node_modules/accepts": { | 132 | "node_modules/accepts": { |
| 120 | "version": "1.3.7", | 133 | "version": "1.3.7", |
| 121 | "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", | 134 | "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", |
| @@ -6034,6 +6047,11 @@ | @@ -6034,6 +6047,11 @@ | ||
| 6034 | "node": ">=0.10.0" | 6047 | "node": ">=0.10.0" |
| 6035 | } | 6048 | } |
| 6036 | }, | 6049 | }, |
| 6050 | + "node_modules/jquery": { | ||
| 6051 | + "version": "3.6.0", | ||
| 6052 | + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.6.0.tgz", | ||
| 6053 | + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" | ||
| 6054 | + }, | ||
| 6037 | "node_modules/js-base64": { | 6055 | "node_modules/js-base64": { |
| 6038 | "version": "2.6.4", | 6056 | "version": "2.6.4", |
| 6039 | "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.6.4.tgz?cache=0&sync_timestamp=1599897619557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-base64%2Fdownload%2Fjs-base64-2.6.4.tgz", | 6057 | "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.6.4.tgz?cache=0&sync_timestamp=1599897619557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-base64%2Fdownload%2Fjs-base64-2.6.4.tgz", |
| @@ -11655,9 +11673,9 @@ | @@ -11655,9 +11673,9 @@ | ||
| 11655 | } | 11673 | } |
| 11656 | }, | 11674 | }, |
| 11657 | "node_modules/shelljs": { | 11675 | "node_modules/shelljs": { |
| 11658 | - "version": "0.7.8", | ||
| 11659 | - "resolved": "https://registry.npm.taobao.org/shelljs/download/shelljs-0.7.8.tgz", | ||
| 11660 | - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", | 11676 | + "version": "0.8.5", |
| 11677 | + "resolved": "https://registry.npmmirror.com/shelljs/-/shelljs-0.8.5.tgz", | ||
| 11678 | + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", | ||
| 11661 | "dev": true, | 11679 | "dev": true, |
| 11662 | "dependencies": { | 11680 | "dependencies": { |
| 11663 | "glob": "^7.0.0", | 11681 | "glob": "^7.0.0", |
| @@ -11668,8 +11686,7 @@ | @@ -11668,8 +11686,7 @@ | ||
| 11668 | "shjs": "bin/shjs" | 11686 | "shjs": "bin/shjs" |
| 11669 | }, | 11687 | }, |
| 11670 | "engines": { | 11688 | "engines": { |
| 11671 | - "iojs": "*", | ||
| 11672 | - "node": ">=0.11.0" | 11689 | + "node": ">=4" |
| 11673 | } | 11690 | } |
| 11674 | }, | 11691 | }, |
| 11675 | "node_modules/shellwords": { | 11692 | "node_modules/shellwords": { |
| @@ -13068,6 +13085,15 @@ | @@ -13068,6 +13085,15 @@ | ||
| 13068 | "resolved": "https://registry.npm.taobao.org/vue-cookies/download/vue-cookies-1.7.4.tgz?cache=0&sync_timestamp=1598941352058&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-cookies%2Fdownload%2Fvue-cookies-1.7.4.tgz", | 13085 | "resolved": "https://registry.npm.taobao.org/vue-cookies/download/vue-cookies-1.7.4.tgz?cache=0&sync_timestamp=1598941352058&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-cookies%2Fdownload%2Fvue-cookies-1.7.4.tgz", |
| 13069 | "integrity": "sha1-0kHQoEMdoHlYN2UdELTXPnyNPo0=" | 13086 | "integrity": "sha1-0kHQoEMdoHlYN2UdELTXPnyNPo0=" |
| 13070 | }, | 13087 | }, |
| 13088 | + "node_modules/vue-giant-tree": { | ||
| 13089 | + "version": "0.1.5", | ||
| 13090 | + "resolved": "https://registry.npmmirror.com/vue-giant-tree/-/vue-giant-tree-0.1.5.tgz", | ||
| 13091 | + "integrity": "sha512-P3KEHSZU2NkpWl6frss+sJLO0DLrtarMNLeTV/IGU2/w50rgrlKbKNr/ckK6BBVdWXAJYlYf6HUTNkKvGq5hlg==", | ||
| 13092 | + "dependencies": { | ||
| 13093 | + "@ztree/ztree_v3": "^3.5.44", | ||
| 13094 | + "jquery": "^3.5.1" | ||
| 13095 | + } | ||
| 13096 | + }, | ||
| 13071 | "node_modules/vue-hot-reload-api": { | 13097 | "node_modules/vue-hot-reload-api": { |
| 13072 | "version": "2.3.4", | 13098 | "version": "2.3.4", |
| 13073 | "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", | 13099 | "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", |
| @@ -13175,6 +13201,11 @@ | @@ -13175,6 +13201,11 @@ | ||
| 13175 | "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", | 13201 | "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", |
| 13176 | "dev": true | 13202 | "dev": true |
| 13177 | }, | 13203 | }, |
| 13204 | + "node_modules/vue-ztree-2.0": { | ||
| 13205 | + "version": "1.0.4", | ||
| 13206 | + "resolved": "https://registry.npmmirror.com/vue-ztree-2.0/-/vue-ztree-2.0-1.0.4.tgz", | ||
| 13207 | + "integrity": "sha512-d7KZsquEYpM0jD/k1uwOMFCd08L6++7zwRESaL2sF43OtRFCump8BxcLpjusBIHpFadPvOSMMnK5P41y+ZiTlA==" | ||
| 13208 | + }, | ||
| 13178 | "node_modules/watchpack": { | 13209 | "node_modules/watchpack": { |
| 13179 | "version": "1.7.4", | 13210 | "version": "1.7.4", |
| 13180 | "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.4.tgz?cache=0&sync_timestamp=1600385388649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.4.tgz", | 13211 | "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.4.tgz?cache=0&sync_timestamp=1600385388649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.4.tgz", |
| @@ -14419,6 +14450,14 @@ | @@ -14419,6 +14450,14 @@ | ||
| 14419 | "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", | 14450 | "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", |
| 14420 | "dev": true | 14451 | "dev": true |
| 14421 | }, | 14452 | }, |
| 14453 | + "@ztree/ztree_v3": { | ||
| 14454 | + "version": "3.5.48", | ||
| 14455 | + "resolved": "https://registry.npmmirror.com/@ztree/ztree_v3/-/ztree_v3-3.5.48.tgz", | ||
| 14456 | + "integrity": "sha512-4dSA1g26T3j/O3I89+r/Palg+a+xwMGRS1etZoggnCGBPoOrwW8VGA3zitJCK/Yd7eEMX+LfKTRJjEGiWpoN3w==", | ||
| 14457 | + "requires": { | ||
| 14458 | + "jquery": ">=1.4.4" | ||
| 14459 | + } | ||
| 14460 | + }, | ||
| 14422 | "accepts": { | 14461 | "accepts": { |
| 14423 | "version": "1.3.7", | 14462 | "version": "1.3.7", |
| 14424 | "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", | 14463 | "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", |
| @@ -19488,6 +19527,11 @@ | @@ -19488,6 +19527,11 @@ | ||
| 19488 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", | 19527 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", |
| 19489 | "dev": true | 19528 | "dev": true |
| 19490 | }, | 19529 | }, |
| 19530 | + "jquery": { | ||
| 19531 | + "version": "3.6.0", | ||
| 19532 | + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.6.0.tgz", | ||
| 19533 | + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" | ||
| 19534 | + }, | ||
| 19491 | "js-base64": { | 19535 | "js-base64": { |
| 19492 | "version": "2.6.4", | 19536 | "version": "2.6.4", |
| 19493 | "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.6.4.tgz?cache=0&sync_timestamp=1599897619557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-base64%2Fdownload%2Fjs-base64-2.6.4.tgz", | 19537 | "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.6.4.tgz?cache=0&sync_timestamp=1599897619557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-base64%2Fdownload%2Fjs-base64-2.6.4.tgz", |
| @@ -24156,9 +24200,9 @@ | @@ -24156,9 +24200,9 @@ | ||
| 24156 | "dev": true | 24200 | "dev": true |
| 24157 | }, | 24201 | }, |
| 24158 | "shelljs": { | 24202 | "shelljs": { |
| 24159 | - "version": "0.7.8", | ||
| 24160 | - "resolved": "https://registry.npm.taobao.org/shelljs/download/shelljs-0.7.8.tgz", | ||
| 24161 | - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", | 24203 | + "version": "0.8.5", |
| 24204 | + "resolved": "https://registry.npmmirror.com/shelljs/-/shelljs-0.8.5.tgz", | ||
| 24205 | + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", | ||
| 24162 | "dev": true, | 24206 | "dev": true, |
| 24163 | "requires": { | 24207 | "requires": { |
| 24164 | "glob": "^7.0.0", | 24208 | "glob": "^7.0.0", |
| @@ -25352,6 +25396,15 @@ | @@ -25352,6 +25396,15 @@ | ||
| 25352 | "resolved": "https://registry.npm.taobao.org/vue-cookies/download/vue-cookies-1.7.4.tgz?cache=0&sync_timestamp=1598941352058&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-cookies%2Fdownload%2Fvue-cookies-1.7.4.tgz", | 25396 | "resolved": "https://registry.npm.taobao.org/vue-cookies/download/vue-cookies-1.7.4.tgz?cache=0&sync_timestamp=1598941352058&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-cookies%2Fdownload%2Fvue-cookies-1.7.4.tgz", |
| 25353 | "integrity": "sha1-0kHQoEMdoHlYN2UdELTXPnyNPo0=" | 25397 | "integrity": "sha1-0kHQoEMdoHlYN2UdELTXPnyNPo0=" |
| 25354 | }, | 25398 | }, |
| 25399 | + "vue-giant-tree": { | ||
| 25400 | + "version": "0.1.5", | ||
| 25401 | + "resolved": "https://registry.npmmirror.com/vue-giant-tree/-/vue-giant-tree-0.1.5.tgz", | ||
| 25402 | + "integrity": "sha512-P3KEHSZU2NkpWl6frss+sJLO0DLrtarMNLeTV/IGU2/w50rgrlKbKNr/ckK6BBVdWXAJYlYf6HUTNkKvGq5hlg==", | ||
| 25403 | + "requires": { | ||
| 25404 | + "@ztree/ztree_v3": "^3.5.44", | ||
| 25405 | + "jquery": "^3.5.1" | ||
| 25406 | + } | ||
| 25407 | + }, | ||
| 25355 | "vue-hot-reload-api": { | 25408 | "vue-hot-reload-api": { |
| 25356 | "version": "2.3.4", | 25409 | "version": "2.3.4", |
| 25357 | "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", | 25410 | "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", |
| @@ -25448,6 +25501,11 @@ | @@ -25448,6 +25501,11 @@ | ||
| 25448 | "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", | 25501 | "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", |
| 25449 | "dev": true | 25502 | "dev": true |
| 25450 | }, | 25503 | }, |
| 25504 | + "vue-ztree-2.0": { | ||
| 25505 | + "version": "1.0.4", | ||
| 25506 | + "resolved": "https://registry.npmmirror.com/vue-ztree-2.0/-/vue-ztree-2.0-1.0.4.tgz", | ||
| 25507 | + "integrity": "sha512-d7KZsquEYpM0jD/k1uwOMFCd08L6++7zwRESaL2sF43OtRFCump8BxcLpjusBIHpFadPvOSMMnK5P41y+ZiTlA==" | ||
| 25508 | + }, | ||
| 25451 | "watchpack": { | 25509 | "watchpack": { |
| 25452 | "version": "1.7.4", | 25510 | "version": "1.7.4", |
| 25453 | "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.4.tgz?cache=0&sync_timestamp=1600385388649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.4.tgz", | 25511 | "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.4.tgz?cache=0&sync_timestamp=1600385388649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.4.tgz", |
web_src/package.json
| @@ -24,7 +24,9 @@ | @@ -24,7 +24,9 @@ | ||
| 24 | "vue-clipboards": "^1.3.0", | 24 | "vue-clipboards": "^1.3.0", |
| 25 | "vue-contextmenujs": "^1.3.13", | 25 | "vue-contextmenujs": "^1.3.13", |
| 26 | "vue-cookies": "^1.7.4", | 26 | "vue-cookies": "^1.7.4", |
| 27 | - "vue-router": "^3.1.6" | 27 | + "vue-giant-tree": "^0.1.5", |
| 28 | + "vue-router": "^3.1.6", | ||
| 29 | + "vue-ztree-2.0": "^1.0.4" | ||
| 28 | }, | 30 | }, |
| 29 | "devDependencies": { | 31 | "devDependencies": { |
| 30 | "autoprefixer": "^7.1.2", | 32 | "autoprefixer": "^7.1.2", |
web_src/src/components/DeviceList.vue
| @@ -56,11 +56,11 @@ | @@ -56,11 +56,11 @@ | ||
| 56 | @mouseover="getTooltipContent(scope.row.deviceId)">刷新 | 56 | @mouseover="getTooltipContent(scope.row.deviceId)">刷新 |
| 57 | </el-button> | 57 | </el-button> |
| 58 | <el-divider direction="vertical"></el-divider> | 58 | <el-divider direction="vertical"></el-divider> |
| 59 | - <el-button type="text" size="medium" icon="el-icon-video-camera" v-bind:disabled="scope.row.online==0" | 59 | + <el-button type="text" size="medium" icon="el-icon-video-camera" |
| 60 | @click="showChannelList(scope.row)">通道 | 60 | @click="showChannelList(scope.row)">通道 |
| 61 | </el-button> | 61 | </el-button> |
| 62 | <el-divider direction="vertical"></el-divider> | 62 | <el-divider direction="vertical"></el-divider> |
| 63 | - <el-button size="medium" icon="el-icon-location" v-bind:disabled="scope.row.online==0" type="text" | 63 | + <el-button size="medium" icon="el-icon-location" type="text" |
| 64 | @click="showDevicePosition(scope.row)">定位 | 64 | @click="showDevicePosition(scope.row)">定位 |
| 65 | </el-button> | 65 | </el-button> |
| 66 | <el-divider direction="vertical"></el-divider> | 66 | <el-divider direction="vertical"></el-divider> |
| @@ -192,7 +192,7 @@ export default { | @@ -192,7 +192,7 @@ export default { | ||
| 192 | 192 | ||
| 193 | }, | 193 | }, |
| 194 | showChannelList: function (row) { | 194 | showChannelList: function (row) { |
| 195 | - this.$router.push(`/channelList/${row.deviceId}/0/15/1`); | 195 | + this.$router.push(`/channelList/${row.deviceId}/0`); |
| 196 | }, | 196 | }, |
| 197 | showDevicePosition: function (row) { | 197 | showDevicePosition: function (row) { |
| 198 | this.$router.push(`/map?deviceId=${row.deviceId}`); | 198 | this.$router.push(`/map?deviceId=${row.deviceId}`); |
web_src/src/components/channelList.vue
| @@ -7,104 +7,116 @@ | @@ -7,104 +7,116 @@ | ||
| 7 | 通道列表 | 7 | 通道列表 |
| 8 | </div> | 8 | </div> |
| 9 | <div class="page-header-btn"> | 9 | <div class="page-header-btn"> |
| 10 | - 搜索: | ||
| 11 | - <el-input @input="search" style="margin-right: 1rem; width: auto;" size="mini" placeholder="关键字" | ||
| 12 | - prefix-icon="el-icon-search" v-model="searchSrt" clearable></el-input> | 10 | + <div v-if="!showTree" style="display: inline;"> |
| 11 | + 搜索: | ||
| 12 | + <el-input @input="search" style="margin-right: 1rem; width: auto;" size="mini" placeholder="关键字" | ||
| 13 | + prefix-icon="el-icon-search" v-model="searchSrt" clearable></el-input> | ||
| 13 | 14 | ||
| 14 | - 通道类型: | ||
| 15 | - <el-select size="mini" @change="search" style="margin-right: 1rem;" v-model="channelType" placeholder="请选择" | ||
| 16 | - default-first-option> | ||
| 17 | - <el-option label="全部" value=""></el-option> | ||
| 18 | - <el-option label="设备" value="false"></el-option> | ||
| 19 | - <el-option label="子目录" value="true"></el-option> | ||
| 20 | - </el-select> | ||
| 21 | - 在线状态: | ||
| 22 | - <el-select size="mini" style="margin-right: 1rem;" @change="search" v-model="online" placeholder="请选择" | ||
| 23 | - default-first-option> | ||
| 24 | - <el-option label="全部" value=""></el-option> | ||
| 25 | - <el-option label="在线" value="true"></el-option> | ||
| 26 | - <el-option label="离线" value="false"></el-option> | ||
| 27 | - </el-select> | 15 | + 通道类型: |
| 16 | + <el-select size="mini" @change="search" style="margin-right: 1rem;" v-model="channelType" placeholder="请选择" | ||
| 17 | + default-first-option> | ||
| 18 | + <el-option label="全部" value=""></el-option> | ||
| 19 | + <el-option label="设备" value="false"></el-option> | ||
| 20 | + <el-option label="子目录" value="true"></el-option> | ||
| 21 | + </el-select> | ||
| 22 | + 在线状态: | ||
| 23 | + <el-select size="mini" style="margin-right: 1rem;" @change="search" v-model="online" placeholder="请选择" | ||
| 24 | + default-first-option> | ||
| 25 | + <el-option label="全部" value=""></el-option> | ||
| 26 | + <el-option label="在线" value="true"></el-option> | ||
| 27 | + <el-option label="离线" value="false"></el-option> | ||
| 28 | + </el-select> | ||
| 29 | + </div> | ||
| 28 | <el-button icon="el-icon-refresh-right" circle size="mini" @click="refresh()"></el-button> | 30 | <el-button icon="el-icon-refresh-right" circle size="mini" @click="refresh()"></el-button> |
| 31 | + <el-button v-if="showTree" icon="iconfont icon-list" circle size="mini" @click="switchList()"></el-button> | ||
| 32 | + <el-button v-if="!showTree" icon="iconfont icon-tree" circle size="mini" @click="switchTree()"></el-button> | ||
| 29 | </div> | 33 | </div> |
| 30 | </div> | 34 | </div> |
| 31 | <devicePlayer ref="devicePlayer" v-loading="isLoging"></devicePlayer> | 35 | <devicePlayer ref="devicePlayer" v-loading="isLoging"></devicePlayer> |
| 32 | - <!--设备列表--> | ||
| 33 | - <el-table ref="channelListTable" :data="deviceChannelList" :height="winHeight" style="width: 100%" header-row-class-name="table-header"> | ||
| 34 | - <el-table-column prop="channelId" label="通道编号" min-width="200"> | ||
| 35 | - </el-table-column> | ||
| 36 | - <el-table-column prop="deviceId" label="设备编号" min-width="200"> | ||
| 37 | - </el-table-column> | ||
| 38 | - <el-table-column prop="name" label="通道名称" min-width="200"> | ||
| 39 | - </el-table-column> | ||
| 40 | - <el-table-column label="快照" min-width="120"> | ||
| 41 | - <template v-slot:default="scope"> | ||
| 42 | - <el-image | ||
| 43 | - :src="getSnap(scope.row)" | ||
| 44 | - :preview-src-list="getBigSnap(scope.row)" | ||
| 45 | - @error="getSnapErrorEvent(scope.row.deviceId, scope.row.channelId)" | ||
| 46 | - :fit="'contain'" | ||
| 47 | - style="width: 60px"> | ||
| 48 | - <div slot="error" class="image-slot"> | ||
| 49 | - <i class="el-icon-picture-outline"></i> | ||
| 50 | - </div> | ||
| 51 | - </el-image> | ||
| 52 | - </template> | ||
| 53 | - </el-table-column> | ||
| 54 | - <el-table-column prop="subCount" label="子节点数" min-width="120"> | ||
| 55 | - </el-table-column> | ||
| 56 | - <el-table-column prop="manufacture" label="厂家" min-width="120"> | ||
| 57 | - </el-table-column> | ||
| 58 | - <el-table-column label="位置信息" min-width="200"> | ||
| 59 | - <template slot-scope="scope"> | ||
| 60 | - <span v-if="scope.row.longitude*scope.row.latitude > 0">{{ scope.row.longitude }},<br>{{ scope.row.latitude }}</span> | ||
| 61 | - <span v-if="scope.row.longitude*scope.row.latitude === 0">无</span> | ||
| 62 | - </template> | ||
| 63 | - </el-table-column> | ||
| 64 | - <el-table-column prop="ptztypeText" label="云台类型" min-width="120"/> | ||
| 65 | - <el-table-column label="开启音频" min-width="120"> | ||
| 66 | - <template slot-scope="scope"> | ||
| 67 | - <el-switch @change="updateChannel(scope.row)" v-model="scope.row.hasAudio" active-color="#409EFF"> | ||
| 68 | - </el-switch> | ||
| 69 | - </template> | ||
| 70 | - </el-table-column> | ||
| 71 | - <el-table-column label="状态" min-width="120"> | ||
| 72 | - <template slot-scope="scope"> | ||
| 73 | - <div slot="reference" class="name-wrapper"> | ||
| 74 | - <el-tag size="medium" v-if="scope.row.status === 1">在线</el-tag> | ||
| 75 | - <el-tag size="medium" type="info" v-if="scope.row.status === 0">离线</el-tag> | ||
| 76 | - </div> | ||
| 77 | - </template> | ||
| 78 | - </el-table-column> | 36 | + <el-container v-loading="isLoging" style="height: 82vh;"> |
| 37 | + <el-aside width="auto" style="height: 82vh; background-color: #ffffff; overflow: auto" v-if="showTree" > | ||
| 38 | + <DeviceTree ref="deviceTree" :device="device" :onlyCatalog="true" :clickEvent="treeNodeClickEvent" ></DeviceTree> | ||
| 39 | + </el-aside> | ||
| 40 | + <el-main style="padding: 5px;"> | ||
| 41 | + <el-table ref="channelListTable" :data="deviceChannelList" :height="winHeight" style="width: 100%" header-row-class-name="table-header"> | ||
| 42 | + <el-table-column prop="channelId" label="通道编号" min-width="200"> | ||
| 43 | + </el-table-column> | ||
| 44 | + <el-table-column prop="deviceId" label="设备编号" min-width="200"> | ||
| 45 | + </el-table-column> | ||
| 46 | + <el-table-column prop="name" label="通道名称" min-width="200"> | ||
| 47 | + </el-table-column> | ||
| 48 | + <el-table-column label="快照" min-width="120"> | ||
| 49 | + <template v-slot:default="scope"> | ||
| 50 | + <el-image | ||
| 51 | + :src="getSnap(scope.row)" | ||
| 52 | + :preview-src-list="getBigSnap(scope.row)" | ||
| 53 | + @error="getSnapErrorEvent(scope.row.deviceId, scope.row.channelId)" | ||
| 54 | + :fit="'contain'" | ||
| 55 | + style="width: 60px"> | ||
| 56 | + <div slot="error" class="image-slot"> | ||
| 57 | + <i class="el-icon-picture-outline"></i> | ||
| 58 | + </div> | ||
| 59 | + </el-image> | ||
| 60 | + </template> | ||
| 61 | + </el-table-column> | ||
| 62 | + <el-table-column prop="subCount" label="子节点数" min-width="120"> | ||
| 63 | + </el-table-column> | ||
| 64 | + <el-table-column prop="manufacture" label="厂家" min-width="120"> | ||
| 65 | + </el-table-column> | ||
| 66 | + <el-table-column label="位置信息" min-width="200"> | ||
| 67 | + <template slot-scope="scope"> | ||
| 68 | + <span v-if="scope.row.longitude*scope.row.latitude > 0">{{ scope.row.longitude }},<br>{{ scope.row.latitude }}</span> | ||
| 69 | + <span v-if="scope.row.longitude*scope.row.latitude === 0">无</span> | ||
| 70 | + </template> | ||
| 71 | + </el-table-column> | ||
| 72 | + <el-table-column prop="ptztypeText" label="云台类型" min-width="120"/> | ||
| 73 | + <el-table-column label="开启音频" min-width="120"> | ||
| 74 | + <template slot-scope="scope"> | ||
| 75 | + <el-switch @change="updateChannel(scope.row)" v-model="scope.row.hasAudio" active-color="#409EFF"> | ||
| 76 | + </el-switch> | ||
| 77 | + </template> | ||
| 78 | + </el-table-column> | ||
| 79 | + <el-table-column label="状态" min-width="120"> | ||
| 80 | + <template slot-scope="scope"> | ||
| 81 | + <div slot="reference" class="name-wrapper"> | ||
| 82 | + <el-tag size="medium" v-if="scope.row.status === 1">在线</el-tag> | ||
| 83 | + <el-tag size="medium" type="info" v-if="scope.row.status === 0">离线</el-tag> | ||
| 84 | + </div> | ||
| 85 | + </template> | ||
| 86 | + </el-table-column> | ||
| 79 | 87 | ||
| 80 | 88 | ||
| 81 | - <el-table-column label="操作" min-width="280" fixed="right"> | ||
| 82 | - <template slot-scope="scope"> | ||
| 83 | - <!-- <el-button size="mini" icon="el-icon-video-play" v-if="scope.row.parental == 0" @click="sendDevicePush(scope.row)">播放</el-button> --> | ||
| 84 | - <el-button size="medium" icon="el-icon-video-play" type="text" @click="sendDevicePush(scope.row)">播放</el-button> | ||
| 85 | - <el-button size="medium" icon="el-icon-switch-button" type="text" style="color: #f56c6c" v-if="!!scope.row.streamId" | ||
| 86 | - @click="stopDevicePush(scope.row)">停止 | ||
| 87 | - </el-button> | ||
| 88 | - <el-divider direction="vertical"></el-divider> | ||
| 89 | - <el-button size="medium" icon="el-icon-s-open" type="text" v-if="scope.row.subCount > 0 || scope.row.parental === 1" | ||
| 90 | - @click="changeSubchannel(scope.row)">查看 | ||
| 91 | - </el-button> | ||
| 92 | - <el-divider v-if="scope.row.subCount > 0 || scope.row.parental === 1" direction="vertical"></el-divider> | ||
| 93 | - <el-button size="medium" icon="el-icon-video-camera" type="text" @click="queryRecords(scope.row)">设备录像 | ||
| 94 | - </el-button> | ||
| 95 | - </template> | ||
| 96 | - </el-table-column> | ||
| 97 | - </el-table> | ||
| 98 | - <el-pagination | ||
| 99 | - style="float: right" | ||
| 100 | - @size-change="handleSizeChange" | ||
| 101 | - @current-change="currentChange" | ||
| 102 | - :current-page="currentPage" | ||
| 103 | - :page-size="count" | ||
| 104 | - :page-sizes="[15, 25, 35, 50]" | ||
| 105 | - layout="total, sizes, prev, pager, next" | ||
| 106 | - :total="total"> | ||
| 107 | - </el-pagination> | 89 | + <el-table-column label="操作" min-width="280" fixed="right"> |
| 90 | + <template slot-scope="scope"> | ||
| 91 | + <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-video-play" type="text" @click="sendDevicePush(scope.row)">播放</el-button> | ||
| 92 | + <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-switch-button" type="text" style="color: #f56c6c" v-if="!!scope.row.streamId" | ||
| 93 | + @click="stopDevicePush(scope.row)">停止 | ||
| 94 | + </el-button> | ||
| 95 | + <el-divider direction="vertical"></el-divider> | ||
| 96 | + <el-button size="medium" icon="el-icon-s-open" type="text" v-if="scope.row.subCount > 0 || scope.row.parental === 1" | ||
| 97 | + @click="changeSubchannel(scope.row)">查看 | ||
| 98 | + </el-button> | ||
| 99 | + <el-divider v-if="scope.row.subCount > 0 || scope.row.parental === 1" direction="vertical"></el-divider> | ||
| 100 | + <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-video-camera" type="text" @click="queryRecords(scope.row)">设备录像 | ||
| 101 | + </el-button> | ||
| 102 | + </template> | ||
| 103 | + </el-table-column> | ||
| 104 | + </el-table> | ||
| 105 | + <el-pagination | ||
| 106 | + style="float: right" | ||
| 107 | + @size-change="handleSizeChange" | ||
| 108 | + @current-change="currentChange" | ||
| 109 | + :current-page="currentPage" | ||
| 110 | + :page-size="count" | ||
| 111 | + :page-sizes="[15, 25, 35, 50]" | ||
| 112 | + layout="total, sizes, prev, pager, next" | ||
| 113 | + :total="total"> | ||
| 114 | + </el-pagination> | ||
| 115 | + </el-main> | ||
| 116 | + </el-container> | ||
| 117 | + | ||
| 118 | + <!--设备列表--> | ||
| 119 | + | ||
| 108 | </div> | 120 | </div> |
| 109 | </template> | 121 | </template> |
| 110 | 122 | ||
| @@ -114,12 +126,14 @@ import uiHeader from '../layout/UiHeader.vue' | @@ -114,12 +126,14 @@ import uiHeader from '../layout/UiHeader.vue' | ||
| 114 | import moment from "moment"; | 126 | import moment from "moment"; |
| 115 | import DviceService from "./service/DeviceService"; | 127 | import DviceService from "./service/DeviceService"; |
| 116 | import DeviceService from "./service/DeviceService"; | 128 | import DeviceService from "./service/DeviceService"; |
| 129 | +import DeviceTree from "./common/DeviceTree"; | ||
| 117 | 130 | ||
| 118 | export default { | 131 | export default { |
| 119 | name: 'channelList', | 132 | name: 'channelList', |
| 120 | components: { | 133 | components: { |
| 121 | devicePlayer, | 134 | devicePlayer, |
| 122 | - uiHeader | 135 | + uiHeader, |
| 136 | + DeviceTree | ||
| 123 | }, | 137 | }, |
| 124 | data() { | 138 | data() { |
| 125 | return { | 139 | return { |
| @@ -134,12 +148,13 @@ export default { | @@ -134,12 +148,13 @@ export default { | ||
| 134 | searchSrt: "", | 148 | searchSrt: "", |
| 135 | channelType: "", | 149 | channelType: "", |
| 136 | online: "", | 150 | online: "", |
| 137 | - winHeight: window.innerHeight - 250, | ||
| 138 | - currentPage: parseInt(this.$route.params.page), | ||
| 139 | - count: parseInt(this.$route.params.count), | 151 | + winHeight: window.innerHeight - 200, |
| 152 | + currentPage: 1, | ||
| 153 | + count: 15, | ||
| 140 | total: 0, | 154 | total: 0, |
| 141 | beforeUrl: "/deviceList", | 155 | beforeUrl: "/deviceList", |
| 142 | isLoging: false, | 156 | isLoging: false, |
| 157 | + showTree: false, | ||
| 143 | loadSnap: {} | 158 | loadSnap: {} |
| 144 | }; | 159 | }; |
| 145 | }, | 160 | }, |
| @@ -172,19 +187,16 @@ export default { | @@ -172,19 +187,16 @@ export default { | ||
| 172 | initParam: function () { | 187 | initParam: function () { |
| 173 | this.deviceId = this.$route.params.deviceId; | 188 | this.deviceId = this.$route.params.deviceId; |
| 174 | this.parentChannelId = this.$route.params.parentChannelId; | 189 | this.parentChannelId = this.$route.params.parentChannelId; |
| 175 | - this.currentPage = parseInt(this.$route.params.page); | ||
| 176 | - this.count = parseInt(this.$route.params.count); | 190 | + this.currentPage = 1; |
| 191 | + this.count = 15; | ||
| 177 | if (this.parentChannelId == "" || this.parentChannelId == 0) { | 192 | if (this.parentChannelId == "" || this.parentChannelId == 0) { |
| 178 | this.beforeUrl = "/deviceList" | 193 | this.beforeUrl = "/deviceList" |
| 179 | } | 194 | } |
| 180 | 195 | ||
| 181 | }, | 196 | }, |
| 182 | currentChange: function (val) { | 197 | currentChange: function (val) { |
| 183 | - var url = `/${this.$router.currentRoute.name}/${this.deviceId}/${this.parentChannelId}/${this.count}/${val}` | ||
| 184 | - this.$router.push(url).then(() => { | ||
| 185 | - this.initParam(); | ||
| 186 | - this.initData(); | ||
| 187 | - }) | 198 | + this.currentPage = val; |
| 199 | + this.initData(); | ||
| 188 | }, | 200 | }, |
| 189 | handleSizeChange: function (val) { | 201 | handleSizeChange: function (val) { |
| 190 | this.count = val; | 202 | this.count = val; |
| @@ -316,28 +328,48 @@ export default { | @@ -316,28 +328,48 @@ export default { | ||
| 316 | }) | 328 | }) |
| 317 | }, | 329 | }, |
| 318 | showSubchannels: function (channelId) { | 330 | showSubchannels: function (channelId) { |
| 319 | - let that = this; | 331 | + if (!this.showTree) { |
| 332 | + this.$axios({ | ||
| 333 | + method: 'get', | ||
| 334 | + url: `/api/device/query/sub_channels/${this.deviceId}/${this.parentChannelId}/channels`, | ||
| 335 | + params: { | ||
| 336 | + page: this.currentPage, | ||
| 337 | + count: this.count, | ||
| 338 | + query: this.searchSrt, | ||
| 339 | + online: this.online, | ||
| 340 | + channelType: this.channelType | ||
| 341 | + } | ||
| 342 | + }).then( (res) =>{ | ||
| 343 | + this.total = res.data.total; | ||
| 344 | + this.deviceChannelList = res.data.list; | ||
| 345 | + // 防止出现表格错位 | ||
| 346 | + this.$nextTick(() => { | ||
| 347 | + this.$refs.channelListTable.doLayout(); | ||
| 348 | + }) | ||
| 349 | + }).catch(function (error) { | ||
| 350 | + console.log(error); | ||
| 351 | + }); | ||
| 352 | + }else { | ||
| 353 | + this.$axios({ | ||
| 354 | + method: 'get', | ||
| 355 | + url: `/api/device/query/tree/channel/${this.deviceId}`, | ||
| 356 | + params: { | ||
| 357 | + parentId: this.parentChannelId, | ||
| 358 | + page: this.currentPage, | ||
| 359 | + count: this.count, | ||
| 360 | + } | ||
| 361 | + }).then((res)=> { | ||
| 362 | + this.total = res.data.total; | ||
| 363 | + this.deviceChannelList = res.data.list; | ||
| 364 | + // 防止出现表格错位 | ||
| 365 | + this.$nextTick(() => { | ||
| 366 | + this.$refs.channelListTable.doLayout(); | ||
| 367 | + }) | ||
| 368 | + }).catch(function (error) { | ||
| 369 | + console.log(error); | ||
| 370 | + }); | ||
| 371 | + } | ||
| 320 | 372 | ||
| 321 | - this.$axios({ | ||
| 322 | - method: 'get', | ||
| 323 | - url: `/api/device/query/sub_channels/${this.deviceId}/${this.parentChannelId}/channels`, | ||
| 324 | - params: { | ||
| 325 | - page: that.currentPage, | ||
| 326 | - count: that.count, | ||
| 327 | - query: that.searchSrt, | ||
| 328 | - online: that.online, | ||
| 329 | - channelType: that.channelType | ||
| 330 | - } | ||
| 331 | - }).then(function (res) { | ||
| 332 | - that.total = res.data.total; | ||
| 333 | - that.deviceChannelList = res.data.list; | ||
| 334 | - // 防止出现表格错位 | ||
| 335 | - that.$nextTick(() => { | ||
| 336 | - that.$refs.channelListTable.doLayout(); | ||
| 337 | - }) | ||
| 338 | - }).catch(function (error) { | ||
| 339 | - console.log(error); | ||
| 340 | - }); | ||
| 341 | }, | 373 | }, |
| 342 | search: function () { | 374 | search: function () { |
| 343 | this.currentPage = 1; | 375 | this.currentPage = 1; |
| @@ -355,6 +387,29 @@ export default { | @@ -355,6 +387,29 @@ export default { | ||
| 355 | }, | 387 | }, |
| 356 | refresh: function () { | 388 | refresh: function () { |
| 357 | this.initData(); | 389 | this.initData(); |
| 390 | + }, | ||
| 391 | + switchTree: function (){ | ||
| 392 | + this.showTree = true; | ||
| 393 | + this.deviceChannelList = []; | ||
| 394 | + this.parentChannelId = 0; | ||
| 395 | + this.currentPage = 1; | ||
| 396 | + | ||
| 397 | + }, | ||
| 398 | + switchList: function (){ | ||
| 399 | + this.showTree = false; | ||
| 400 | + this.deviceChannelList = []; | ||
| 401 | + this.parentChannelId = 0; | ||
| 402 | + this.currentPage = 1; | ||
| 403 | + this.initData(); | ||
| 404 | + }, | ||
| 405 | + treeNodeClickEvent: function (device, data, isCatalog) { | ||
| 406 | + console.log(device) | ||
| 407 | + if (!!!data.channelId) { | ||
| 408 | + this.parentChannelId = device.deviceId; | ||
| 409 | + }else { | ||
| 410 | + this.parentChannelId = data.channelId; | ||
| 411 | + } | ||
| 412 | + this.initData(); | ||
| 358 | } | 413 | } |
| 359 | 414 | ||
| 360 | } | 415 | } |
web_src/src/components/common/DeviceTree.vue
| @@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
| 4 | <el-header>设备列表</el-header> | 4 | <el-header>设备列表</el-header> |
| 5 | <el-main style="background-color: #ffffff;"> | 5 | <el-main style="background-color: #ffffff;"> |
| 6 | <div class="device-tree-main-box"> | 6 | <div class="device-tree-main-box"> |
| 7 | - <el-tree :props="defaultProps" :load="loadNode" lazy @node-click="handleNodeClick"@node-contextmenu="handleContextMenu" style="min-width: 100%; display:inline-block !important;"> | 7 | + <el-tree ref="gdTree" :props="defaultProps" :load="loadNode" lazy @node-click="handleNodeClick"@node-contextmenu="handleContextMenu" node-key="id" style="min-width: 100%; display:inline-block !important;"> |
| 8 | <span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%"> | 8 | <span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%"> |
| 9 | <span v-if="node.data.type === 0 && node.data.online" title="在线设备" class="device-online iconfont icon-jiedianleizhukongzhongxin2"></span> | 9 | <span v-if="node.data.type === 0 && node.data.online" title="在线设备" class="device-online iconfont icon-jiedianleizhukongzhongxin2"></span> |
| 10 | <span v-if="node.data.type === 0 && !node.data.online " title="离线设备" class="device-offline iconfont icon-jiedianleizhukongzhongxin2"></span> | 10 | <span v-if="node.data.type === 0 && !node.data.online " title="离线设备" class="device-offline iconfont icon-jiedianleizhukongzhongxin2"></span> |
| @@ -47,98 +47,112 @@ export default { | @@ -47,98 +47,112 @@ export default { | ||
| 47 | } | 47 | } |
| 48 | }; | 48 | }; |
| 49 | }, | 49 | }, |
| 50 | - props: ['clickEvent', 'contextMenuEvent'], | 50 | + props: ['device', 'onlyCatalog', 'clickEvent', 'contextMenuEvent'], |
| 51 | methods: { | 51 | methods: { |
| 52 | handleNodeClick(data,node,element) { | 52 | handleNodeClick(data,node,element) { |
| 53 | - console.log("点击事件") | ||
| 54 | - console.log(data) | 53 | + let deviceNode = this.$refs.gdTree.getNode(data.userData.deviceId) |
| 55 | if(typeof (this.clickEvent) == "function") { | 54 | if(typeof (this.clickEvent) == "function") { |
| 56 | - this.clickEvent(data.userData) | 55 | + this.clickEvent(deviceNode.data.userData, data.userData, data.type === 2) |
| 57 | } | 56 | } |
| 58 | }, | 57 | }, |
| 59 | handleContextMenu(event,data,node,element) { | 58 | handleContextMenu(event,data,node,element) { |
| 60 | console.log("右键点击事件") | 59 | console.log("右键点击事件") |
| 60 | + let deviceNode = this.$refs.gdTree.getNode(data.userData.deviceId) | ||
| 61 | if(typeof (this.contextMenuEvent) == "function") { | 61 | if(typeof (this.contextMenuEvent) == "function") { |
| 62 | - this.contextMenuEvent(event, data.userData) | 62 | + this.contextMenuEvent(deviceNode.data.userData, event, data.userData, data.type === 2) |
| 63 | } | 63 | } |
| 64 | }, | 64 | }, |
| 65 | loadNode: function(node, resolve){ | 65 | loadNode: function(node, resolve){ |
| 66 | + console.log(this.device) | ||
| 66 | if (node.level === 0) { | 67 | if (node.level === 0) { |
| 67 | - this.deviceService.getAllDeviceList((data)=>{ | ||
| 68 | - console.log(data) | ||
| 69 | - if (data.length > 0) { | ||
| 70 | - let nodeList = [] | ||
| 71 | - for (let i = 0; i < data.length; i++) { | ||
| 72 | - console.log(data[i].name) | ||
| 73 | - let node = { | ||
| 74 | - name: data[i].name || data[i].deviceId, | ||
| 75 | - isLeaf: false, | ||
| 76 | - id: data[i].deviceId, | ||
| 77 | - type: data[i].online, | ||
| 78 | - online: data[i].online === 1, | ||
| 79 | - userData: data[i] | 68 | + if (this.device) { |
| 69 | + let node = { | ||
| 70 | + name: this.device.name || this.device.deviceId, | ||
| 71 | + isLeaf: false, | ||
| 72 | + id: this.device.deviceId, | ||
| 73 | + type: this.device.online, | ||
| 74 | + online: this.device.online === 1, | ||
| 75 | + userData: this.device | ||
| 76 | + } | ||
| 77 | + resolve([node]) | ||
| 78 | + }else { | ||
| 79 | + this.deviceService.getAllDeviceList((data)=>{ | ||
| 80 | + console.log(data) | ||
| 81 | + if (data.length > 0) { | ||
| 82 | + let nodeList = [] | ||
| 83 | + for (let i = 0; i < data.length; i++) { | ||
| 84 | + console.log(data[i].name) | ||
| 85 | + let node = { | ||
| 86 | + name: data[i].name || data[i].deviceId, | ||
| 87 | + isLeaf: false, | ||
| 88 | + id: data[i].deviceId, | ||
| 89 | + type: data[i].online, | ||
| 90 | + online: data[i].online === 1, | ||
| 91 | + userData: data[i] | ||
| 92 | + } | ||
| 93 | + nodeList.push(node); | ||
| 80 | } | 94 | } |
| 81 | - nodeList.push(node); | 95 | + resolve(nodeList) |
| 96 | + }else { | ||
| 97 | + resolve([]) | ||
| 82 | } | 98 | } |
| 83 | - resolve(nodeList) | ||
| 84 | - }else { | ||
| 85 | - resolve([]) | ||
| 86 | - } | ||
| 87 | - }, (list)=>{ | 99 | + }, (list)=>{ |
| 88 | console.log("设备加载完成") | 100 | console.log("设备加载完成") |
| 89 | - }, (error)=>{ | 101 | + }, (error)=>{ |
| 90 | 102 | ||
| 91 | - }) | ||
| 92 | - } | ||
| 93 | - if (node.level === 1) { | 103 | + }) |
| 104 | + } | ||
| 105 | + }else { | ||
| 94 | let channelArray = [] | 106 | let channelArray = [] |
| 95 | - this.deviceService.getAllChannel(true, true, node.data.id, catalogData =>{ | 107 | + |
| 108 | + this.deviceService.getTree(node.data.userData.deviceId, node.data.id, this.onlyCatalog, catalogData =>{ | ||
| 109 | + console.log(catalogData) | ||
| 96 | channelArray = channelArray.concat(catalogData) | 110 | channelArray = channelArray.concat(catalogData) |
| 97 | this.channelDataHandler(channelArray, resolve) | 111 | this.channelDataHandler(channelArray, resolve) |
| 98 | },(endCatalogData) => { | 112 | },(endCatalogData) => { |
| 99 | - this.deviceService.getAllChannel(false, true, node.data.id, channelData => { | ||
| 100 | - channelArray = channelArray.concat(channelData) | ||
| 101 | - this.channelDataHandler(channelArray, resolve) | ||
| 102 | - }, endChannelList => { | ||
| 103 | 113 | ||
| 104 | - }) | ||
| 105 | - }) | ||
| 106 | - }else if (node.level > 1){ | ||
| 107 | - let channelArray = [] | ||
| 108 | - this.deviceService.getAllSubChannel(true, node.data.deviceId, node.data.id, (catalogData)=>{ | ||
| 109 | - channelArray = channelArray.concat(catalogData) | ||
| 110 | - this.channelDataHandler(channelArray, resolve) | ||
| 111 | - }, (endCatalogData)=>{ | ||
| 112 | - this.deviceService.getAllSubChannel(false, node.data.deviceId, node.data.id, (channelData)=>{ | ||
| 113 | - channelArray = channelArray.concat(channelData) | ||
| 114 | - this.channelDataHandler(channelArray, resolve) | ||
| 115 | - }) | ||
| 116 | }) | 114 | }) |
| 117 | } | 115 | } |
| 116 | + | ||
| 118 | }, | 117 | }, |
| 119 | channelDataHandler: function (data, resolve) { | 118 | channelDataHandler: function (data, resolve) { |
| 120 | if (data.length > 0) { | 119 | if (data.length > 0) { |
| 121 | let nodeList = [] | 120 | let nodeList = [] |
| 122 | - for (let i = 0; i < data.length; i++) { | 121 | + for (let i = 0; i <data.length; i++) { |
| 122 | + let item = data[i]; | ||
| 123 | let type = 3; | 123 | let type = 3; |
| 124 | - if (data[i].subCount > 0 || data[i].parental === 1) { | 124 | + if (item.id.length <= 10) { |
| 125 | type = 2; | 125 | type = 2; |
| 126 | - }else if (data[i].ptztype === 1 ) { // 1-球机;2-半球;3-固定枪机;4-遥控枪机 | ||
| 127 | - type = 4; | ||
| 128 | - }else if (data[i].ptztype === 2) { | ||
| 129 | - type = 5; | ||
| 130 | - }else if (data[i].ptztype === 3 || data[i].ptztype === 4) { | ||
| 131 | - type = 6; | 126 | + }else { |
| 127 | + if (item.id.length > 14) { | ||
| 128 | + let channelType = item.id.substring(10, 13) | ||
| 129 | + console.log("channelType: " + channelType) | ||
| 130 | + if (channelType === '215' || channelType === '216') { | ||
| 131 | + type = 2; | ||
| 132 | + } | ||
| 133 | + console.log(type) | ||
| 134 | + if (item.basicData.ptztype === 1 ) { // 1-球机;2-半球;3-固定枪机;4-遥控枪机 | ||
| 135 | + type = 4; | ||
| 136 | + }else if (item.basicData.ptztype === 2) { | ||
| 137 | + type = 5; | ||
| 138 | + }else if (item.basicData.ptztype === 3 || item.basicData.ptztype === 4) { | ||
| 139 | + type = 6; | ||
| 140 | + } | ||
| 141 | + }else { | ||
| 142 | + if (item.basicData.subCount > 0 || item.basicData.parental === 1) { | ||
| 143 | + type = 2; | ||
| 144 | + } | ||
| 145 | + } | ||
| 132 | } | 146 | } |
| 133 | let node = { | 147 | let node = { |
| 134 | - name: data[i].name || data[i].channelId, | ||
| 135 | - isLeaf: data[i].subCount === 0, | ||
| 136 | - id: data[i].channelId, | ||
| 137 | - deviceId: data[i].deviceId, | 148 | + name: item.name || item.basicData.channelId, |
| 149 | + isLeaf: type !== 2, | ||
| 150 | + id: item.id, | ||
| 151 | + deviceId: item.deviceId, | ||
| 138 | type: type, | 152 | type: type, |
| 139 | - online: data[i].status === 1, | ||
| 140 | - hasGPS: data[i].longitude*data[i].latitude !== 0, | ||
| 141 | - userData: data[i] | 153 | + online: item.basicData.status === 1, |
| 154 | + hasGPS: item.basicData.longitude*item.basicData.latitude !== 0, | ||
| 155 | + userData: item.basicData | ||
| 142 | } | 156 | } |
| 143 | nodeList.push(node); | 157 | nodeList.push(node); |
| 144 | } | 158 | } |
| @@ -146,6 +160,9 @@ export default { | @@ -146,6 +160,9 @@ export default { | ||
| 146 | }else { | 160 | }else { |
| 147 | resolve([]) | 161 | resolve([]) |
| 148 | } | 162 | } |
| 163 | + }, | ||
| 164 | + reset: function (){ | ||
| 165 | + this.$forceUpdate(); | ||
| 149 | } | 166 | } |
| 150 | }, | 167 | }, |
| 151 | destroyed() { | 168 | destroyed() { |
web_src/src/components/common/DeviceTreeForZtree.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div id="DeviceTree" style="width: 100%;height: 100%; background-color: #FFFFFF; overflow: auto"> | ||
| 3 | + <el-container> | ||
| 4 | + <el-header>设备列表</el-header> | ||
| 5 | + <el-main style="background-color: #ffffff;"> | ||
| 6 | + <div class="device-tree-main-box"> | ||
| 7 | + <tree | ||
| 8 | + :nodes="nodes" | ||
| 9 | + @onClick="onClick" | ||
| 10 | + @onCheck="onCheck" | ||
| 11 | + @onExpand="onExpand" | ||
| 12 | + @onCreated="handleCreated" | ||
| 13 | + /> | ||
| 14 | + </div> | ||
| 15 | + </el-main> | ||
| 16 | + </el-container> | ||
| 17 | + </div> | ||
| 18 | +</template> | ||
| 19 | + | ||
| 20 | +<script> | ||
| 21 | +import DeviceService from "../service/DeviceService.js"; | ||
| 22 | +import tree from "vue-giant-tree"; | ||
| 23 | + | ||
| 24 | +export default { | ||
| 25 | + name: 'DeviceTreeForZtree', | ||
| 26 | + components: { | ||
| 27 | + tree | ||
| 28 | + }, | ||
| 29 | + data() { | ||
| 30 | + return { | ||
| 31 | + deviceService: new DeviceService(), | ||
| 32 | + device: null, | ||
| 33 | + nodes:[], | ||
| 34 | + setting: { | ||
| 35 | + callback: { | ||
| 36 | + beforeExpand: this.beforeExpand | ||
| 37 | + }, | ||
| 38 | + // async: { | ||
| 39 | + // enable: true, | ||
| 40 | + // type: "get", | ||
| 41 | + // url: `/api/device/query/tree`, | ||
| 42 | + // contentType: "application/json", | ||
| 43 | + // // autoParam: ["pid=parentId"], | ||
| 44 | + // }, | ||
| 45 | + check: { | ||
| 46 | + enable: false, | ||
| 47 | + }, | ||
| 48 | + edit: { | ||
| 49 | + enable: false, | ||
| 50 | + } | ||
| 51 | + }, | ||
| 52 | + defaultProps: { | ||
| 53 | + children: 'children', | ||
| 54 | + label: 'name', | ||
| 55 | + isLeaf: 'isLeaf' | ||
| 56 | + } | ||
| 57 | + }; | ||
| 58 | + }, | ||
| 59 | + props: ['clickEvent', 'contextMenuEvent'], | ||
| 60 | + mounted() { | ||
| 61 | + this.deviceService.getAllDeviceList((data)=>{ | ||
| 62 | + console.log(data) | ||
| 63 | + for (let i = 0; i < data.length; i++) { | ||
| 64 | + console.log(data[i].name) | ||
| 65 | + let node = { | ||
| 66 | + name: data[i].name || data[i].deviceId, | ||
| 67 | + id: data[i].deviceId, | ||
| 68 | + isParent: true, | ||
| 69 | + } | ||
| 70 | + this.nodes.push(node) | ||
| 71 | + } | ||
| 72 | + }, (list)=>{ | ||
| 73 | + console.log("设备加载完成") | ||
| 74 | + }) | ||
| 75 | + }, | ||
| 76 | + methods: { | ||
| 77 | + onClick(evt, treeId, treeNode) { | ||
| 78 | + console.log(evt) | ||
| 79 | + console.log(treeId) | ||
| 80 | + console.log(treeNode) | ||
| 81 | + }, | ||
| 82 | + onCheck(evt, treeId, treeNode) { | ||
| 83 | + console.log(evt) | ||
| 84 | + }, | ||
| 85 | + beforeExpand(treeId, treeNode) { | ||
| 86 | + console.log(treeId) | ||
| 87 | + console.log(treeNode) | ||
| 88 | + return true; | ||
| 89 | + }, | ||
| 90 | + onExpand(evt, treeId, treeNode) { | ||
| 91 | + // console.log(evt) | ||
| 92 | + // console.log(treeId) | ||
| 93 | + // console.log(treeNodes) | ||
| 94 | + }, | ||
| 95 | + handleCreated(ztreeObj) { | ||
| 96 | + console.log(ztreeObj) | ||
| 97 | + } | ||
| 98 | + } | ||
| 99 | +} | ||
| 100 | +</script> | ||
| 101 | + | ||
| 102 | +<style> | ||
| 103 | +.device-tree-main-box{ | ||
| 104 | + text-align: left; | ||
| 105 | +} | ||
| 106 | +.device-online{ | ||
| 107 | + color: #252525; | ||
| 108 | +} | ||
| 109 | +.device-offline{ | ||
| 110 | + color: #727272; | ||
| 111 | +} | ||
| 112 | +</style> |
web_src/src/components/dialog/deviceEdit.vue
| @@ -42,6 +42,12 @@ | @@ -42,6 +42,12 @@ | ||
| 42 | <el-option key="GCJ02" label="GCJ02" value="GCJ02"></el-option> | 42 | <el-option key="GCJ02" label="GCJ02" value="GCJ02"></el-option> |
| 43 | </el-select> | 43 | </el-select> |
| 44 | </el-form-item> | 44 | </el-form-item> |
| 45 | + <el-form-item label="目录结构" prop="treeType" > | ||
| 46 | + <el-select v-model="form.treeType" style="float: left; width: 100%" > | ||
| 47 | + <el-option key="WGS84" label="行政区划" value="CivilCode"></el-option> | ||
| 48 | + <el-option key="GCJ02" label="业务分组" value="BusinessGroup"></el-option> | ||
| 49 | + </el-select> | ||
| 50 | + </el-form-item> | ||
| 45 | <el-form-item label="目录订阅" title="0为取消订阅" prop="subscribeCycleForCatalog" > | 51 | <el-form-item label="目录订阅" title="0为取消订阅" prop="subscribeCycleForCatalog" > |
| 46 | <el-input v-model="form.subscribeCycleForCatalog" clearable ></el-input> | 52 | <el-input v-model="form.subscribeCycleForCatalog" clearable ></el-input> |
| 47 | </el-form-item> | 53 | </el-form-item> |
web_src/src/components/live.vue
| @@ -107,20 +107,24 @@ export default { | @@ -107,20 +107,24 @@ export default { | ||
| 107 | console.log(idx); | 107 | console.log(idx); |
| 108 | this.clear(idx.substring(idx.length - 1)) | 108 | this.clear(idx.substring(idx.length - 1)) |
| 109 | }, | 109 | }, |
| 110 | - clickEvent: function (data) { | ||
| 111 | - if (data.channelId && data.subCount == 0) { | ||
| 112 | - this.sendDevicePush(data) | 110 | + clickEvent: function (device, data, isCatalog) { |
| 111 | + if (data.channelId && !isCatalog) { | ||
| 112 | + if (device.online === 0) { | ||
| 113 | + this.$message.error('设备离线!不允许点播'); | ||
| 114 | + }else { | ||
| 115 | + this.sendDevicePush(data) | ||
| 116 | + } | ||
| 113 | } | 117 | } |
| 114 | }, | 118 | }, |
| 115 | - contextMenuEvent: function (data) { | 119 | + contextMenuEvent: function (device, event, data, isCatalog) { |
| 116 | 120 | ||
| 117 | }, | 121 | }, |
| 118 | //通知设备上传媒体流 | 122 | //通知设备上传媒体流 |
| 119 | sendDevicePush: function (itemData) { | 123 | sendDevicePush: function (itemData) { |
| 120 | - if (itemData.status === 0) { | ||
| 121 | - this.$message.error('设备离线!'); | ||
| 122 | - return | ||
| 123 | - } | 124 | + // if (itemData.status === 0) { |
| 125 | + // this.$message.error('设备离线!'); | ||
| 126 | + // return | ||
| 127 | + // } | ||
| 124 | this.save(itemData) | 128 | this.save(itemData) |
| 125 | let deviceId = itemData.deviceId; | 129 | let deviceId = itemData.deviceId; |
| 126 | // this.isLoging = true; | 130 | // this.isLoging = true; |
web_src/src/components/map.vue
| @@ -16,7 +16,8 @@ | @@ -16,7 +16,8 @@ | ||
| 16 | <el-descriptions class="margin-top" :title="channel.name" :column="1" :colon="true" size="mini" :labelStyle="labelStyle" > | 16 | <el-descriptions class="margin-top" :title="channel.name" :column="1" :colon="true" size="mini" :labelStyle="labelStyle" > |
| 17 | <el-descriptions-item label="编号" >{{channel.channelId}}</el-descriptions-item> | 17 | <el-descriptions-item label="编号" >{{channel.channelId}}</el-descriptions-item> |
| 18 | <el-descriptions-item label="型号">{{channel.model}}</el-descriptions-item> | 18 | <el-descriptions-item label="型号">{{channel.model}}</el-descriptions-item> |
| 19 | - <el-descriptions-item label="经纬度" >{{channel.longitude}},{{channel.latitude}}</el-descriptions-item> | 19 | + <el-descriptions-item label="经度" >{{channel[longitudeStr]}}</el-descriptions-item> |
| 20 | + <el-descriptions-item label="纬度" >{{channel[latitudeStr]}}</el-descriptions-item> | ||
| 20 | <el-descriptions-item label="生产厂商">{{channel.manufacture}}</el-descriptions-item> | 21 | <el-descriptions-item label="生产厂商">{{channel.manufacture}}</el-descriptions-item> |
| 21 | <el-descriptions-item label="行政区域" >{{channel.civilCode}}</el-descriptions-item> | 22 | <el-descriptions-item label="行政区域" >{{channel.civilCode}}</el-descriptions-item> |
| 22 | <el-descriptions-item label="设备归属" >{{channel.owner}}</el-descriptions-item> | 23 | <el-descriptions-item label="设备归属" >{{channel.owner}}</el-descriptions-item> |
| @@ -28,7 +29,7 @@ | @@ -28,7 +29,7 @@ | ||
| 28 | </el-descriptions-item> | 29 | </el-descriptions-item> |
| 29 | </el-descriptions> | 30 | </el-descriptions> |
| 30 | <div style="padding-top: 10px"> | 31 | <div style="padding-top: 10px"> |
| 31 | - <el-button type="primary" size="small" title="播放" icon="el-icon-video-play" @click="play(channel)"></el-button> | 32 | + <el-button v-bind:disabled="device == null || device.online === 0" type="primary" size="small" title="播放" icon="el-icon-video-play" @click="play(channel)"></el-button> |
| 32 | <el-button type="primary" size="small" title="编辑位置" icon="el-icon-edit" @click="edit(channel)"></el-button> | 33 | <el-button type="primary" size="small" title="编辑位置" icon="el-icon-edit" @click="edit(channel)"></el-button> |
| 33 | <el-button type="primary" size="small" title="轨迹查询" icon="el-icon-map-location" @click="getTrace(channel)"></el-button> | 34 | <el-button type="primary" size="small" title="轨迹查询" icon="el-icon-map-location" @click="getTrace(channel)"></el-button> |
| 34 | </div> | 35 | </div> |
| @@ -64,11 +65,14 @@ export default { | @@ -64,11 +65,14 @@ export default { | ||
| 64 | layer: null, | 65 | layer: null, |
| 65 | lineLayer: null, | 66 | lineLayer: null, |
| 66 | channel: null, | 67 | channel: null, |
| 68 | + device: null, | ||
| 67 | infoBoxId: null, | 69 | infoBoxId: null, |
| 68 | labelStyle: { | 70 | labelStyle: { |
| 69 | width: "56px" | 71 | width: "56px" |
| 70 | }, | 72 | }, |
| 71 | isLoging: false, | 73 | isLoging: false, |
| 74 | + longitudeStr: "longitude", | ||
| 75 | + latitudeStr: "latitude", | ||
| 72 | }; | 76 | }; |
| 73 | }, | 77 | }, |
| 74 | created() { | 78 | created() { |
| @@ -78,17 +82,27 @@ export default { | @@ -78,17 +82,27 @@ export default { | ||
| 78 | setTimeout(()=>{ // 延迟以等待地图加载完成 TODO 后续修改为通过是实际这;状态加回调完成 | 82 | setTimeout(()=>{ // 延迟以等待地图加载完成 TODO 后续修改为通过是实际这;状态加回调完成 |
| 79 | this.deviceService.getAllChannel(false, false, this.$route.query.deviceId, this.channelsHandler) | 83 | this.deviceService.getAllChannel(false, false, this.$route.query.deviceId, this.channelsHandler) |
| 80 | }, 1000) | 84 | }, 1000) |
| 81 | - | 85 | + } |
| 86 | + if (window.mapParam.coordinateSystem == "GCJ-02") { | ||
| 87 | + this.longitudeStr = "longitudeGcj02"; | ||
| 88 | + this.latitudeStr = "latitudeGcj02"; | ||
| 89 | + }else if (window.mapParam.coordinateSystem == "WGS84") { | ||
| 90 | + this.longitudeStr = "longitudeWgs84"; | ||
| 91 | + this.latitudeStr = "latitudeWgs84"; | ||
| 92 | + }else { | ||
| 93 | + this.longitudeStr = "longitude"; | ||
| 94 | + this.latitudeStr = "latitude"; | ||
| 82 | } | 95 | } |
| 83 | }, | 96 | }, |
| 84 | destroyed() { | 97 | destroyed() { |
| 85 | 98 | ||
| 86 | }, | 99 | }, |
| 87 | methods: { | 100 | methods: { |
| 88 | - clickEvent: function (data) { | ||
| 89 | - if (data.channelId && data.subCount == 0) { | 101 | + clickEvent: function (device, data, isCatalog) { |
| 102 | + this.device = device; | ||
| 103 | + if (data.channelId && !isCatalog) { | ||
| 90 | // 点击通道 | 104 | // 点击通道 |
| 91 | - if (data.longitude * data.latitude === 0) { | 105 | + if (data[this.longitudeStr] * data[this.latitudeStr] === 0) { |
| 92 | this.$message.error('未获取到位置信息'); | 106 | this.$message.error('未获取到位置信息'); |
| 93 | } else { | 107 | } else { |
| 94 | if (this.layer != null) { | 108 | if (this.layer != null) { |
| @@ -96,26 +110,29 @@ export default { | @@ -96,26 +110,29 @@ export default { | ||
| 96 | } | 110 | } |
| 97 | this.closeInfoBox() | 111 | this.closeInfoBox() |
| 98 | this.layer = this.$refs.map.addLayer([{ | 112 | this.layer = this.$refs.map.addLayer([{ |
| 99 | - position: [data.longitude, data.latitude], | 113 | + position: [data[this.longitudeStr], data[this.latitudeStr]], |
| 100 | image: { | 114 | image: { |
| 101 | src: this.getImageByChannel(data), | 115 | src: this.getImageByChannel(data), |
| 102 | anchor: [0.5, 1] | 116 | anchor: [0.5, 1] |
| 103 | }, | 117 | }, |
| 104 | data: data | 118 | data: data |
| 105 | }], this.featureClickEvent) | 119 | }], this.featureClickEvent) |
| 106 | - this.$refs.map.panTo([data.longitude, data.latitude], mapParam.maxZoom) | 120 | + this.$refs.map.panTo([data[this.longitudeStr], data[this.latitudeStr]], mapParam.maxZoom) |
| 107 | } | 121 | } |
| 108 | } | 122 | } |
| 109 | }, | 123 | }, |
| 110 | - contextmenuEventHandler: function (event, data) { | ||
| 111 | - if (data.channelId && data.subCount == 0) { | 124 | + contextmenuEventHandler: function (device, event, data, isCatalog) { |
| 125 | + console.log(device) | ||
| 126 | + console.log(device.online) | ||
| 127 | + this.device = device; | ||
| 128 | + if (data.channelId && !isCatalog) { | ||
| 112 | // 点击通道 | 129 | // 点击通道 |
| 113 | this.$contextmenu({ | 130 | this.$contextmenu({ |
| 114 | items: [ | 131 | items: [ |
| 115 | { | 132 | { |
| 116 | label: "播放", | 133 | label: "播放", |
| 117 | icon: "el-icon-video-play", | 134 | icon: "el-icon-video-play", |
| 118 | - disabled: false, | 135 | + disabled: device.online === 0, |
| 119 | onClick: () => { | 136 | onClick: () => { |
| 120 | this.play(data); | 137 | this.play(data); |
| 121 | } | 138 | } |
| @@ -183,22 +200,11 @@ export default { | @@ -183,22 +200,11 @@ export default { | ||
| 183 | this.clean() | 200 | this.clean() |
| 184 | this.closeInfoBox() | 201 | this.closeInfoBox() |
| 185 | let params = []; | 202 | let params = []; |
| 186 | - let longitudeStr; | ||
| 187 | - let latitudeStr; | ||
| 188 | - if (window.mapParam.coordinateSystem == "GCJ-02") { | ||
| 189 | - longitudeStr = "longitudeGcj02"; | ||
| 190 | - latitudeStr = "latitudeGcj02"; | ||
| 191 | - }else if (window.mapParam.coordinateSystem == "WGS84") { | ||
| 192 | - longitudeStr = "longitudeWgs84"; | ||
| 193 | - latitudeStr = "latitudeWgs84"; | ||
| 194 | - }else { | ||
| 195 | - longitudeStr = "longitude"; | ||
| 196 | - latitudeStr = "latitude"; | ||
| 197 | - } | 203 | + |
| 198 | 204 | ||
| 199 | for (let i = 0; i < channels.length; i++) { | 205 | for (let i = 0; i < channels.length; i++) { |
| 200 | - let longitude = channels[i][longitudeStr]; | ||
| 201 | - let latitude = channels[i][latitudeStr]; | 206 | + let longitude = channels[i][this.longitudeStr]; |
| 207 | + let latitude = channels[i][this.latitudeStr]; | ||
| 202 | if (longitude * latitude === 0) { | 208 | if (longitude * latitude === 0) { |
| 203 | continue; | 209 | continue; |
| 204 | } | 210 | } |
| @@ -217,7 +223,7 @@ export default { | @@ -217,7 +223,7 @@ export default { | ||
| 217 | this.layer = this.$refs.map.addLayer(params, this.featureClickEvent) | 223 | this.layer = this.$refs.map.addLayer(params, this.featureClickEvent) |
| 218 | console.log(4) | 224 | console.log(4) |
| 219 | if (params.length === 1) { | 225 | if (params.length === 1) { |
| 220 | - this.$refs.map.panTo([channels[0][longitudeStr], channels[0][latitudeStr]], mapParam.maxZoom) | 226 | + this.$refs.map.panTo([channels[0][this.longitudeStr], channels[0][this.latitudeStr]], mapParam.maxZoom) |
| 221 | } else if (params.length > 1) { | 227 | } else if (params.length > 1) { |
| 222 | this.$refs.map.fit(this.layer) | 228 | this.$refs.map.fit(this.layer) |
| 223 | } else { | 229 | } else { |
| @@ -266,19 +272,7 @@ export default { | @@ -266,19 +272,7 @@ export default { | ||
| 266 | this.channel = channels[0] | 272 | this.channel = channels[0] |
| 267 | } | 273 | } |
| 268 | this.$nextTick(() => { | 274 | this.$nextTick(() => { |
| 269 | - let longitudeStr; | ||
| 270 | - let latitudeStr; | ||
| 271 | - if (window.mapParam.coordinateSystem == "GCJ-02") { | ||
| 272 | - longitudeStr = "longitudeGcj02"; | ||
| 273 | - latitudeStr = "latitudeGcj02"; | ||
| 274 | - }else if (window.mapParam.coordinateSystem == "WGS84") { | ||
| 275 | - longitudeStr = "longitudeWgs84"; | ||
| 276 | - latitudeStr = "latitudeWgs84"; | ||
| 277 | - }else { | ||
| 278 | - longitudeStr = "longitude"; | ||
| 279 | - latitudeStr = "latitude"; | ||
| 280 | - } | ||
| 281 | - let position = [this.channel[longitudeStr], this.channel[latitudeStr]]; | 275 | + let position = [this.channel[this.longitudeStr], this.channel[this.latitudeStr]]; |
| 282 | this.infoBoxId = this.$refs.map.openInfoBox(position, this.$refs.infobox, [0, -50]) | 276 | this.infoBoxId = this.$refs.map.openInfoBox(position, this.$refs.infobox, [0, -50]) |
| 283 | }) | 277 | }) |
| 284 | }, | 278 | }, |
web_src/src/components/service/DeviceService.js
| @@ -133,6 +133,49 @@ class DeviceService{ | @@ -133,6 +133,49 @@ class DeviceService{ | ||
| 133 | if (typeof (callback) == "function") callback(res.data) | 133 | if (typeof (callback) == "function") callback(res.data) |
| 134 | }).catch(errorCallback); | 134 | }).catch(errorCallback); |
| 135 | } | 135 | } |
| 136 | + | ||
| 137 | + getTree(deviceId, id, param3, param4) { | ||
| 138 | + | ||
| 139 | + } | ||
| 140 | + | ||
| 141 | + getTree(deviceId, parentId, onlyCatalog, callback, endCallback, errorCallback) { | ||
| 142 | + let currentPage = 1; | ||
| 143 | + let count = 100; | ||
| 144 | + let catalogList = [] | ||
| 145 | + this.getTreeIteration(deviceId, parentId, onlyCatalog, catalogList, currentPage, count, callback, endCallback, errorCallback) | ||
| 146 | + } | ||
| 147 | + | ||
| 148 | + getTreeIteration(deviceId, parentId, onlyCatalog, catalogList, currentPage, count, callback, endCallback, errorCallback) { | ||
| 149 | + this.getTreeInfo(deviceId, parentId, onlyCatalog, currentPage, count, (data) => { | ||
| 150 | + if (data.list) { | ||
| 151 | + if (typeof (callback) == "function") callback(data.list) | ||
| 152 | + catalogList = catalogList.concat(data.list); | ||
| 153 | + if (catalogList.length < data.total) { | ||
| 154 | + currentPage ++ | ||
| 155 | + this.getTreeIteration(deviceId, parentId, onlyCatalog, catalogList, currentPage, count, callback, endCallback, errorCallback) | ||
| 156 | + }else { | ||
| 157 | + if (typeof (endCallback) == "function") endCallback(catalogList) | ||
| 158 | + } | ||
| 159 | + } | ||
| 160 | + }, errorCallback) | ||
| 161 | + } | ||
| 162 | + getTreeInfo(deviceId, parentId, onlyCatalog, currentPage, count, callback, errorCallback) { | ||
| 163 | + if (onlyCatalog == null || typeof onlyCatalog === "undefined") { | ||
| 164 | + onlyCatalog = false; | ||
| 165 | + } | ||
| 166 | + this.$axios({ | ||
| 167 | + method: 'get', | ||
| 168 | + url: `/api/device/query/tree/${deviceId}`, | ||
| 169 | + params:{ | ||
| 170 | + page: currentPage, | ||
| 171 | + count: count, | ||
| 172 | + parentId: parentId, | ||
| 173 | + onlyCatalog: onlyCatalog | ||
| 174 | + } | ||
| 175 | + }).then((res) =>{ | ||
| 176 | + if (typeof (callback) == "function") callback(res.data) | ||
| 177 | + }).catch(errorCallback); | ||
| 178 | + } | ||
| 136 | } | 179 | } |
| 137 | 180 | ||
| 138 | export default DeviceService; | 181 | export default DeviceService; |
web_src/src/router/index.js
| @@ -59,7 +59,7 @@ export default new VueRouter({ | @@ -59,7 +59,7 @@ export default new VueRouter({ | ||
| 59 | component: streamProxyList, | 59 | component: streamProxyList, |
| 60 | }, | 60 | }, |
| 61 | { | 61 | { |
| 62 | - path: '/channelList/:deviceId/:parentChannelId/:count/:page', | 62 | + path: '/channelList/:deviceId/:parentChannelId/', |
| 63 | name: 'channelList', | 63 | name: 'channelList', |
| 64 | component: channelList, | 64 | component: channelList, |
| 65 | }, | 65 | }, |
web_src/static/css/iconfont.css
| 1 | @font-face { | 1 | @font-face { |
| 2 | font-family: "iconfont"; /* Project id 1291092 */ | 2 | font-family: "iconfont"; /* Project id 1291092 */ |
| 3 | - src: url('iconfont.woff2?t=1650436696596') format('woff2'); | 3 | + src: url('iconfont.woff2?t=1655453611360') format('woff2'), |
| 4 | + url('iconfont.woff?t=1655453611360') format('woff'), | ||
| 5 | + url('iconfont.ttf?t=1655453611360') format('truetype'); | ||
| 4 | } | 6 | } |
| 5 | 7 | ||
| 6 | .iconfont { | 8 | .iconfont { |
| @@ -11,6 +13,30 @@ | @@ -11,6 +13,30 @@ | ||
| 11 | -moz-osx-font-smoothing: grayscale; | 13 | -moz-osx-font-smoothing: grayscale; |
| 12 | } | 14 | } |
| 13 | 15 | ||
| 16 | +.icon-list:before { | ||
| 17 | + content: "\e7de"; | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +.icon-tree:before { | ||
| 21 | + content: "\e7df"; | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +.icon-shipin:before { | ||
| 25 | + content: "\e7db"; | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +.icon-shipin1:before { | ||
| 29 | + content: "\e7dc"; | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +.icon-shipin2:before { | ||
| 33 | + content: "\e7dd"; | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +.icon-LC_icon_gps_fill:before { | ||
| 37 | + content: "\e7da"; | ||
| 38 | +} | ||
| 39 | + | ||
| 14 | .icon-jiedianleizhukongzhongxin1:before { | 40 | .icon-jiedianleizhukongzhongxin1:before { |
| 15 | content: "\e9d0"; | 41 | content: "\e9d0"; |
| 16 | } | 42 | } |
web_src/static/css/iconfont.woff2
No preview for this file type