From 8aa0bdf539582b9d710503121d911bb166ca7c8e Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Wed, 6 Jul 2022 09:44:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/mysql.sql | 29 ++++++++---- sql/update.sql | 36 ++++++++++++-- .../iot/vmp/gb28181/bean/DeviceAlarm.java | 10 ++++ .../iot/vmp/gb28181/bean/DeviceChannel.java | 13 +++++ .../iot/vmp/gb28181/bean/GbStream.java | 15 +++--- .../iot/vmp/gb28181/bean/MobilePosition.java | 13 +++++ .../iot/vmp/gb28181/bean/ParentPlatform.java | 26 ++++++++++ .../request/impl/NotifyRequestProcessor.java | 4 ++ .../notify/cmd/AlarmNotifyMessageHandler.java | 4 ++ .../MobilePositionNotifyMessageHandler.java | 3 ++ .../MobilePositionResponseMessageHandler.java | 3 ++ .../iot/vmp/gb28181/utils/XmlUtil.java | 2 + .../vmp/media/zlm/ZLMHttpHookListener.java | 11 ++--- .../vmp/media/zlm/ZLMMediaListManager.java | 4 +- .../iot/vmp/media/zlm/dto/StreamPushItem.java | 47 ++++++++++++++++++- .../service/impl/RedisAlarmMsgListener.java | 1 + .../service/impl/StreamProxyServiceImpl.java | 5 +- .../service/impl/StreamPushServiceImpl.java | 7 +-- .../impl/StreamPushUploadFileHandler.java | 3 +- .../vmp/storager/dao/DeviceAlarmMapper.java | 4 +- .../vmp/storager/dao/DeviceChannelMapper.java | 22 +++++---- .../dao/DeviceMobilePositionMapper.java | 4 +- .../iot/vmp/storager/dao/GbStreamMapper.java | 8 ++-- .../storager/dao/ParentPlatformMapper.java | 10 ++-- .../impl/VideoManagerStorageImpl.java | 7 ++- .../iot/vmp/utils/SystemInfoUtils.java | 1 - .../gb28181/platform/PlatformController.java | 5 +- .../streamProxy/StreamProxyController.java | 3 ++ web_src/src/components/StreamProxyList.vue | 15 +++--- 29 files changed, 246 insertions(+), 69 deletions(-) diff --git a/sql/mysql.sql b/sql/mysql.sql index 83e8b874..ffe39c3f 100644 --- a/sql/mysql.sql +++ b/sql/mysql.sql @@ -50,7 +50,7 @@ CREATE TABLE `device` ( `treeType` varchar(50) COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `device_deviceId_uindex` (`deviceId`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -80,6 +80,7 @@ CREATE TABLE `device_alarm` ( `longitude` double DEFAULT NULL, `latitude` double DEFAULT NULL, `alarmType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `createTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; @@ -137,10 +138,11 @@ CREATE TABLE `device_channel` ( `longitudeWgs84` double DEFAULT NULL, `latitudeWgs84` double DEFAULT NULL, `businessGroupId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `gpsTime` varchar(50) 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=19317 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=19324 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -175,8 +177,9 @@ CREATE TABLE `device_mobile_position` ( `latitudeGcj02` double DEFAULT NULL, `longitudeWgs84` double DEFAULT NULL, `latitudeWgs84` double DEFAULT NULL, + `createTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1508 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=5649 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -206,11 +209,12 @@ CREATE TABLE `gb_stream` ( `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, + `createTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, + `gpsTime` varchar(50) COLLATE utf8mb4_general_ci 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; +) ENGINE=InnoDB AUTO_INCREMENT=301681 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -240,7 +244,7 @@ CREATE TABLE `log` ( `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=22051 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=29943 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -329,10 +333,12 @@ CREATE TABLE `parent_platform` ( `startOfflinePush` int DEFAULT '0', `administrativeDivision` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `catalogGroup` int DEFAULT '1', + `createTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, + `updateTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `parent_platform_id_uindex` (`id`) USING BTREE, UNIQUE KEY `parent_platform_pk` (`serverGBId`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -446,9 +452,10 @@ CREATE TABLE `stream_proxy` ( `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, + `updateTime` varchar(50) 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; +) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -474,10 +481,12 @@ CREATE TABLE `stream_push` ( `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, + `createTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, `aliveSecond` int DEFAULT NULL, `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `serverId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL, + `pushTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, + `updateTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `stream_push_pk` (`app`,`stream`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=305304 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; @@ -557,4 +566,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-07-04 1:07:19 +-- Dump completed on 2022-07-06 9:43:54 diff --git a/sql/update.sql b/sql/update.sql index 14d98c23..43413552 100644 --- a/sql/update.sql +++ b/sql/update.sql @@ -1,11 +1,13 @@ 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 @@ -16,15 +18,43 @@ alter table device_channel add latitudeWgs84 double default null; alter table device_channel add businessGroupId varchar(50) default null; +alter table device_channel + add gpsTime varchar(50) default null; -alter table device_mobile_position change cnLng longitudeGcj02 double default null; -alter table device_mobile_position change cnLat latitudeGcj02 double default null; +alter table device_mobile_position + change cnLng longitudeGcj02 double default null; +alter table device_mobile_position + change cnLat latitudeGcj02 double default null; alter table device_mobile_position add longitudeWgs84 double default null; alter table device_mobile_position add latitudeWgs84 double default null; -alter table device_mobile_position drop geodeticSystem; +alter table device_mobile_position + drop geodeticSystem; +alter table device_mobile_position + add createTime varchar(50) default null; + +alter table device_alarm + add createTime varchar(50) default null; + +alter table gb_stream + change createStamp createTime varchar(50) default null; + +alter table parent_platform + add createTime varchar(50) default null; +alter table parent_platform + add updateTime varchar(50) default null; + +alter table stream_proxy + add updateTime varchar(50) default null; + +alter table stream_push + add pushTime varchar(50) default null; +alter table stream_push + add updateTime varchar(50) default null; +alter table stream_push + change createStamp createTime varchar(50) default null; diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarm.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarm.java index 530bce2d..0f5f3922 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarm.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarm.java @@ -77,6 +77,8 @@ public class DeviceAlarm { */ private String alarmType; + private String createTime; + public String getId() { return id; @@ -157,4 +159,12 @@ public class DeviceAlarm { public void setChannelId(String channelId) { this.channelId = channelId; } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } } 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 16ead73d..0d986743 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 @@ -199,6 +199,11 @@ public class DeviceChannel { */ private String businessGroupId; + /** + * GPS的更新时间 + */ + private String gpsTime; + public int getId() { return id; } @@ -519,4 +524,12 @@ public class DeviceChannel { public void setBusinessGroupId(String businessGroupId) { this.businessGroupId = businessGroupId; } + + public String getGpsTime() { + return gpsTime; + } + + public void setGpsTime(String gpsTime) { + this.gpsTime = gpsTime; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java index 010e0009..f9efeee9 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java @@ -15,10 +15,8 @@ public class GbStream extends PlatformGbStream{ private double latitude; private String streamType; private boolean status; - /** - * GMT unix系统时间戳,单位秒 - */ - public Long createStamp; + + public String createTime; @Override public Integer getGbStreamId() { @@ -102,12 +100,11 @@ public class GbStream extends PlatformGbStream{ this.mediaServerId = mediaServerId; } - - public Long getCreateStamp() { - return createStamp; + public String getCreateTime() { + return createTime; } - public void setCreateStamp(Long createStamp) { - this.createStamp = createStamp; + public void setCreateTime(String createTime) { + this.createTime = createTime; } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/MobilePosition.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/MobilePosition.java index f9c20e50..19000930 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/MobilePosition.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/MobilePosition.java @@ -77,6 +77,11 @@ public class MobilePosition { */ private double latitudeWgs84; + /** + * 创建时间 + */ + private String createTime; + public String getDeviceId() { return deviceId; @@ -189,4 +194,12 @@ public class MobilePosition { public void setLatitudeWgs84(double latitudeWgs84) { this.latitudeWgs84 = latitudeWgs84; } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java index 7c23a2f8..4377282d 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java @@ -144,6 +144,16 @@ public class ParentPlatform { */ private String administrativeDivision; + /** + * 更新时间 + */ + private String updateTime; + + /** + * 创建时间 + */ + private String createTime; + public Integer getId() { return id; } @@ -368,4 +378,20 @@ public class ParentPlatform { public void setAdministrativeDivision(String administrativeDivision) { this.administrativeDivision = administrativeDivision; } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java index bfa5988d..376d74b0 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java @@ -140,6 +140,7 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements Element rootElement = getRootElement(evt); MobilePosition mobilePosition = new MobilePosition(); + mobilePosition.setCreateTime(DateUtil.getNow()); Element deviceIdElement = rootElement.element("DeviceID"); String channelId = deviceIdElement.getTextTrim().toString(); Device device = redisCatchStorage.getDevice(deviceId); @@ -205,6 +206,7 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84()); deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02()); deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02()); + deviceChannel.setGpsTime(mobilePosition.getTime()); storager.updateChannelPosition(deviceChannel); // 发送redis消息。 通知位置信息的变化 JSONObject jsonObject = new JSONObject(); @@ -273,6 +275,7 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements logger.info("[收到Notify-Alarm]:{}/{}", device.getDeviceId(), deviceAlarm.getChannelId()); if ("4".equals(deviceAlarm.getAlarmMethod())) { MobilePosition mobilePosition = new MobilePosition(); + mobilePosition.setCreateTime(DateUtil.getNow()); mobilePosition.setDeviceId(deviceAlarm.getDeviceId()); mobilePosition.setTime(deviceAlarm.getAlarmTime()); mobilePosition.setLongitude(deviceAlarm.getLongitude()); @@ -309,6 +312,7 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84()); deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02()); deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02()); + deviceChannel.setGpsTime(mobilePosition.getTime()); storager.updateChannelPosition(deviceChannel); } // TODO: 需要实现存储报警信息、报警分类 diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java index 08874b82..8dfd2331 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java @@ -81,6 +81,7 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme String channelId = deviceIdElement.getText().toString(); DeviceAlarm deviceAlarm = new DeviceAlarm(); + deviceAlarm.setCreateTime(DateUtil.getNow()); deviceAlarm.setDeviceId(device.getDeviceId()); deviceAlarm.setChannelId(channelId); deviceAlarm.setAlarmPriority(getText(rootElement, "AlarmPriority")); @@ -112,6 +113,7 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme if (!StringUtils.isEmpty(deviceAlarm.getAlarmMethod())) { if ( deviceAlarm.getAlarmMethod().contains(DeviceAlarmMethod.GPS.getVal() + "")) { MobilePosition mobilePosition = new MobilePosition(); + mobilePosition.setCreateTime(DateUtil.getNow()); mobilePosition.setDeviceId(deviceAlarm.getDeviceId()); mobilePosition.setTime(deviceAlarm.getAlarmTime()); mobilePosition.setLongitude(deviceAlarm.getLongitude()); @@ -148,6 +150,7 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84()); deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02()); deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02()); + deviceChannel.setGpsTime(mobilePosition.getTime()); storager.updateChannelPosition(deviceChannel); } } @@ -198,6 +201,7 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme DeviceAlarm deviceAlarm = new DeviceAlarm(); + deviceAlarm.setCreateTime(DateUtil.getNow()); deviceAlarm.setDeviceId(parentPlatform.getServerGBId()); deviceAlarm.setChannelId(channelId); deviceAlarm.setAlarmPriority(getText(rootElement, "AlarmPriority")); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java index 2ac3b836..aa91556f 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify. import com.genersoft.iot.vmp.gb28181.utils.Coordtransform; import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; import com.genersoft.iot.vmp.storager.IVideoManagerStorage; +import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.GpsUtil; import org.dom4j.DocumentException; import org.dom4j.Element; @@ -53,6 +54,7 @@ public class MobilePositionNotifyMessageHandler extends SIPRequestProcessorParen rootElement = getRootElement(evt, device.getCharset()); MobilePosition mobilePosition = new MobilePosition(); + mobilePosition.setCreateTime(DateUtil.getNow()); if (!StringUtils.isEmpty(device.getName())) { mobilePosition.setDeviceName(device.getName()); } @@ -108,6 +110,7 @@ public class MobilePositionNotifyMessageHandler extends SIPRequestProcessorParen deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84()); deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02()); deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02()); + deviceChannel.setGpsTime(mobilePosition.getTime()); storager.updateChannelPosition(deviceChannel); //回复 200 OK responseAck(evt, Response.OK); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java index a4aee9b2..e562fa45 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.respons import com.genersoft.iot.vmp.gb28181.utils.Coordtransform; import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; import com.genersoft.iot.vmp.storager.IVideoManagerStorage; +import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.GpsUtil; import org.dom4j.DocumentException; import org.dom4j.Element; @@ -53,6 +54,7 @@ public class MobilePositionResponseMessageHandler extends SIPRequestProcessorPar rootElement = getRootElement(evt, device.getCharset()); MobilePosition mobilePosition = new MobilePosition(); + mobilePosition.setCreateTime(DateUtil.getNow()); if (!StringUtils.isEmpty(device.getName())) { mobilePosition.setDeviceName(device.getName()); } @@ -108,6 +110,7 @@ public class MobilePositionResponseMessageHandler extends SIPRequestProcessorPar deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84()); deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02()); deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02()); + deviceChannel.setGpsTime(mobilePosition.getTime()); storager.updateChannelPosition(deviceChannel); //回复 200 OK responseAck(evt, Response.OK); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java index 0d34c00a..72206d87 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; +import com.genersoft.iot.vmp.utils.DateUtil; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; @@ -314,6 +315,7 @@ public class XmlUtil { } else { deviceChannel.setLatitude(0.00); } + deviceChannel.setGpsTime(DateUtil.getNow()); if (deviceChannel.getLongitude()*deviceChannel.getLatitude() > 0) { if ("WGS84".equals(device.getGeoCoordSys())) { deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude()); diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java index 4ea9cf14..7f6ea02c 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -339,9 +339,7 @@ public class ZLMHttpHookListener { @PostMapping(value = "/on_stream_changed", produces = "application/json;charset=UTF-8") public ResponseEntity onStreamChanged(@RequestBody MediaItem item){ - if (logger.isDebugEnabled()) { - logger.debug("[ ZLM HOOK ]on_stream_changed API调用,参数:" + JSONObject.toJSONString(item)); - } + logger.info("[ ZLM HOOK ]on_stream_changed API调用,参数:" + JSONObject.toJSONString(item)); String mediaServerId = item.getMediaServerId(); JSONObject json = (JSONObject) JSON.toJSON(item); ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, json); @@ -389,7 +387,6 @@ public class ZLMHttpHookListener { if (mediaServerItem != null){ if (regist) { - StreamPushItem streamPushItem = null; StreamInfo streamInfoByAppAndStream = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks); item.setStreamInfo(streamInfoByAppAndStream); @@ -455,10 +452,8 @@ public class ZLMHttpHookListener { @ResponseBody @PostMapping(value = "/on_stream_none_reader", produces = "application/json;charset=UTF-8") public ResponseEntity onStreamNoneReader(@RequestBody JSONObject json){ - - if (logger.isDebugEnabled()) { - logger.debug("[ ZLM HOOK ]on_stream_none_reader API调用,参数:" + json.toString()); - } + + logger.info("[ ZLM HOOK ]on_stream_none_reader API调用,参数:" + json.toString()); String mediaServerId = json.getString("mediaServerId"); String streamId = json.getString("stream"); String app = json.getString("app"); diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java index 959c06ec..35069aa6 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java @@ -12,6 +12,7 @@ import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper; import com.genersoft.iot.vmp.storager.dao.StreamPushMapper; +import com.genersoft.iot.vmp.utils.DateUtil; import org.checkerframework.checker.units.qual.C; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -159,7 +160,8 @@ public class ZLMMediaListManager { gbStreamMapper.update(transform); streamPushMapper.del(gbStreamList.get(0).getApp(), gbStreamList.get(0).getStream()); }else { - transform.setCreateStamp(System.currentTimeMillis()); + transform.setCreateTime(DateUtil.getNow()); + transform.setUpdateTime(DateUtil.getNow()); gbStreamMapper.add(transform); } if (transform != null) { diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java index ceb48b3f..91fa6198 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java @@ -1,7 +1,9 @@ package com.genersoft.iot.vmp.media.zlm.dto; import com.genersoft.iot.vmp.gb28181.bean.GbStream; +import com.genersoft.iot.vmp.utils.DateUtil; import org.jetbrains.annotations.NotNull; +import org.springframework.util.unit.DataUnit; import java.util.List; @@ -86,6 +88,21 @@ public class StreamPushItem extends GbStream implements Comparable" + @@ -58,6 +58,7 @@ public interface DeviceChannelMapper { ", longitudeWgs84=${longitudeWgs84}" + ", latitudeWgs84=${latitudeWgs84}" + ", businessGroupId=#{businessGroupId}" + + ", gpsTime=#{gpsTime}" + "WHERE deviceId='${deviceId}' AND channelId='${channelId}'"+ " "}) int update(DeviceChannel channel); @@ -147,7 +148,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, businessGroupId) " + + " longitudeWgs84, latitudeWgs84, createTime, updateTime, businessGroupId, gpsTime) " + "values " + " " + "('${item.channelId}', '${item.deviceId}', '${item.name}', '${item.manufacture}', '${item.model}', " + @@ -157,7 +158,7 @@ public interface DeviceChannelMapper { "'${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.businessGroupId}') " + + "'${item.businessGroupId}', '${item.gpsTime}') " + " " + "ON DUPLICATE KEY UPDATE " + "updateTime=VALUES(updateTime), " + @@ -189,7 +190,8 @@ public interface DeviceChannelMapper { "latitudeGcj02=VALUES(latitudeGcj02), " + "longitudeWgs84=VALUES(longitudeWgs84), " + "latitudeWgs84=VALUES(latitudeWgs84), " + - "businessGroupId=VALUES(businessGroupId) " + + "businessGroupId=VALUES(businessGroupId), " + + "gpsTime=VALUES(gpsTime)" + "") int batchAdd(List addChannels); @@ -228,6 +230,7 @@ public interface DeviceChannelMapper { ", longitudeWgs84=${item.longitudeWgs84}" + ", latitudeWgs84=${item.latitudeWgs84}" + ", businessGroupId=#{item.businessGroupId}" + + ", gpsTime=#{item.gpsTime}" + "WHERE deviceId='${item.deviceId}' AND channelId='${item.channelId}'"+ "" + ""}) @@ -281,10 +284,11 @@ public interface DeviceChannelMapper { "SET " + "latitude=${latitude}, " + "longitude=${longitude}, " + - "longitudeGcj02=${longitudeGcj02}," + - "latitudeGcj02=${latitudeGcj02}," + - "longitudeWgs84=${longitudeWgs84}," + - "latitudeWgs84=${latitudeWgs84} " + + "longitudeGcj02=${longitudeGcj02}, " + + "latitudeGcj02=${latitudeGcj02}, " + + "longitudeWgs84=${longitudeWgs84}, " + + "latitudeWgs84=${latitudeWgs84}, " + + "gpsTime='${gpsTime}' " + "WHERE deviceId=#{deviceId} " + " AND channelId=#{channelId}" + " "}) diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMobilePositionMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMobilePositionMapper.java index 088f5563..616b1b74 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMobilePositionMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMobilePositionMapper.java @@ -8,8 +8,8 @@ import org.apache.ibatis.annotations.*; @Mapper public interface DeviceMobilePositionMapper { - @Insert("INSERT INTO device_mobile_position (deviceId,channelId, deviceName, time, longitude, latitude, altitude, speed, direction, reportSource, longitudeGcj02, latitudeGcj02, longitudeWgs84, latitudeWgs84) " + - "VALUES ('${deviceId}','${channelId}', '${deviceName}', '${time}', ${longitude}, ${latitude}, ${altitude}, ${speed}, ${direction}, '${reportSource}', ${longitudeGcj02}, ${latitudeGcj02}, ${longitudeWgs84}, ${latitudeWgs84})") + @Insert("INSERT INTO device_mobile_position (deviceId,channelId, deviceName, time, longitude, latitude, altitude, speed, direction, reportSource, longitudeGcj02, latitudeGcj02, longitudeWgs84, latitudeWgs84, createTime) " + + "VALUES ('${deviceId}','${channelId}', '${deviceName}', '${time}', ${longitude}, ${latitude}, ${altitude}, ${speed}, ${direction}, '${reportSource}', ${longitudeGcj02}, ${latitudeGcj02}, ${longitudeWgs84}, ${latitudeWgs84}, '${createTime}')") int insertNewPosition(MobilePosition mobilePosition); @Select(value = {" ") @Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId") diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java index 2cbb426d..b57e103c 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java @@ -16,10 +16,10 @@ public interface ParentPlatformMapper { @Insert("INSERT INTO parent_platform (enable, name, serverGBId, serverGBDomain, serverIP, serverPort, deviceGBId, deviceIp, " + " devicePort, username, password, expires, keepTimeout, transport, characterSet, ptz, rtcp, " + - " status, shareAllLiveStream, startOfflinePush, catalogId, administrativeDivision, catalogGroup) " + + " status, shareAllLiveStream, startOfflinePush, catalogId, administrativeDivision, catalogGroup, createTime, updateTime) " + " VALUES (${enable}, '${name}', '${serverGBId}', '${serverGBDomain}', '${serverIP}', ${serverPort}, '${deviceGBId}', '${deviceIp}', " + " '${devicePort}', '${username}', '${password}', '${expires}', '${keepTimeout}', '${transport}', '${characterSet}', ${ptz}, ${rtcp}, " + - " ${status}, ${shareAllLiveStream}, ${startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup})") + " ${status}, ${shareAllLiveStream}, ${startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup}, #{createTime}, #{updateTime})") int addParentPlatform(ParentPlatform parentPlatform); @Update("UPDATE parent_platform " + @@ -45,6 +45,8 @@ public interface ParentPlatformMapper { "startOfflinePush=${startOfflinePush}, " + "catalogGroup=#{catalogGroup}, " + "administrativeDivision=#{administrativeDivision}, " + + "createTime=#{createTime}, " + + "updateTime=#{updateTime}, " + "catalogId=#{catalogId} " + "WHERE id=#{id}") int updateParentPlatform(ParentPlatform parentPlatform); @@ -86,10 +88,10 @@ public interface ParentPlatformMapper { @Update(value = {" "}) - int setDefaultCatalog(String platformId, String catalogId); + int setDefaultCatalog(String platformId, String catalogId, String updateTime); @Select("select 'channel' as name, count(pgc.platformId) count from platform_gb_channel pgc left join device_channel dc on dc.id = pgc.deviceChannelId where pgc.platformId=#{platformId} and dc.channelId =#{gbId} " + "union " + diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java index 14b2ce35..9a5be6e0 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java @@ -714,7 +714,6 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { streamProxyItem.setStatus(true); String now = DateUtil.getNow(); streamProxyItem.setCreateTime(now); - streamProxyItem.setCreateStamp(System.currentTimeMillis()); try { if (streamProxyMapper.add(streamProxyItem) > 0) { if (!StringUtils.isEmpty(streamProxyItem.getGbId())) { @@ -1009,7 +1008,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { @Override public int setDefaultCatalog(String platformId, String catalogId) { - return platformMapper.setDefaultCatalog(platformId, catalogId); + return platformMapper.setDefaultCatalog(platformId, catalogId, DateUtil.getNow()); } @Override @@ -1126,6 +1125,10 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { if (deviceChannel.getChannelId().equals(deviceChannel.getDeviceId())) { deviceChannel.setChannelId(null); } + if (deviceChannel.getGpsTime() == null) { + deviceChannel.setGpsTime(DateUtil.getNow()); + } + deviceChannelMapper.updatePosition(deviceChannel); } } diff --git a/src/main/java/com/genersoft/iot/vmp/utils/SystemInfoUtils.java b/src/main/java/com/genersoft/iot/vmp/utils/SystemInfoUtils.java index 2d588fad..d1073312 100644 --- a/src/main/java/com/genersoft/iot/vmp/utils/SystemInfoUtils.java +++ b/src/main/java/com/genersoft/iot/vmp/utils/SystemInfoUtils.java @@ -8,7 +8,6 @@ import oshi.hardware.NetworkIF; import oshi.software.os.OperatingSystem; import oshi.util.FormatUtil; -import java.text.DecimalFormat; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java index a3f1d6aa..44de6c9e 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java @@ -11,6 +11,7 @@ import com.genersoft.iot.vmp.gb28181.bean.SubscribeHolder; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorage; +import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.vmanager.bean.WVPResult; import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.UpdateChannelParam; @@ -169,6 +170,8 @@ public class PlatformController { wvpResult.setMsg("平台 " + parentPlatform.getServerGBId() + " 已存在"); return new ResponseEntity<>(wvpResult, HttpStatus.OK); } + parentPlatform.setCreateTime(DateUtil.getNow()); + parentPlatform.setUpdateTime(DateUtil.getNow()); boolean updateResult = storager.updateParentPlatform(parentPlatform); if (updateResult) { @@ -232,7 +235,7 @@ public class PlatformController { } parentPlatform.setCharacterSet(parentPlatform.getCharacterSet().toUpperCase()); ParentPlatform parentPlatformOld = storager.queryParentPlatByServerGBId(parentPlatform.getServerGBId()); - + parentPlatform.setUpdateTime(DateUtil.getNow()); boolean updateResult = storager.updateParentPlatform(parentPlatform); if (updateResult) { diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java index f2e48d87..f21bfd17 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java @@ -131,6 +131,9 @@ public class StreamProxyController { public Object start(String app, String stream){ logger.info("启用代理: " + app + "/" + stream); boolean result = streamProxyService.start(app, stream); + if (!result) { + logger.info("启用代理失败: " + app + "/" + stream); + } return result?"success":"fail"; } diff --git a/web_src/src/components/StreamProxyList.vue b/web_src/src/components/StreamProxyList.vue index 9f7ed61e..f99f8e99 100644 --- a/web_src/src/components/StreamProxyList.vue +++ b/web_src/src/components/StreamProxyList.vue @@ -87,7 +87,7 @@ 停用 - 启用 + 启用 删除 @@ -132,7 +132,7 @@ count:15, total:0, getListLoading: false, - startBtnLaoding: false + startBtnLoading: false }; }, computed: { @@ -169,7 +169,10 @@ } }).then(function (res) { that.total = res.data.total; - that.streamProxyList = res.data.list; + for (let i = 0; i < res.data.list.length; i++) { + res.data.list[i]["startBtnLoading"] = false; + } + that.streamProxyList = res.data.list; that.getListLoading = false; }).catch(function (error) { console.log(error); @@ -263,7 +266,7 @@ start: function(row){ let that = this; this.getListLoading = true; - this.startBtnLaoding = true; + this.$set(row, 'startBtnLoading', true) this.$axios({ method: 'get', url:`/api/proxy/start`, @@ -273,7 +276,7 @@ } }).then(function (res) { that.getListLoading = false; - that.startBtnLaoding = false; + that.$set(row, 'startBtnLoading', false) if (res.data == "success"){ that.initData() }else { @@ -287,7 +290,7 @@ }).catch(function (error) { console.log(error); that.getListLoading = false; - that.startBtnLaoding = false; + that.$set(row, 'startBtnLoading', false) }); }, stop: function(row){