diff --git a/sql/mysql.sql b/sql/mysql.sql index e23f0550..f28e3982 100644 --- a/sql/mysql.sql +++ b/sql/mysql.sql @@ -1,13 +1,13 @@ --- MariaDB dump 10.19 Distrib 10.7.3-MariaDB, for Linux (x86_64) +-- MySQL dump 10.13 Distrib 8.0.29, for Linux (x86_64) -- -- Host: 127.0.0.1 Database: wvp3 -- ------------------------------------------------------ --- Server version 8.0.0-dmr +-- Server version 8.0.29-0ubuntu0.22.04.2 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!50503 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -21,34 +21,36 @@ DROP TABLE IF EXISTS `device`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `device` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `deviceId` varchar(50) NOT NULL, - `name` varchar(255) DEFAULT NULL, - `manufacturer` varchar(255) DEFAULT NULL, - `model` varchar(255) DEFAULT NULL, - `firmware` varchar(255) DEFAULT NULL, - `transport` varchar(50) DEFAULT NULL, - `streamMode` varchar(50) DEFAULT NULL, - `online` varchar(50) DEFAULT NULL, - `registerTime` varchar(50) DEFAULT NULL, - `keepaliveTime` varchar(50) DEFAULT NULL, - `ip` varchar(50) NOT NULL, - `createTime` varchar(50) NOT NULL, - `updateTime` varchar(50) NOT NULL, - `port` int(11) NOT NULL, - `expires` int(11) NOT NULL, - `subscribeCycleForCatalog` int(11) NOT NULL, - `subscribeCycleForMobilePosition` int(11) NOT NULL, - `mobilePositionSubmissionInterval` int(11) NOT NULL DEFAULT '5', - `subscribeCycleForAlarm` int(11) NOT NULL, - `hostAddress` varchar(50) NOT NULL, - `charset` varchar(50) NOT NULL, - `ssrcCheck` int(11) DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `device_deviceId_uindex` (`deviceId`) -) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8mb4; + `id` int NOT NULL AUTO_INCREMENT, + `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `manufacturer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `firmware` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `transport` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `streamMode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `online` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `registerTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `keepaliveTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `port` int NOT NULL, + `expires` int NOT NULL, + `subscribeCycleForCatalog` int NOT NULL, + `hostAddress` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `charset` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `subscribeCycleForMobilePosition` int DEFAULT NULL, + `mobilePositionSubmissionInterval` int DEFAULT '5', + `subscribeCycleForAlarm` int DEFAULT NULL, + `ssrcCheck` int DEFAULT '0', + `geoCoordSys` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `treeType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `device_deviceId_uindex` (`deviceId`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -66,20 +68,20 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `device_alarm`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `device_alarm` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `deviceId` varchar(50) NOT NULL, - `channelId` varchar(50) NOT NULL, - `alarmPriority` varchar(50) NOT NULL, - `alarmMethod` varchar(50) DEFAULT NULL, - `alarmTime` varchar(50) NOT NULL, - `alarmDescription` varchar(255) DEFAULT NULL, - `longitude` double DEFAULT NULL, - `latitude` double DEFAULT NULL, - `alarmType` varchar(50) DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `id` int NOT NULL AUTO_INCREMENT, + `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarmPriority` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarmMethod` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `alarmTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarmDescription` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `longitude` double DEFAULT NULL, + `latitude` double DEFAULT NULL, + `alarmType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -97,43 +99,48 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `device_channel`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `device_channel` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `channelId` varchar(50) NOT NULL, - `name` varchar(255) DEFAULT NULL, - `manufacture` varchar(50) DEFAULT NULL, - `model` varchar(50) DEFAULT NULL, - `owner` varchar(50) DEFAULT NULL, - `civilCode` varchar(50) DEFAULT NULL, - `block` varchar(50) DEFAULT NULL, - `address` varchar(50) DEFAULT NULL, - `parentId` varchar(50) DEFAULT NULL, - `safetyWay` int(11) DEFAULT NULL, - `registerWay` int(11) DEFAULT NULL, - `certNum` varchar(50) DEFAULT NULL, - `certifiable` int(11) DEFAULT NULL, - `errCode` int(11) DEFAULT NULL, - `endTime` varchar(50) DEFAULT NULL, - `secrecy` varchar(50) DEFAULT NULL, - `ipAddress` varchar(50) DEFAULT NULL, - `port` int(11) DEFAULT NULL, - `password` varchar(255) DEFAULT NULL, - `PTZType` int(11) DEFAULT NULL, - `status` int(11) DEFAULT NULL, - `longitude` double DEFAULT NULL, - `latitude` double DEFAULT NULL, - `streamId` varchar(50) DEFAULT NULL, - `deviceId` varchar(50) NOT NULL, - `parental` varchar(50) DEFAULT NULL, - `hasAudio` bit(1) DEFAULT NULL, - `createTime` varchar(50) NOT NULL, - `updateTime` varchar(50) NOT NULL, - `subCount` int(11) DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `device_channel_id_uindex` (`id`), - UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`) -) ENGINE=InnoDB AUTO_INCREMENT=81657 DEFAULT CHARSET=utf8mb4; + `id` int NOT NULL AUTO_INCREMENT, + `channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `manufacture` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `owner` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `civilCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `block` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `parentId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `safetyWay` int DEFAULT NULL, + `registerWay` int DEFAULT NULL, + `certNum` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `certifiable` int DEFAULT NULL, + `errCode` int DEFAULT NULL, + `endTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `secrecy` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `ipAddress` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `port` int DEFAULT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `PTZType` int DEFAULT NULL, + `status` int DEFAULT NULL, + `longitude` double DEFAULT NULL, + `latitude` double DEFAULT NULL, + `streamId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `parental` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `hasAudio` bit(1) DEFAULT NULL, + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `subCount` int DEFAULT '0', + `longitudeGcj02` double DEFAULT NULL, + `latitudeGcj02` double DEFAULT NULL, + `longitudeWgs84` double DEFAULT NULL, + `latitudeWgs84` double DEFAULT NULL, + `businessGroupId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `device_channel_id_uindex` (`id`) USING BTREE, + UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=19314 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -151,24 +158,24 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `device_mobile_position`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `device_mobile_position` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `deviceId` varchar(50) NOT NULL, - `channelId` varchar(50) NOT NULL, - `deviceName` varchar(255) DEFAULT NULL, - `time` varchar(50) NOT NULL, - `longitude` double NOT NULL, - `latitude` double NOT NULL, - `altitude` double DEFAULT NULL, - `speed` double DEFAULT NULL, - `direction` double DEFAULT NULL, - `reportSource` varchar(50) DEFAULT NULL, - `geodeticSystem` varchar(50) DEFAULT NULL, - `cnLng` varchar(50) DEFAULT NULL, - `cnLat` varchar(50) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=6108 DEFAULT CHARSET=utf8mb4; + `id` int NOT NULL AUTO_INCREMENT, + `deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `deviceName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `time` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `longitude` double NOT NULL, + `latitude` double NOT NULL, + `altitude` double DEFAULT NULL, + `speed` double DEFAULT NULL, + `direction` double DEFAULT NULL, + `reportSource` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `geodeticSystem` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `cnLng` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `cnLat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -186,23 +193,23 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `gb_stream`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `gb_stream` ( - `gbStreamId` int(11) NOT NULL AUTO_INCREMENT, - `app` varchar(255) NOT NULL, - `stream` varchar(255) NOT NULL, - `gbId` varchar(50) NOT NULL, - `name` varchar(255) DEFAULT NULL, - `longitude` double DEFAULT NULL, - `latitude` double DEFAULT NULL, - `streamType` varchar(50) DEFAULT NULL, - `mediaServerId` varchar(50) DEFAULT NULL, - `status` int(11) DEFAULT NULL, - `createStamp` bigint(20) DEFAULT NULL, - PRIMARY KEY (`gbStreamId`) USING BTREE, - UNIQUE KEY `app` (`app`,`stream`) USING BTREE, - UNIQUE KEY `gbId` (`gbId`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=300769 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `gbStreamId` int NOT NULL AUTO_INCREMENT, + `app` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `stream` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `gbId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `longitude` double DEFAULT NULL, + `latitude` double DEFAULT NULL, + `streamType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `status` int DEFAULT NULL, + `createStamp` bigint DEFAULT NULL, + PRIMARY KEY (`gbStreamId`) USING BTREE, + UNIQUE KEY `app` (`app`,`stream`) USING BTREE, + UNIQUE KEY `gbId` (`gbId`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=301679 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -220,19 +227,19 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `log`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `log` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) NOT NULL, - `type` varchar(50) NOT NULL, - `uri` varchar(200) NOT NULL, - `address` varchar(50) NOT NULL, - `result` varchar(50) NOT NULL, - `timing` bigint(20) NOT NULL, - `username` varchar(50) NOT NULL, - `createTime` varchar(50) NOT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1552 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `uri` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `result` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `timing` bigint NOT NULL, + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=21611 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -250,34 +257,34 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `media_server`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `media_server` ( - `id` varchar(255) NOT NULL, - `ip` varchar(50) NOT NULL, - `hookIp` varchar(50) NOT NULL, - `sdpIp` varchar(50) NOT NULL, - `streamIp` varchar(50) NOT NULL, - `httpPort` int(11) NOT NULL, - `httpSSlPort` int(11) NOT NULL, - `rtmpPort` int(11) NOT NULL, - `rtmpSSlPort` int(11) NOT NULL, - `rtpProxyPort` int(11) NOT NULL, - `rtspPort` int(11) NOT NULL, - `rtspSSLPort` int(11) NOT NULL, - `autoConfig` int(11) NOT NULL, - `secret` varchar(50) NOT NULL, - `streamNoneReaderDelayMS` int(11) NOT NULL, - `rtpEnable` int(11) NOT NULL, - `rtpPortRange` varchar(50) NOT NULL, - `sendRtpPortRange` varchar(50) NOT NULL, - `recordAssistPort` int(11) NOT NULL, - `defaultServer` int(11) NOT NULL, - `createTime` varchar(50) NOT NULL, - `updateTime` varchar(50) NOT NULL, - `hookAliveInterval` int(11) NOT NULL, - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `media_server_i` (`ip`,`httpPort`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `hookIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `sdpIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `streamIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `httpPort` int NOT NULL, + `httpSSlPort` int NOT NULL, + `rtmpPort` int NOT NULL, + `rtmpSSlPort` int NOT NULL, + `rtpProxyPort` int NOT NULL, + `rtspPort` int NOT NULL, + `rtspSSLPort` int NOT NULL, + `autoConfig` int NOT NULL, + `secret` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `streamNoneReaderDelayMS` int NOT NULL, + `rtpEnable` int NOT NULL, + `rtpPortRange` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `sendRtpPortRange` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `recordAssistPort` int NOT NULL, + `defaultServer` int NOT NULL, + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `hookAliveInterval` int NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `media_server_i` (`ip`,`httpPort`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -295,36 +302,36 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `parent_platform`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `parent_platform` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `enable` int(11) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `serverGBId` varchar(50) NOT NULL, - `serverGBDomain` varchar(50) DEFAULT NULL, - `serverIP` varchar(50) DEFAULT NULL, - `serverPort` int(11) DEFAULT NULL, - `deviceGBId` varchar(50) NOT NULL, - `deviceIp` varchar(50) DEFAULT NULL, - `devicePort` varchar(50) DEFAULT NULL, - `username` varchar(255) DEFAULT NULL, - `password` varchar(50) DEFAULT NULL, - `expires` varchar(50) DEFAULT NULL, - `keepTimeout` varchar(50) DEFAULT NULL, - `transport` varchar(50) DEFAULT NULL, - `characterSet` varchar(50) DEFAULT NULL, - `catalogId` varchar(50) NOT NULL, - `ptz` int(11) DEFAULT NULL, - `rtcp` int(11) DEFAULT NULL, - `status` bit(1) DEFAULT NULL, - `shareAllLiveStream` int(11) DEFAULT NULL, - `startOfflinePush` int(11) DEFAULT '0', - `administrativeDivision` varchar(50) NOT NULL, - `catalogGroup` int(11) DEFAULT '1', - PRIMARY KEY (`id`), - UNIQUE KEY `parent_platform_id_uindex` (`id`), - UNIQUE KEY `parent_platform_pk` (`serverGBId`) -) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `id` int NOT NULL AUTO_INCREMENT, + `enable` int DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `serverGBId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `serverGBDomain` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `serverIP` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `serverPort` int DEFAULT NULL, + `deviceGBId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `deviceIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `devicePort` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `expires` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `keepTimeout` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `transport` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `characterSet` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `ptz` int DEFAULT NULL, + `rtcp` int DEFAULT NULL, + `status` bit(1) DEFAULT NULL, + `shareAllLiveStream` int DEFAULT NULL, + `startOfflinePush` int DEFAULT '0', + `administrativeDivision` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `catalogGroup` int DEFAULT '1', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `parent_platform_id_uindex` (`id`) USING BTREE, + UNIQUE KEY `parent_platform_pk` (`serverGBId`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -342,14 +349,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `platform_catalog`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `platform_catalog` ( - `id` varchar(50) NOT NULL, - `platformId` varchar(50) NOT NULL, - `name` varchar(255) NOT NULL, - `parentId` varchar(50) DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `parentId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -367,14 +374,14 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `platform_gb_channel`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `platform_gb_channel` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `platformId` varchar(50) NOT NULL, - `catalogId` varchar(50) NOT NULL, - `deviceChannelId` int(11) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=250 DEFAULT CHARSET=utf8mb4; + `id` int NOT NULL AUTO_INCREMENT, + `platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `deviceChannelId` int NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=4889 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -392,15 +399,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `platform_gb_stream`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `platform_gb_stream` ( - `platformId` varchar(50) NOT NULL, - `catalogId` varchar(50) NOT NULL, - `gbStreamId` int(11) NOT NULL, - `id` int(11) NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`id`), - UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`) -) ENGINE=InnoDB AUTO_INCREMENT=301210 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `gbStreamId` int NOT NULL, + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=302077 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -418,29 +425,29 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stream_proxy`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `stream_proxy` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `type` varchar(50) NOT NULL, - `app` varchar(255) NOT NULL, - `stream` varchar(255) NOT NULL, - `url` varchar(255) DEFAULT NULL, - `src_url` varchar(255) DEFAULT NULL, - `dst_url` varchar(255) DEFAULT NULL, - `timeout_ms` int(11) DEFAULT NULL, - `ffmpeg_cmd_key` varchar(255) DEFAULT NULL, - `rtp_type` varchar(50) DEFAULT NULL, - `mediaServerId` varchar(50) DEFAULT NULL, - `enable_hls` bit(1) DEFAULT NULL, - `enable_mp4` bit(1) DEFAULT NULL, - `enable` bit(1) NOT NULL, - `status` bit(1) NOT NULL, - `enable_remove_none_reader` bit(1) NOT NULL, - `createTime` varchar(50) NOT NULL, - `name` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `stream_proxy_pk` (`app`,`stream`) -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4; + `id` int NOT NULL AUTO_INCREMENT, + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `app` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `stream` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `src_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `dst_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `timeout_ms` int DEFAULT NULL, + `ffmpeg_cmd_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `rtp_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `enable_hls` bit(1) DEFAULT NULL, + `enable_mp4` bit(1) DEFAULT NULL, + `enable` bit(1) NOT NULL, + `status` bit(1) NOT NULL, + `enable_remove_none_reader` bit(1) NOT NULL, + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `stream_proxy_pk` (`app`,`stream`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -458,21 +465,21 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `stream_push`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `stream_push` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `app` varchar(255) NOT NULL, - `stream` varchar(255) NOT NULL, - `totalReaderCount` varchar(50) DEFAULT NULL, - `originType` int(11) DEFAULT NULL, - `originTypeStr` varchar(50) DEFAULT NULL, - `createStamp` bigint(20) DEFAULT NULL, - `aliveSecond` int(11) DEFAULT NULL, - `mediaServerId` varchar(50) DEFAULT NULL, - `serverId` varchar(50) not NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `stream_push_pk` (`app`,`stream`) -) ENGINE=InnoDB AUTO_INCREMENT=300838 DEFAULT CHARSET=utf8mb4; + `id` int NOT NULL AUTO_INCREMENT, + `app` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `stream` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `totalReaderCount` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `originType` int DEFAULT NULL, + `originTypeStr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `createStamp` bigint DEFAULT NULL, + `aliveSecond` int DEFAULT NULL, + `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `serverId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `stream_push_pk` (`app`,`stream`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=305291 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -490,17 +497,17 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `user`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `user` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `username` varchar(255) NOT NULL, - `password` varchar(255) NOT NULL, - `roleId` int(11) NOT NULL, - `createTime` varchar(50) NOT NULL, - `updateTime` varchar(50) NOT NULL, - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `user_username_uindex` (`username`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `id` int NOT NULL AUTO_INCREMENT, + `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `roleId` int NOT NULL, + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `user_username_uindex` (`username`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -509,8 +516,7 @@ CREATE TABLE `user` ( LOCK TABLES `user` WRITE; /*!40000 ALTER TABLE `user` DISABLE KEYS */; -INSERT INTO `user` VALUES - (1,'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021 - 04 - 13 14:14:57','2021 - 04 - 13 14:14:57'); +INSERT INTO `user` VALUES (1,'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021 - 04 - 13 14:14:57','2021 - 04 - 13 14:14:57'); /*!40000 ALTER TABLE `user` ENABLE KEYS */; UNLOCK TABLES; @@ -520,15 +526,15 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `user_role`; /*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; +/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `user_role` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) NOT NULL, - `authority` varchar(50) NOT NULL, - `createTime` varchar(50) NOT NULL, - `updateTime` varchar(50) NOT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `authority` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -537,8 +543,7 @@ CREATE TABLE `user_role` ( LOCK TABLES `user_role` WRITE; /*!40000 ALTER TABLE `user_role` DISABLE KEYS */; -INSERT INTO `user_role` VALUES - (1,'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57'); +INSERT INTO `user_role` VALUES (1,'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57'); /*!40000 ALTER TABLE `user_role` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -551,4 +556,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-04-18 10:50:27 +-- Dump completed on 2022-06-26 17:33:30 diff --git a/sql/update.sql b/sql/update.sql index f78744d7..0ab8d296 100644 --- a/sql/update.sql +++ b/sql/update.sql @@ -2,7 +2,10 @@ alter table stream_push add serverId varchar(50) not null; alter table device add geoCoordSys varchar(50) not null; +alter table device + add treeType varchar(50) not null; update device set device.geoCoordSys='WGS84'; +update device set device.treeType='CivilCode'; alter table device_channel add longitudeGcj02 double default null; alter table device_channel @@ -11,6 +14,8 @@ alter table device_channel add longitudeWgs84 double default null; alter table device_channel add latitudeWgs84 double default null; +alter table device_channel + add businessGroupId varchar(50) default null; diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ChannelIdType.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ChannelIdType.java new file mode 100644 index 00000000..320bbdd0 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ChannelIdType.java @@ -0,0 +1,23 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +/** + * 国标类型编码,国标编码中11-13位为类型编码 + * 详见 附 录 D 编码规则 A + * @author lin + */ +public class ChannelIdType { + /** + * 中心信令控制服务器编码 + */ + public final static String CENTRAL_SIGNALING_CONTROL_SERVER = "200"; + + /** + * 业务分组编码 + */ + public final static String BUSINESS_GROUP = "215"; + + /** + * 虚拟组织编码 + */ + public final static String VIRTUAL_ORGANIZATION = "216"; +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java index 253520bc..880117ff 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java @@ -138,6 +138,11 @@ public class Device { */ private String geoCoordSys; + /** + * 树类型 国标规定了两种树的展现方式 行政区划:CivilCode 和业务分组:BusinessGroup + */ + private String treeType; + public String getDeviceId() { return deviceId; @@ -338,4 +343,12 @@ public class Device { public void setGeoCoordSys(String geoCoordSys) { this.geoCoordSys = geoCoordSys; } + + public String getTreeType() { + return treeType; + } + + public void setTreeType(String treeType) { + this.treeType = treeType; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java index 63452775..16ead73d 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java @@ -194,6 +194,11 @@ public class DeviceChannel { */ private int channelType; + /** + * 业务分组 + */ + private String businessGroupId; + public int getId() { return id; } @@ -506,4 +511,12 @@ public class DeviceChannel { public void setChannelType(int channelType) { this.channelType = channelType; } + + public String getBusinessGroupId() { + return businessGroupId; + } + + public void setBusinessGroupId(String businessGroupId) { + this.businessGroupId = businessGroupId; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java index 2e70ea75..73f9c4f7 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java @@ -406,7 +406,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { if (parentPlatform == null) { return false; } - logger.info("[发送 移动位置订阅] {}/{}->{},{}", parentPlatform.getServerGBId(), gpsMsgInfo.getId(), gpsMsgInfo.getLng(), gpsMsgInfo.getLat()); + if (logger.isDebugEnabled()) { + logger.debug("[发送 移动位置订阅] {}/{}->{},{}", parentPlatform.getServerGBId(), gpsMsgInfo.getId(), gpsMsgInfo.getLng(), gpsMsgInfo.getLat()); + } + try { String characterSet = parentPlatform.getCharacterSet(); StringBuffer deviceStatusXml = new StringBuffer(600); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java index c2226a18..622cf073 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java @@ -141,6 +141,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen device.setStreamMode("UDP"); device.setCharset("GB2312"); device.setGeoCoordSys("WGS84"); + device.setTreeType("CivilCode"); device.setDeviceId(deviceId); } device.setIp(received); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java index 5ada1e4d..0d34c00a 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java @@ -249,23 +249,26 @@ public class XmlUtil { }else { deviceChannel.setParentId(parentId); } - }else { - if (deviceChannel.getChannelId().length() <= 10) { // 此时为行政区划, 上下级行政区划使用DeviceId关联 - deviceChannel.setParentId(deviceChannel.getChannelId().substring(0, deviceChannel.getChannelId().length() - 2)); - }else if (deviceChannel.getChannelId().length() == 20) { - if (Integer.parseInt(deviceChannel.getChannelId().substring(10, 13)) == 216) { // 虚拟组织 - deviceChannel.setParentId(businessGroupID); - }else if (Integer.parseInt(device.getDeviceId().substring(10, 13) )== 118) {//NVR 如果上级设备编号是NVR则直接将NVR的编号设置给通道的上级编号 - deviceChannel.setParentId(device.getDeviceId()); - }else if (deviceChannel.getCivilCode() != null) { - // 设备, 无parentId的20位是使用CivilCode表示上级的设备, - // 注:215 业务分组是需要有parentId的 - deviceChannel.setParentId(deviceChannel.getCivilCode()); - } - }else { - deviceChannel.setParentId(deviceChannel.getDeviceId()); - } } + deviceChannel.setBusinessGroupId(businessGroupID); + +// else { +// if (deviceChannel.getChannelId().length() <= 10) { // 此时为行政区划, 上下级行政区划使用DeviceId关联 +// deviceChannel.setParentId(deviceChannel.getChannelId().substring(0, deviceChannel.getChannelId().length() - 2)); +// }else if (deviceChannel.getChannelId().length() == 20) { +// if (Integer.parseInt(deviceChannel.getChannelId().substring(10, 13)) == 216) { // 虚拟组织 +// deviceChannel.setBusinessGroupId(businessGroupID); +// }else if (Integer.parseInt(device.getDeviceId().substring(10, 13) )== 118) {//NVR 如果上级设备编号是NVR则直接将NVR的编号设置给通道的上级编号 +// deviceChannel.setParentId(device.getDeviceId()); +// }else if (deviceChannel.getCivilCode() != null) { +// // 设备, 无parentId的20位是使用CivilCode表示上级的设备, +// // 注:215 业务分组是需要有parentId的 +// deviceChannel.setParentId(deviceChannel.getCivilCode()); +// } +// }else { +// deviceChannel.setParentId(deviceChannel.getDeviceId()); +// } +// } if (XmlUtil.getText(itemDevice, "SafetyWay") == null || XmlUtil.getText(itemDevice, "SafetyWay") == "") { diff --git a/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java b/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java index 72af803d..5b43496b 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java @@ -1,7 +1,9 @@ package com.genersoft.iot.vmp.service; import com.genersoft.iot.vmp.gb28181.bean.Device; +import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.SyncStatus; +import com.genersoft.iot.vmp.vmanager.bean.BaseTree; import java.util.List; @@ -110,4 +112,21 @@ public interface IDeviceService { * @param device 设备信息 */ void updateDevice(Device device); + + /** + * 树形查询接口 + * @param deviceId 设备ID + * @param parentId 父ID + * @param onlyCatalog 只获取目录 + * @return + */ + List> queryVideoDeviceTree(String deviceId, String parentId, boolean onlyCatalog); + + /** + * 查询树节点下的通道 + * @param deviceId 设备ID + * @param parentId 父ID + * @return + */ + List queryVideoDeviceInTreeNode(String deviceId, String parentId); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java index ec30cd48..9d376fb0 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java @@ -1,9 +1,7 @@ package com.genersoft.iot.vmp.service.impl; import com.genersoft.iot.vmp.conf.DynamicTask; -import com.genersoft.iot.vmp.gb28181.bean.Device; -import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; -import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; +import com.genersoft.iot.vmp.gb28181.bean.*; import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; import com.genersoft.iot.vmp.gb28181.task.ISubscribeTask; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander; @@ -12,20 +10,23 @@ import com.genersoft.iot.vmp.gb28181.utils.Coordtransform; import com.genersoft.iot.vmp.service.IDeviceService; import com.genersoft.iot.vmp.gb28181.task.impl.CatalogSubscribeTask; import com.genersoft.iot.vmp.gb28181.task.impl.MobilePositionSubscribeTask; -import com.genersoft.iot.vmp.gb28181.bean.SyncStatus; import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; import com.genersoft.iot.vmp.storager.dao.DeviceMapper; import com.genersoft.iot.vmp.utils.DateUtil; +import com.genersoft.iot.vmp.vmanager.bean.BaseTree; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.support.incrementer.AbstractIdentityColumnMaxValueIncrementer; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.Instant; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; @@ -341,4 +342,180 @@ public class DeviceServiceImpl implements IDeviceService { } storage.updateChannels(device.getDeviceId(), deviceChannels); } + + + @Override + public List> queryVideoDeviceTree(String deviceId, String parentId, boolean onlyCatalog) { + Device device = deviceMapper.getDeviceByDeviceId(deviceId); + if (device == null) { + return null; + } + if (parentId == null || parentId.equals(deviceId)) { + // 字根节点开始查询 + List rootNodes = getRootNodes(deviceId, "CivilCode".equals(device.getTreeType()), true, !onlyCatalog); + return transportChannelsToTree(rootNodes, ""); + } + + if ("CivilCode".equals(device.getTreeType())) { + if (parentId.length()%2 != 0) { + return null; + } + // 使用行政区划展示树 + if (parentId.length() > 10) { + // TODO 可能是行政区划与业务分组混杂的情形 + return null; + } + + if (parentId.length() == 10 ) { + if (onlyCatalog) { + return null; + } + // parentId为行业编码, 其下不会再有行政区划 + List channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); + List> trees = transportChannelsToTree(channels, parentId); + return trees; + } + // 查询其下的行政区划和摄像机 + List channelsForCivilCode = deviceChannelMapper.getChannelsWithCivilCodeAndLength(deviceId, parentId, parentId.length() + 2); + if (!onlyCatalog) { + List channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); + channelsForCivilCode.addAll(channels); + } + List> trees = transportChannelsToTree(channelsForCivilCode, parentId); + return trees; + + } + // 使用业务分组展示树 + if ("BusinessGroup".equals(device.getTreeType())) { + if (parentId.length() < 14 ) { + return null; + } + List deviceChannels = deviceChannelMapper.queryChannels(deviceId, parentId, null, null, null); + List> trees = transportChannelsToTree(deviceChannels, parentId); + return trees; + } + + return null; + } + + @Override + public List queryVideoDeviceInTreeNode(String deviceId, String parentId) { + Device device = deviceMapper.getDeviceByDeviceId(deviceId); + if (device == null) { + return null; + } + if (parentId == null || parentId.equals(deviceId)) { + // 字根节点开始查询 + List rootNodes = getRootNodes(deviceId, "CivilCode".equals(device.getTreeType()), false, true); + return rootNodes; + } + + if ("CivilCode".equals(device.getTreeType())) { + if (parentId.length()%2 != 0) { + return null; + } + // 使用行政区划展示树 + if (parentId.length() > 10) { + // TODO 可能是行政区划与业务分组混杂的情形 + return null; + } + + if (parentId.length() == 10 ) { + // parentId为行业编码, 其下不会再有行政区划 + List channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); + return channels; + } + // 查询其下的行政区划和摄像机 + List channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); + return channels; + + } + // 使用业务分组展示树 + if ("BusinessGroup".equals(device.getTreeType())) { + if (parentId.length() < 14 ) { + return null; + } + List deviceChannels = deviceChannelMapper.queryChannels(deviceId, parentId, null, null, null); + return deviceChannels; + } + + return null; + } + + private List> transportChannelsToTree(List channels, String parentId) { + if (channels == null) { + return null; + } + List> treeNotes = new ArrayList<>(); + if (channels.size() == 0) { + return treeNotes; + } + for (DeviceChannel channel : channels) { + + BaseTree node = new BaseTree<>(); + node.setId(channel.getChannelId()); + node.setDeviceId(channel.getDeviceId()); + node.setName(channel.getName()); + node.setPid(parentId); + node.setBasicData(channel); + node.setParent(false); + if (channel.getChannelId().length() > 8) { + String gbCodeType = channel.getChannelId().substring(10, 13); + node.setParent(gbCodeType.equals(ChannelIdType.BUSINESS_GROUP) || gbCodeType.equals(ChannelIdType.VIRTUAL_ORGANIZATION) ); + }else { + node.setParent(true); + } + treeNotes.add(node); + } + Collections.sort(treeNotes); + return treeNotes; + } + + private List getRootNodes(String deviceId, boolean isCivilCode, boolean haveCatalog, boolean haveChannel) { + if (!haveCatalog && !haveChannel) { + return null; + } + List result = new ArrayList<>(); + if (isCivilCode) { + // 使用行政区划 + Integer length= deviceChannelMapper.getChannelMinLength(deviceId); + if (length == null) { + return null; + } + if (length <= 10) { + if (haveCatalog) { + List provinceNode = deviceChannelMapper.getChannelsWithCivilCodeAndLength(deviceId, null, length); + if (provinceNode != null && provinceNode.size() > 0) { + result.addAll(provinceNode); + } + } + + if (haveChannel) { + // 查询那些civilCode不在通道中的不规范通道,放置在根目录 + List nonstandardNode = deviceChannelMapper.getChannelWithoutCiviCode(deviceId); + if (nonstandardNode != null && nonstandardNode.size() > 0) { + result.addAll(nonstandardNode); + } + } + }else { + if (haveChannel) { + List deviceChannels = deviceChannelMapper.queryChannels(deviceId, null, null, null, null); + if (deviceChannels != null && deviceChannels.size() > 0) { + result.addAll(deviceChannels); + } + } + } + + }else { + // 使用业务分组+虚拟组织 + + // 只获取业务分组 + List deviceChannels = deviceChannelMapper.getBusinessGroups(deviceId, ChannelIdType.BUSINESS_GROUP); + if (deviceChannels != null && deviceChannels.size() > 0) { + result.addAll(deviceChannels); + } + } + return result; + } + } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index 41eca5da..041fdf00 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -123,7 +123,7 @@ public class PlayServiceImpl implements IPlayService { result.onCompletion(()->{ // 点播结束时调用截图接口 // TODO 应该在上流时调用更好,结束也可能是错误结束 - String path = "static/static/snap/"; + String path = "snap"; String fileName = deviceId + "_" + channelId + ".jpg"; ResponseEntity responseEntity = (ResponseEntity)result.getResult(); if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { @@ -178,7 +178,6 @@ public class PlayServiceImpl implements IPlayService { } - } if (streamInfo == null) { String streamId = null; diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java index 5c46fb92..69ce4a7d 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java @@ -1,5 +1,6 @@ package com.genersoft.iot.vmp.storager.dao; +import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannelInPlatform; import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; @@ -17,10 +18,12 @@ public interface DeviceChannelMapper { @Insert("INSERT INTO device_channel (channelId, deviceId, name, manufacture, model, owner, civilCode, block, " + "address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " + - "ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, longitudeWgs84, latitudeWgs84, createTime, updateTime) " + + "ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, " + + "longitudeWgs84, latitudeWgs84, createTime, updateTime, businessGroupId) " + "VALUES ('${channelId}', '${deviceId}', '${name}', '${manufacture}', '${model}', '${owner}', '${civilCode}', '${block}'," + "'${address}', ${parental}, '${parentId}', ${safetyWay}, ${registerWay}, '${certNum}', ${certifiable}, ${errCode}, '${secrecy}', " + - "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status}, '${streamId}', ${longitude}, ${latitude}, ${longitudeGcj02}, ${latitudeGcj02}, ${longitudeWgs84}, ${latitudeWgs84},'${createTime}', '${updateTime}')") + "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status}, '${streamId}', ${longitude}, ${latitude}, ${longitudeGcj02}, " + + "${latitudeGcj02}, ${longitudeWgs84}, ${latitudeWgs84},'${createTime}', '${updateTime}', '${businessGroupId}')") int add(DeviceChannel channel); @Update(value = {" "}) int update(DeviceChannel channel); @@ -143,7 +147,7 @@ public interface DeviceChannelMapper { "(channelId, deviceId, name, manufacture, model, owner, civilCode, block, subCount, " + " address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " + " ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, " + - " longitudeWgs84, latitudeWgs84, createTime, updateTime) " + + " longitudeWgs84, latitudeWgs84, createTime, updateTime, businessGroupId) " + "values " + " " + "('${item.channelId}', '${item.deviceId}', '${item.name}', '${item.manufacture}', '${item.model}', " + @@ -152,7 +156,7 @@ public interface DeviceChannelMapper { "'${item.certNum}', ${item.certifiable}, ${item.errCode}, '${item.secrecy}', " + "'${item.ipAddress}', ${item.port}, '${item.password}', ${item.PTZType}, ${item.status}, " + "'${item.streamId}', ${item.longitude}, ${item.latitude},${item.longitudeGcj02}, " + - "${item.latitudeGcj02},${item.longitudeWgs84}, ${item.latitudeWgs84},'${item.createTime}', '${item.updateTime}')" + + "${item.latitudeGcj02},${item.longitudeWgs84}, ${item.latitudeWgs84},'${item.createTime}', '${item.updateTime}, '${item.businessGroupId}')" + " " + "ON DUPLICATE KEY UPDATE " + "updateTime=VALUES(updateTime), " + @@ -183,7 +187,8 @@ public interface DeviceChannelMapper { "longitudeGcj02=VALUES(longitudeGcj02), " + "latitudeGcj02=VALUES(latitudeGcj02), " + "longitudeWgs84=VALUES(longitudeWgs84), " + - "latitudeWgs84=VALUES(latitudeWgs84) " + + "latitudeWgs84=VALUES(latitudeWgs84), " + + "businessGroupId=VALUES(businessGroupId) " + "") int batchAdd(List addChannels); @@ -221,6 +226,7 @@ public interface DeviceChannelMapper { ", latitudeGcj02=${item.latitudeGcj02}" + ", longitudeWgs84=${item.longitudeWgs84}" + ", latitudeWgs84=${item.latitudeWgs84}" + + ", businessGroupId=${item.businessGroupId}" + "WHERE deviceId='${item.deviceId}' AND channelId='${item.channelId}'"+ "" + ""}) @@ -277,4 +283,33 @@ public interface DeviceChannelMapper { @Select("select * from device_channel where longitude*latitude > 0 and deviceId = #{deviceId}") List getAllChannelWithCoordinate(String deviceId); + + + @Select(value = {" "}) + List getChannelsWithCivilCodeAndLength(String deviceId, String parentId, Integer length); + + @Select(value = {" "}) + List getChannelsByCivilCode(String deviceId, String parentId); + + @Select("select min(length(channelId)) as minLength " + + "from device_channel " + + "where deviceId=#{deviceId}") + Integer getChannelMinLength(String deviceId); + + @Select("select * from device_channel where deviceId=#{deviceId} and civilCode not in " + + "(select civilCode from device_channel where deviceId=#{deviceId} group by civilCode)") + List getChannelWithoutCiviCode(String deviceId); + + @Select("select * from device_channel where deviceId=#{deviceId} and SUBSTRING(channelId, 11, 3)=#{typeCode}") + List getBusinessGroups(String deviceId, String typeCode); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java index 3e15b739..7e8dd3c6 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java @@ -39,6 +39,7 @@ public interface DeviceMapper { "subscribeCycleForAlarm," + "ssrcCheck," + "geoCoordSys," + + "treeType," + "online" + ") VALUES (" + "#{deviceId}," + @@ -63,6 +64,7 @@ public interface DeviceMapper { "#{subscribeCycleForAlarm}," + "#{ssrcCheck}," + "#{geoCoordSys}," + + "#{treeType}," + "#{online}" + ")") int add(Device device); @@ -90,6 +92,7 @@ public interface DeviceMapper { ", subscribeCycleForAlarm=${subscribeCycleForAlarm}" + ", ssrcCheck=${ssrcCheck}" + ", geoCoordSys=#{geoCoordSys}" + + ", treeType=#{treeType}" + "WHERE deviceId='${deviceId}'"+ " "}) int update(Device device); diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/BaseTree.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/BaseTree.java new file mode 100644 index 00000000..23690e54 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/BaseTree.java @@ -0,0 +1,87 @@ +package com.genersoft.iot.vmp.vmanager.bean; + +import org.jetbrains.annotations.NotNull; + +import java.text.Collator; +import java.util.Comparator; + +/** + * @author lin + */ +public class BaseTree implements Comparable{ + private String id; + + private String deviceId; + private String pid; + private String name; + private boolean parent; + + private T basicData; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public T getBasicData() { + return basicData; + } + + public void setBasicData(T basicData) { + this.basicData = basicData; + } + + public boolean isParent() { + return parent; + } + + public void setParent(boolean parent) { + this.parent = parent; + } + + @Override + public int compareTo(@NotNull BaseTree treeNode) { + if (this.parent || treeNode.isParent()) { + if (!this.parent && !treeNode.isParent()) { + Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); + return cmp.compare(treeNode.getName(), this.getName()); + }else { + if (this.isParent()) { + return 1; + }else { + return -1; + } + } + }else{ + Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); + return cmp.compare(treeNode.getName(), this.getName()); + } + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java index 5e1e40be..767e9c40 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java @@ -15,6 +15,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; import com.genersoft.iot.vmp.service.IDeviceService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorage; +import com.genersoft.iot.vmp.vmanager.bean.BaseTree; import com.genersoft.iot.vmp.vmanager.bean.WVPResult; import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; @@ -479,4 +480,99 @@ public class DeviceQuery { resp.setStatus(HttpServletResponse.SC_NOT_FOUND); } } + + /** + * 查询国标树 + * @param deviceId 设备ID + * @param parentId 父ID + * @param page 当前页 + * @param count 每页条数 + * @return 国标设备 + */ + @ApiOperation("查询国标树") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true, dataTypeClass = String.class), + @ApiImplicitParam(name = "parentId", value = "父ID", required = false, dataTypeClass = String.class), + @ApiImplicitParam(name = "onlyCatalog", value = "只获取目录", required = false, dataTypeClass = Boolean.class), + @ApiImplicitParam(name="page", value = "当前页", required = true, dataTypeClass = Integer.class), + @ApiImplicitParam(name="count", value = "每页条数", required = true, dataTypeClass = Integer.class), + }) + @GetMapping("/tree/{deviceId}") + public ResponseEntity getTree(@PathVariable String deviceId, @RequestParam(required = false) String parentId, @RequestParam(required = false) Boolean onlyCatalog, int page, int count){ + + + if (page <= 0) { + page = 1; + } + if (onlyCatalog == null) { + onlyCatalog = false; + } + + List> treeData = deviceService.queryVideoDeviceTree(deviceId, parentId, onlyCatalog); + if (treeData == null || (page - 1) * count > treeData.size()) { + PageInfo> pageInfo = new PageInfo<>(); + pageInfo.setPageNum(page); + pageInfo.setTotal(treeData == null? 0 : treeData.size()); + pageInfo.setSize(0); + pageInfo.setList(new ArrayList<>()); + return new ResponseEntity<>(pageInfo,HttpStatus.OK); + } + + int toIndex = Math.min(page * count, treeData.size()); + // 处理分页 + List> trees = treeData.subList((page - 1) * count, toIndex); + PageInfo> pageInfo = new PageInfo<>(); + pageInfo.setPageNum(page); + pageInfo.setTotal(treeData.size()); + pageInfo.setSize(trees.size()); + pageInfo.setList(trees); + + return new ResponseEntity<>(pageInfo,HttpStatus.OK); + } + + + /** + * 查询国标树下的通道 + * @param deviceId 设备ID + * @param parentId 父ID + * @param page 当前页 + * @param count 每页条数 + * @return 国标设备 + */ + @ApiOperation("查询国标树下的通道") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true, dataTypeClass = String.class), + @ApiImplicitParam(name = "parentId", value = "父ID", required = false, dataTypeClass = String.class), + @ApiImplicitParam(name="page", value = "当前页", required = true, dataTypeClass = Integer.class), + @ApiImplicitParam(name="count", value = "每页条数", required = true, dataTypeClass = Integer.class), + }) + @GetMapping("/tree/channel/{deviceId}") + public ResponseEntity getChannelInTreeNode(@PathVariable String deviceId, @RequestParam(required = false) String parentId, int page, int count){ + + + if (page <= 0) { + page = 1; + } + + List treeData = deviceService.queryVideoDeviceInTreeNode(deviceId, parentId); + if (treeData == null || (page - 1) * count > treeData.size()) { + PageInfo> pageInfo = new PageInfo<>(); + pageInfo.setPageNum(page); + pageInfo.setTotal(treeData == null? 0 : treeData.size()); + pageInfo.setSize(0); + pageInfo.setList(new ArrayList<>()); + return new ResponseEntity<>(pageInfo,HttpStatus.OK); + } + + int toIndex = Math.min(page * count, treeData.size()); + // 处理分页 + List trees = treeData.subList((page - 1) * count, toIndex); + PageInfo pageInfo = new PageInfo<>(); + pageInfo.setPageNum(page); + pageInfo.setTotal(treeData.size()); + pageInfo.setSize(trees.size()); + pageInfo.setList(trees); + + return new ResponseEntity<>(pageInfo,HttpStatus.OK); + } } diff --git a/src/main/resources/logback-spring-local.xml b/src/main/resources/logback-spring-local.xml index ec80d2dd..9e583553 100644 --- a/src/main/resources/logback-spring-local.xml +++ b/src/main/resources/logback-spring-local.xml @@ -11,6 +11,11 @@ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n + + + + DEBUG + diff --git a/web_src/package-lock.json b/web_src/package-lock.json index 0d4c886c..8e0a324c 100644 --- a/web_src/package-lock.json +++ b/web_src/package-lock.json @@ -22,7 +22,9 @@ "vue-clipboards": "^1.3.0", "vue-contextmenujs": "^1.3.13", "vue-cookies": "^1.7.4", - "vue-router": "^3.1.6" + "vue-giant-tree": "^0.1.5", + "vue-router": "^3.1.6", + "vue-ztree-2.0": "^1.0.4" }, "devDependencies": { "autoprefixer": "^7.1.2", @@ -50,7 +52,7 @@ "postcss-url": "^7.2.1", "rimraf": "^2.6.0", "semver": "^5.3.0", - "shelljs": "^0.7.6", + "shelljs": "^0.8.5", "uglifyjs-webpack-plugin": "^1.1.1", "url-loader": "^0.5.8", "vue-loader": "^13.3.0", @@ -116,6 +118,17 @@ "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, + "node_modules/@ztree/ztree_v3": { + "version": "3.5.48", + "resolved": "https://registry.npmmirror.com/@ztree/ztree_v3/-/ztree_v3-3.5.48.tgz", + "integrity": "sha512-4dSA1g26T3j/O3I89+r/Palg+a+xwMGRS1etZoggnCGBPoOrwW8VGA3zitJCK/Yd7eEMX+LfKTRJjEGiWpoN3w==", + "dependencies": { + "jquery": ">=1.4.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/accepts": { "version": "1.3.7", "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", @@ -6034,6 +6047,11 @@ "node": ">=0.10.0" } }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, "node_modules/js-base64": { "version": "2.6.4", "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 @@ } }, "node_modules/shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npm.taobao.org/shelljs/download/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "version": "0.8.5", + "resolved": "https://registry.npmmirror.com/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "dependencies": { "glob": "^7.0.0", @@ -11668,8 +11686,7 @@ "shjs": "bin/shjs" }, "engines": { - "iojs": "*", - "node": ">=0.11.0" + "node": ">=4" } }, "node_modules/shellwords": { @@ -13068,6 +13085,15 @@ "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", "integrity": "sha1-0kHQoEMdoHlYN2UdELTXPnyNPo0=" }, + "node_modules/vue-giant-tree": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/vue-giant-tree/-/vue-giant-tree-0.1.5.tgz", + "integrity": "sha512-P3KEHSZU2NkpWl6frss+sJLO0DLrtarMNLeTV/IGU2/w50rgrlKbKNr/ckK6BBVdWXAJYlYf6HUTNkKvGq5hlg==", + "dependencies": { + "@ztree/ztree_v3": "^3.5.44", + "jquery": "^3.5.1" + } + }, "node_modules/vue-hot-reload-api": { "version": "2.3.4", "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", @@ -13175,6 +13201,11 @@ "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", "dev": true }, + "node_modules/vue-ztree-2.0": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/vue-ztree-2.0/-/vue-ztree-2.0-1.0.4.tgz", + "integrity": "sha512-d7KZsquEYpM0jD/k1uwOMFCd08L6++7zwRESaL2sF43OtRFCump8BxcLpjusBIHpFadPvOSMMnK5P41y+ZiTlA==" + }, "node_modules/watchpack": { "version": "1.7.4", "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 @@ "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, + "@ztree/ztree_v3": { + "version": "3.5.48", + "resolved": "https://registry.npmmirror.com/@ztree/ztree_v3/-/ztree_v3-3.5.48.tgz", + "integrity": "sha512-4dSA1g26T3j/O3I89+r/Palg+a+xwMGRS1etZoggnCGBPoOrwW8VGA3zitJCK/Yd7eEMX+LfKTRJjEGiWpoN3w==", + "requires": { + "jquery": ">=1.4.4" + } + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", @@ -19488,6 +19527,11 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, "js-base64": { "version": "2.6.4", "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 @@ "dev": true }, "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npm.taobao.org/shelljs/download/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "version": "0.8.5", + "resolved": "https://registry.npmmirror.com/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "requires": { "glob": "^7.0.0", @@ -25352,6 +25396,15 @@ "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", "integrity": "sha1-0kHQoEMdoHlYN2UdELTXPnyNPo0=" }, + "vue-giant-tree": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/vue-giant-tree/-/vue-giant-tree-0.1.5.tgz", + "integrity": "sha512-P3KEHSZU2NkpWl6frss+sJLO0DLrtarMNLeTV/IGU2/w50rgrlKbKNr/ckK6BBVdWXAJYlYf6HUTNkKvGq5hlg==", + "requires": { + "@ztree/ztree_v3": "^3.5.44", + "jquery": "^3.5.1" + } + }, "vue-hot-reload-api": { "version": "2.3.4", "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", @@ -25448,6 +25501,11 @@ "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", "dev": true }, + "vue-ztree-2.0": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/vue-ztree-2.0/-/vue-ztree-2.0-1.0.4.tgz", + "integrity": "sha512-d7KZsquEYpM0jD/k1uwOMFCd08L6++7zwRESaL2sF43OtRFCump8BxcLpjusBIHpFadPvOSMMnK5P41y+ZiTlA==" + }, "watchpack": { "version": "1.7.4", "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", diff --git a/web_src/package.json b/web_src/package.json index b825f840..d19a58d2 100644 --- a/web_src/package.json +++ b/web_src/package.json @@ -24,7 +24,9 @@ "vue-clipboards": "^1.3.0", "vue-contextmenujs": "^1.3.13", "vue-cookies": "^1.7.4", - "vue-router": "^3.1.6" + "vue-giant-tree": "^0.1.5", + "vue-router": "^3.1.6", + "vue-ztree-2.0": "^1.0.4" }, "devDependencies": { "autoprefixer": "^7.1.2", diff --git a/web_src/src/components/DeviceList.vue b/web_src/src/components/DeviceList.vue index 1911d1db..97fa4f22 100644 --- a/web_src/src/components/DeviceList.vue +++ b/web_src/src/components/DeviceList.vue @@ -56,11 +56,11 @@ @mouseover="getTooltipContent(scope.row.deviceId)">刷新 - 通道 - 定位 @@ -192,7 +192,7 @@ export default { }, showChannelList: function (row) { - this.$router.push(`/channelList/${row.deviceId}/0/15/1`); + this.$router.push(`/channelList/${row.deviceId}/0`); }, showDevicePosition: function (row) { this.$router.push(`/map?deviceId=${row.deviceId}`); diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue index d27e62bd..2a09c5ce 100644 --- a/web_src/src/components/channelList.vue +++ b/web_src/src/components/channelList.vue @@ -7,104 +7,116 @@ 通道列表
- 搜索: - +
+ 搜索: + - 通道类型: - - - - - - 在线状态: - - - - - + 通道类型: + + + + + + 在线状态: + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -114,12 +126,14 @@ import uiHeader from '../layout/UiHeader.vue' import moment from "moment"; import DviceService from "./service/DeviceService"; import DeviceService from "./service/DeviceService"; +import DeviceTree from "./common/DeviceTree"; export default { name: 'channelList', components: { devicePlayer, - uiHeader + uiHeader, + DeviceTree }, data() { return { @@ -134,12 +148,13 @@ export default { searchSrt: "", channelType: "", online: "", - winHeight: window.innerHeight - 250, - currentPage: parseInt(this.$route.params.page), - count: parseInt(this.$route.params.count), + winHeight: window.innerHeight - 200, + currentPage: 1, + count: 15, total: 0, beforeUrl: "/deviceList", isLoging: false, + showTree: false, loadSnap: {} }; }, @@ -172,19 +187,16 @@ export default { initParam: function () { this.deviceId = this.$route.params.deviceId; this.parentChannelId = this.$route.params.parentChannelId; - this.currentPage = parseInt(this.$route.params.page); - this.count = parseInt(this.$route.params.count); + this.currentPage = 1; + this.count = 15; if (this.parentChannelId == "" || this.parentChannelId == 0) { this.beforeUrl = "/deviceList" } }, currentChange: function (val) { - var url = `/${this.$router.currentRoute.name}/${this.deviceId}/${this.parentChannelId}/${this.count}/${val}` - this.$router.push(url).then(() => { - this.initParam(); - this.initData(); - }) + this.currentPage = val; + this.initData(); }, handleSizeChange: function (val) { this.count = val; @@ -316,28 +328,48 @@ export default { }) }, showSubchannels: function (channelId) { - let that = this; + if (!this.showTree) { + this.$axios({ + method: 'get', + url: `/api/device/query/sub_channels/${this.deviceId}/${this.parentChannelId}/channels`, + params: { + page: this.currentPage, + count: this.count, + query: this.searchSrt, + online: this.online, + channelType: this.channelType + } + }).then( (res) =>{ + this.total = res.data.total; + this.deviceChannelList = res.data.list; + // 防止出现表格错位 + this.$nextTick(() => { + this.$refs.channelListTable.doLayout(); + }) + }).catch(function (error) { + console.log(error); + }); + }else { + this.$axios({ + method: 'get', + url: `/api/device/query/tree/channel/${this.deviceId}`, + params: { + parentId: this.parentChannelId, + page: this.currentPage, + count: this.count, + } + }).then((res)=> { + this.total = res.data.total; + this.deviceChannelList = res.data.list; + // 防止出现表格错位 + this.$nextTick(() => { + this.$refs.channelListTable.doLayout(); + }) + }).catch(function (error) { + console.log(error); + }); + } - this.$axios({ - method: 'get', - url: `/api/device/query/sub_channels/${this.deviceId}/${this.parentChannelId}/channels`, - params: { - page: that.currentPage, - count: that.count, - query: that.searchSrt, - online: that.online, - channelType: that.channelType - } - }).then(function (res) { - that.total = res.data.total; - that.deviceChannelList = res.data.list; - // 防止出现表格错位 - that.$nextTick(() => { - that.$refs.channelListTable.doLayout(); - }) - }).catch(function (error) { - console.log(error); - }); }, search: function () { this.currentPage = 1; @@ -355,6 +387,29 @@ export default { }, refresh: function () { this.initData(); + }, + switchTree: function (){ + this.showTree = true; + this.deviceChannelList = []; + this.parentChannelId = 0; + this.currentPage = 1; + + }, + switchList: function (){ + this.showTree = false; + this.deviceChannelList = []; + this.parentChannelId = 0; + this.currentPage = 1; + this.initData(); + }, + treeNodeClickEvent: function (device, data, isCatalog) { + console.log(device) + if (!!!data.channelId) { + this.parentChannelId = device.deviceId; + }else { + this.parentChannelId = data.channelId; + } + this.initData(); } } diff --git a/web_src/src/components/common/DeviceTree.vue b/web_src/src/components/common/DeviceTree.vue index 73618cc3..c701bf0f 100644 --- a/web_src/src/components/common/DeviceTree.vue +++ b/web_src/src/components/common/DeviceTree.vue @@ -4,7 +4,7 @@ 设备列表
- + @@ -47,98 +47,112 @@ export default { } }; }, - props: ['clickEvent', 'contextMenuEvent'], + props: ['device', 'onlyCatalog', 'clickEvent', 'contextMenuEvent'], methods: { handleNodeClick(data,node,element) { - console.log("点击事件") - console.log(data) + let deviceNode = this.$refs.gdTree.getNode(data.userData.deviceId) if(typeof (this.clickEvent) == "function") { - this.clickEvent(data.userData) + this.clickEvent(deviceNode.data.userData, data.userData, data.type === 2) } }, handleContextMenu(event,data,node,element) { console.log("右键点击事件") + let deviceNode = this.$refs.gdTree.getNode(data.userData.deviceId) if(typeof (this.contextMenuEvent) == "function") { - this.contextMenuEvent(event, data.userData) + this.contextMenuEvent(deviceNode.data.userData, event, data.userData, data.type === 2) } }, loadNode: function(node, resolve){ + console.log(this.device) if (node.level === 0) { - this.deviceService.getAllDeviceList((data)=>{ - console.log(data) - if (data.length > 0) { - let nodeList = [] - for (let i = 0; i < data.length; i++) { - console.log(data[i].name) - let node = { - name: data[i].name || data[i].deviceId, - isLeaf: false, - id: data[i].deviceId, - type: data[i].online, - online: data[i].online === 1, - userData: data[i] - } - nodeList.push(node); - } - resolve(nodeList) - }else { - resolve([]) + if (this.device) { + let node = { + name: this.device.name || this.device.deviceId, + isLeaf: false, + id: this.device.deviceId, + type: this.device.online, + online: this.device.online === 1, + userData: this.device } - }, (list)=>{ + resolve([node]) + }else { + this.deviceService.getAllDeviceList((data)=>{ + console.log(data) + if (data.length > 0) { + let nodeList = [] + for (let i = 0; i < data.length; i++) { + console.log(data[i].name) + let node = { + name: data[i].name || data[i].deviceId, + isLeaf: false, + id: data[i].deviceId, + type: data[i].online, + online: data[i].online === 1, + userData: data[i] + } + nodeList.push(node); + } + resolve(nodeList) + }else { + resolve([]) + } + }, (list)=>{ console.log("设备加载完成") - }, (error)=>{ + }, (error)=>{ - }) - } - if (node.level === 1) { + }) + } + }else { let channelArray = [] - this.deviceService.getAllChannel(true, true, node.data.id, catalogData =>{ + + this.deviceService.getTree(node.data.userData.deviceId, node.data.id, this.onlyCatalog, catalogData =>{ + console.log(catalogData) channelArray = channelArray.concat(catalogData) this.channelDataHandler(channelArray, resolve) },(endCatalogData) => { - this.deviceService.getAllChannel(false, true, node.data.id, channelData => { - channelArray = channelArray.concat(channelData) - this.channelDataHandler(channelArray, resolve) - }, endChannelList => { - }) - }) - }else if (node.level > 1){ - let channelArray = [] - this.deviceService.getAllSubChannel(true, node.data.deviceId, node.data.id, (catalogData)=>{ - channelArray = channelArray.concat(catalogData) - this.channelDataHandler(channelArray, resolve) - }, (endCatalogData)=>{ - this.deviceService.getAllSubChannel(false, node.data.deviceId, node.data.id, (channelData)=>{ - channelArray = channelArray.concat(channelData) - this.channelDataHandler(channelArray, resolve) - }) }) } + }, channelDataHandler: function (data, resolve) { if (data.length > 0) { let nodeList = [] - for (let i = 0; i < data.length; i++) { + for (let i = 0; i 0 || data[i].parental === 1) { + if (item.id.length <= 10) { type = 2; - }else if (data[i].ptztype === 1 ) { // 1-球机;2-半球;3-固定枪机;4-遥控枪机 - type = 4; - }else if (data[i].ptztype === 2) { - type = 5; - }else if (data[i].ptztype === 3 || data[i].ptztype === 4) { - type = 6; + }else { + if (item.id.length > 14) { + let channelType = item.id.substring(10, 13) + console.log("channelType: " + channelType) + if (channelType === '215' || channelType === '216') { + type = 2; + } + console.log(type) + if (item.basicData.ptztype === 1 ) { // 1-球机;2-半球;3-固定枪机;4-遥控枪机 + type = 4; + }else if (item.basicData.ptztype === 2) { + type = 5; + }else if (item.basicData.ptztype === 3 || item.basicData.ptztype === 4) { + type = 6; + } + }else { + if (item.basicData.subCount > 0 || item.basicData.parental === 1) { + type = 2; + } + } } let node = { - name: data[i].name || data[i].channelId, - isLeaf: data[i].subCount === 0, - id: data[i].channelId, - deviceId: data[i].deviceId, + name: item.name || item.basicData.channelId, + isLeaf: type !== 2, + id: item.id, + deviceId: item.deviceId, type: type, - online: data[i].status === 1, - hasGPS: data[i].longitude*data[i].latitude !== 0, - userData: data[i] + online: item.basicData.status === 1, + hasGPS: item.basicData.longitude*item.basicData.latitude !== 0, + userData: item.basicData } nodeList.push(node); } @@ -146,6 +160,9 @@ export default { }else { resolve([]) } + }, + reset: function (){ + this.$forceUpdate(); } }, destroyed() { diff --git a/web_src/src/components/common/DeviceTreeForZtree.vue b/web_src/src/components/common/DeviceTreeForZtree.vue new file mode 100644 index 00000000..6c02bcca --- /dev/null +++ b/web_src/src/components/common/DeviceTreeForZtree.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/web_src/src/components/dialog/deviceEdit.vue b/web_src/src/components/dialog/deviceEdit.vue index ed17d171..773e7c9e 100644 --- a/web_src/src/components/dialog/deviceEdit.vue +++ b/web_src/src/components/dialog/deviceEdit.vue @@ -42,6 +42,12 @@ + + + + + + diff --git a/web_src/src/components/live.vue b/web_src/src/components/live.vue index 797be84a..1f2d6caa 100644 --- a/web_src/src/components/live.vue +++ b/web_src/src/components/live.vue @@ -107,20 +107,24 @@ export default { console.log(idx); this.clear(idx.substring(idx.length - 1)) }, - clickEvent: function (data) { - if (data.channelId && data.subCount == 0) { - this.sendDevicePush(data) + clickEvent: function (device, data, isCatalog) { + if (data.channelId && !isCatalog) { + if (device.online === 0) { + this.$message.error('设备离线!不允许点播'); + }else { + this.sendDevicePush(data) + } } }, - contextMenuEvent: function (data) { + contextMenuEvent: function (device, event, data, isCatalog) { }, //通知设备上传媒体流 sendDevicePush: function (itemData) { - if (itemData.status === 0) { - this.$message.error('设备离线!'); - return - } + // if (itemData.status === 0) { + // this.$message.error('设备离线!'); + // return + // } this.save(itemData) let deviceId = itemData.deviceId; // this.isLoging = true; diff --git a/web_src/src/components/map.vue b/web_src/src/components/map.vue index e9e86287..d4a36cf0 100644 --- a/web_src/src/components/map.vue +++ b/web_src/src/components/map.vue @@ -16,7 +16,8 @@ {{channel.channelId}} {{channel.model}} - {{channel.longitude}},{{channel.latitude}} + {{channel[longitudeStr]}} + {{channel[latitudeStr]}} {{channel.manufacture}} {{channel.civilCode}} {{channel.owner}} @@ -28,7 +29,7 @@
- +
@@ -64,11 +65,14 @@ export default { layer: null, lineLayer: null, channel: null, + device: null, infoBoxId: null, labelStyle: { width: "56px" }, isLoging: false, + longitudeStr: "longitude", + latitudeStr: "latitude", }; }, created() { @@ -78,17 +82,27 @@ export default { setTimeout(()=>{ // 延迟以等待地图加载完成 TODO 后续修改为通过是实际这;状态加回调完成 this.deviceService.getAllChannel(false, false, this.$route.query.deviceId, this.channelsHandler) }, 1000) - + } + if (window.mapParam.coordinateSystem == "GCJ-02") { + this.longitudeStr = "longitudeGcj02"; + this.latitudeStr = "latitudeGcj02"; + }else if (window.mapParam.coordinateSystem == "WGS84") { + this.longitudeStr = "longitudeWgs84"; + this.latitudeStr = "latitudeWgs84"; + }else { + this.longitudeStr = "longitude"; + this.latitudeStr = "latitude"; } }, destroyed() { }, methods: { - clickEvent: function (data) { - if (data.channelId && data.subCount == 0) { + clickEvent: function (device, data, isCatalog) { + this.device = device; + if (data.channelId && !isCatalog) { // 点击通道 - if (data.longitude * data.latitude === 0) { + if (data[this.longitudeStr] * data[this.latitudeStr] === 0) { this.$message.error('未获取到位置信息'); } else { if (this.layer != null) { @@ -96,26 +110,29 @@ export default { } this.closeInfoBox() this.layer = this.$refs.map.addLayer([{ - position: [data.longitude, data.latitude], + position: [data[this.longitudeStr], data[this.latitudeStr]], image: { src: this.getImageByChannel(data), anchor: [0.5, 1] }, data: data }], this.featureClickEvent) - this.$refs.map.panTo([data.longitude, data.latitude], mapParam.maxZoom) + this.$refs.map.panTo([data[this.longitudeStr], data[this.latitudeStr]], mapParam.maxZoom) } } }, - contextmenuEventHandler: function (event, data) { - if (data.channelId && data.subCount == 0) { + contextmenuEventHandler: function (device, event, data, isCatalog) { + console.log(device) + console.log(device.online) + this.device = device; + if (data.channelId && !isCatalog) { // 点击通道 this.$contextmenu({ items: [ { label: "播放", icon: "el-icon-video-play", - disabled: false, + disabled: device.online === 0, onClick: () => { this.play(data); } @@ -183,22 +200,11 @@ export default { this.clean() this.closeInfoBox() let params = []; - let longitudeStr; - let latitudeStr; - if (window.mapParam.coordinateSystem == "GCJ-02") { - longitudeStr = "longitudeGcj02"; - latitudeStr = "latitudeGcj02"; - }else if (window.mapParam.coordinateSystem == "WGS84") { - longitudeStr = "longitudeWgs84"; - latitudeStr = "latitudeWgs84"; - }else { - longitudeStr = "longitude"; - latitudeStr = "latitude"; - } + for (let i = 0; i < channels.length; i++) { - let longitude = channels[i][longitudeStr]; - let latitude = channels[i][latitudeStr]; + let longitude = channels[i][this.longitudeStr]; + let latitude = channels[i][this.latitudeStr]; if (longitude * latitude === 0) { continue; } @@ -217,7 +223,7 @@ export default { this.layer = this.$refs.map.addLayer(params, this.featureClickEvent) console.log(4) if (params.length === 1) { - this.$refs.map.panTo([channels[0][longitudeStr], channels[0][latitudeStr]], mapParam.maxZoom) + this.$refs.map.panTo([channels[0][this.longitudeStr], channels[0][this.latitudeStr]], mapParam.maxZoom) } else if (params.length > 1) { this.$refs.map.fit(this.layer) } else { @@ -266,19 +272,7 @@ export default { this.channel = channels[0] } this.$nextTick(() => { - let longitudeStr; - let latitudeStr; - if (window.mapParam.coordinateSystem == "GCJ-02") { - longitudeStr = "longitudeGcj02"; - latitudeStr = "latitudeGcj02"; - }else if (window.mapParam.coordinateSystem == "WGS84") { - longitudeStr = "longitudeWgs84"; - latitudeStr = "latitudeWgs84"; - }else { - longitudeStr = "longitude"; - latitudeStr = "latitude"; - } - let position = [this.channel[longitudeStr], this.channel[latitudeStr]]; + let position = [this.channel[this.longitudeStr], this.channel[this.latitudeStr]]; this.infoBoxId = this.$refs.map.openInfoBox(position, this.$refs.infobox, [0, -50]) }) }, diff --git a/web_src/src/components/service/DeviceService.js b/web_src/src/components/service/DeviceService.js index fb663744..45d4ac23 100644 --- a/web_src/src/components/service/DeviceService.js +++ b/web_src/src/components/service/DeviceService.js @@ -133,6 +133,49 @@ class DeviceService{ if (typeof (callback) == "function") callback(res.data) }).catch(errorCallback); } + + getTree(deviceId, id, param3, param4) { + + } + + getTree(deviceId, parentId, onlyCatalog, callback, endCallback, errorCallback) { + let currentPage = 1; + let count = 100; + let catalogList = [] + this.getTreeIteration(deviceId, parentId, onlyCatalog, catalogList, currentPage, count, callback, endCallback, errorCallback) + } + + getTreeIteration(deviceId, parentId, onlyCatalog, catalogList, currentPage, count, callback, endCallback, errorCallback) { + this.getTreeInfo(deviceId, parentId, onlyCatalog, currentPage, count, (data) => { + if (data.list) { + if (typeof (callback) == "function") callback(data.list) + catalogList = catalogList.concat(data.list); + if (catalogList.length < data.total) { + currentPage ++ + this.getTreeIteration(deviceId, parentId, onlyCatalog, catalogList, currentPage, count, callback, endCallback, errorCallback) + }else { + if (typeof (endCallback) == "function") endCallback(catalogList) + } + } + }, errorCallback) + } + getTreeInfo(deviceId, parentId, onlyCatalog, currentPage, count, callback, errorCallback) { + if (onlyCatalog == null || typeof onlyCatalog === "undefined") { + onlyCatalog = false; + } + this.$axios({ + method: 'get', + url: `/api/device/query/tree/${deviceId}`, + params:{ + page: currentPage, + count: count, + parentId: parentId, + onlyCatalog: onlyCatalog + } + }).then((res) =>{ + if (typeof (callback) == "function") callback(res.data) + }).catch(errorCallback); + } } export default DeviceService; diff --git a/web_src/src/router/index.js b/web_src/src/router/index.js index 2f44fd85..2c9c6f37 100644 --- a/web_src/src/router/index.js +++ b/web_src/src/router/index.js @@ -59,7 +59,7 @@ export default new VueRouter({ component: streamProxyList, }, { - path: '/channelList/:deviceId/:parentChannelId/:count/:page', + path: '/channelList/:deviceId/:parentChannelId/', name: 'channelList', component: channelList, }, diff --git a/web_src/static/css/iconfont.css b/web_src/static/css/iconfont.css index 2a08b07f..a09b98e9 100644 --- a/web_src/static/css/iconfont.css +++ b/web_src/static/css/iconfont.css @@ -1,6 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 1291092 */ - src: url('iconfont.woff2?t=1650436696596') format('woff2'); + src: url('iconfont.woff2?t=1655453611360') format('woff2'), + url('iconfont.woff?t=1655453611360') format('woff'), + url('iconfont.ttf?t=1655453611360') format('truetype'); } .iconfont { @@ -11,6 +13,30 @@ -moz-osx-font-smoothing: grayscale; } +.icon-list:before { + content: "\e7de"; +} + +.icon-tree:before { + content: "\e7df"; +} + +.icon-shipin:before { + content: "\e7db"; +} + +.icon-shipin1:before { + content: "\e7dc"; +} + +.icon-shipin2:before { + content: "\e7dd"; +} + +.icon-LC_icon_gps_fill:before { + content: "\e7da"; +} + .icon-jiedianleizhukongzhongxin1:before { content: "\e9d0"; } diff --git a/web_src/static/css/iconfont.woff2 b/web_src/static/css/iconfont.woff2 index 7204137a..c2fdf694 100644 Binary files a/web_src/static/css/iconfont.woff2 and b/web_src/static/css/iconfont.woff2 differ