From 8aa0bdf539582b9d710503121d911bb166ca7c8e Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 06 七月 2022 09:44:37 +0800
Subject: [PATCH] 数据库优化

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java |    3 
 src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java                                                            |    7 
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java     |    3 
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java              |    4 
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/MobilePosition.java                                                                   |   13 ++
 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMobilePositionMapper.java                                                       |    4 
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java                                                         |    7 
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java                                                                    |   13 ++
 sql/mysql.sql                                                                                                                          |   29 +++-
 src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java                                                      |    3 
 src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamPushItem.java                                                                  |   47 +++++++
 src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java                                                                         |    2 
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java                                                                   |   26 ++++
 web_src/src/components/StreamProxyList.vue                                                                                             |   15 +-
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarm.java                                                                      |   10 +
 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceAlarmMapper.java                                                                |    4 
 src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java                                                             |   10 +
 src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java                                                    |    3 
 src/main/java/com/genersoft/iot/vmp/service/impl/RedisAlarmMsgListener.java                                                            |    1 
 src/main/java/com/genersoft/iot/vmp/utils/SystemInfoUtils.java                                                                         |    1 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java                                                  |    5 
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java                                                                 |   11 -
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbStream.java                                                                         |   15 +-
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java                                                                 |    4 
 src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java                                                                   |    8 
 sql/update.sql                                                                                                                         |   36 +++++
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java                                    |    4 
 src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java                                                           |    5 
 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java                                                              |   22 ++-
 29 files changed, 246 insertions(+), 69 deletions(-)

diff --git a/sql/mysql.sql b/sql/mysql.sql
index 83e8b87..ffe39c3 100644
--- a/sql/mysql.sql
+++ b/sql/mysql.sql
@@ -50,7 +50,7 @@
                           `treeType` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
                           PRIMARY KEY (`id`) USING BTREE,
                           UNIQUE KEY `device_deviceId_uindex` (`deviceId`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=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 @@
                                 `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 @@
                                   `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 @@
                                           `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 @@
                              `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 @@
                        `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 @@
                                    `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 @@
                                 `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 @@
                                `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 @@
 /*!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 14d98c2..4341355 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 @@
     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 530bce2..0f5f392 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 @@
 	 */
 	private String alarmType;
 
+	private String createTime;
+
 
 	public String getId() {
 		return id;
@@ -157,4 +159,12 @@
 	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 16ead73..0d98674 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 @@
 	 */
 	private String businessGroupId;
 
+	/**
+	 * GPS鐨勬洿鏂版椂闂�
+	 */
+	private String gpsTime;
+
 	public int getId() {
 		return id;
 	}
@@ -519,4 +524,12 @@
 	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 010e000..f9efeee 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 @@
     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 @@
         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 f9c20e5..1900093 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 @@
      */
     private double latitudeWgs84;
 
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private String createTime;
+
 
     public String getDeviceId() {
         return deviceId;
@@ -189,4 +194,12 @@
     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 7c23a2f..4377282 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 @@
      */
     private String administrativeDivision;
 
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    private String updateTime;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private String createTime;
+
     public Integer getId() {
         return id;
     }
@@ -368,4 +378,20 @@
     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 bfa5988..376d74b 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 @@
 			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 @@
 			deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
 			deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
 			deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
+			deviceChannel.setGpsTime(mobilePosition.getTime());
 			storager.updateChannelPosition(deviceChannel);
 			// 鍙戦�乺edis娑堟伅銆� 閫氱煡浣嶇疆淇℃伅鐨勫彉鍖�
 			JSONObject jsonObject = new JSONObject();
@@ -273,6 +275,7 @@
 			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 @@
 				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 08874b8..8dfd233 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 @@
         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 @@
         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 @@
                 deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
                 deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
                 deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
+                deviceChannel.setGpsTime(mobilePosition.getTime());
                 storager.updateChannelPosition(deviceChannel);
             }
         }
@@ -198,6 +201,7 @@
 
 
         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 2ac3b83..aa91556 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.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 @@
             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 @@
             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 a4aee9b..e562fa4 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.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 @@
             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 @@
             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 0d34c00..72206d8 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.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 @@
         } 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 4ea9cf1..7f6ea02 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 @@
 	@PostMapping(value = "/on_stream_changed", produces = "application/json;charset=UTF-8")
 	public ResponseEntity<String> 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 @@
 
 					if (mediaServerItem != null){
 						if (regist) {
-							StreamPushItem streamPushItem = null;
 							StreamInfo streamInfoByAppAndStream = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
 							item.setStreamInfo(streamInfoByAppAndStream);
 
@@ -455,10 +452,8 @@
 	@ResponseBody
 	@PostMapping(value = "/on_stream_none_reader", produces = "application/json;charset=UTF-8")
 	public ResponseEntity<String> 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 959c06e..35069aa 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.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 @@
                 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 ceb48b3..91fa619 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 @@
      */
     private String serverId;
 
+    /**
+     * 鎺ㄦ祦鏃堕棿
+     */
+    private String pushTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    private String updateTime;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private String createTime;
+
     public String getVhost() {
         return vhost;
     }
@@ -97,7 +114,8 @@
 
     @Override
     public int compareTo(@NotNull StreamPushItem streamPushItem) {
-        return Long.valueOf(super.createStamp - streamPushItem.getCreateStamp().intValue()).intValue();
+        return Long.valueOf(DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(super.createTime)
+                - DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(streamPushItem.getCreateTime())).intValue();
     }
 
     public static class MediaSchema {
@@ -232,5 +250,32 @@
     public void setServerId(String serverId) {
         this.serverId = serverId;
     }
+
+
+    public String getPushTime() {
+        return pushTime;
+    }
+
+    public void setPushTime(String pushTime) {
+        this.pushTime = pushTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    @Override
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
 }
 
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/RedisAlarmMsgListener.java b/src/main/java/com/genersoft/iot/vmp/service/impl/RedisAlarmMsgListener.java
index ef5932d..4d1948a 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/RedisAlarmMsgListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/RedisAlarmMsgListener.java
@@ -41,6 +41,7 @@
         ParentPlatform platform = storage.queryParentPlatByServerGBId(gbId);
 
         DeviceAlarm deviceAlarm = new DeviceAlarm();
+        deviceAlarm.setCreateTime(DateUtil.getNow());
         deviceAlarm.setChannelId(gbId);
         deviceAlarm.setAlarmDescription(alarmChannelMessage.getAlarmDescription());
         deviceAlarm.setAlarmMethod("" + alarmChannelMessage.getAlarmSn());
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
index 2fa043a..67dfb6f 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
@@ -230,11 +230,12 @@
     public boolean start(String app, String stream) {
         boolean result = false;
         StreamProxyItem streamProxy = videoManagerStorager.queryStreamProxy(app, stream);
-        if (!streamProxy.isEnable() &&  streamProxy != null) {
+        if (!streamProxy.isEnable() ) {
             JSONObject jsonObject = addStreamProxyToZlm(streamProxy);
             if (jsonObject == null) {
                 return false;
             }
+            System.out.println(jsonObject);
             if (jsonObject.getInteger("code") == 0) {
                 result = true;
                 streamProxy.setEnable(true);
@@ -250,7 +251,7 @@
         StreamProxyItem streamProxyDto = videoManagerStorager.queryStreamProxy(app, stream);
         if (streamProxyDto != null && streamProxyDto.isEnable()) {
             JSONObject jsonObject = removeStreamProxyFromZlm(streamProxyDto);
-            if (jsonObject.getInteger("code") == 0) {
+            if (jsonObject != null && jsonObject.getInteger("code") == 0) {
                 streamProxyDto.setEnable(false);
                 result = videoManagerStorager.updateStreamProxy(streamProxyDto);
             }
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
index 1e00faa..a8ef108 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -15,6 +15,7 @@
 import com.genersoft.iot.vmp.service.IStreamPushService;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.dao.*;
+import com.genersoft.iot.vmp.utils.DateUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.slf4j.Logger;
@@ -102,7 +103,7 @@
         streamPushItem.setOriginType(item.getOriginType());
         streamPushItem.setOriginTypeStr(item.getOriginTypeStr());
         streamPushItem.setOriginUrl(item.getOriginUrl());
-        streamPushItem.setCreateStamp(item.getCreateStamp() * 1000);
+        streamPushItem.setCreateTime(DateUtil.getNow());
         streamPushItem.setAliveSecond(item.getAliveSecond());
         streamPushItem.setStatus(true);
         streamPushItem.setStreamType("push");
@@ -127,7 +128,7 @@
     public boolean saveToGB(GbStream stream) {
         stream.setStreamType("push");
         stream.setStatus(true);
-        stream.setCreateStamp(System.currentTimeMillis());
+        stream.setCreateTime(DateUtil.getNow());
         int add = gbStreamMapper.add(stream);
 
         // 鏌ユ壘寮�鍚簡鍏ㄩ儴鐩存挱娴佸叡浜殑涓婄骇骞冲彴
@@ -317,7 +318,7 @@
             streamPushItem.setStreamType("push");
             streamPushItem.setStatus(true);
             streamPushItem.setGbId("34020000004111" + gbId);
-            streamPushItem.setCreateStamp(System.currentTimeMillis());
+            streamPushItem.setCreateTime(DateUtil.getNow());
             gbId ++;
         }
         int  limitCount = 30;
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java
index 87e084b..45cbcf6 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java
@@ -4,6 +4,7 @@
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
 import com.genersoft.iot.vmp.service.IStreamPushService;
+import com.genersoft.iot.vmp.utils.DateUtil;
 import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
@@ -94,7 +95,7 @@
         streamPushItem.setGbId(streamPushExcelDto.getGbId());
         streamPushItem.setStatus(false);
         streamPushItem.setStreamType("push");
-        streamPushItem.setCreateStamp(System.currentTimeMillis());
+        streamPushItem.setCreateTime(DateUtil.getNow());
         streamPushItem.setMediaServerId(defaultMediaServerId);
         streamPushItem.setName(streamPushExcelDto.getName());
         streamPushItem.setOriginType(2);
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceAlarmMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceAlarmMapper.java
index 7e4a544..bc651ce 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceAlarmMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceAlarmMapper.java
@@ -15,8 +15,8 @@
 @Repository
 public interface DeviceAlarmMapper {
 
-    @Insert("INSERT INTO device_alarm (deviceId, channelId, alarmPriority, alarmMethod, alarmTime, alarmDescription, longitude, latitude, alarmType ) " +
-            "VALUES ('${deviceId}', '${channelId}', '${alarmPriority}', '${alarmMethod}', '${alarmTime}', '${alarmDescription}', ${longitude}, ${latitude}, '${alarmType}')")
+    @Insert("INSERT INTO device_alarm (deviceId, channelId, alarmPriority, alarmMethod, alarmTime, alarmDescription, longitude, latitude, alarmType , createTime ) " +
+            "VALUES ('${deviceId}', '${channelId}', '${alarmPriority}', '${alarmMethod}', '${alarmTime}', '${alarmDescription}', ${longitude}, ${latitude}, '${alarmType}', '${createTime}')")
     int add(DeviceAlarm alarm);
 
 
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 725d8e3..ffa5cf1 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
@@ -19,11 +19,11 @@
     @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, businessGroupId) " +
+            "longitudeWgs84, latitudeWgs84, createTime, updateTime, businessGroupId, gpsTime) " +
             "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}', '${businessGroupId}')")
+            "${latitudeGcj02}, ${longitudeWgs84}, ${latitudeWgs84},'${createTime}', '${updateTime}', '${businessGroupId}', '${gpsTime}')")
     int add(DeviceChannel channel);
 
     @Update(value = {" <script>" +
@@ -58,6 +58,7 @@
             "<if test='longitudeWgs84 != null'>, longitudeWgs84=${longitudeWgs84}</if>" +
             "<if test='latitudeWgs84 != null'>, latitudeWgs84=${latitudeWgs84}</if>" +
             "<if test='businessGroupId != null'>, businessGroupId=#{businessGroupId}</if>" +
+            "<if test='gpsTime != null'>, gpsTime=#{gpsTime}</if>" +
             "WHERE deviceId='${deviceId}' AND channelId='${channelId}'"+
             " </script>"})
     int update(DeviceChannel channel);
@@ -147,7 +148,7 @@
             "(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 " +
             "<foreach collection='addChannels' index='index' item='item' separator=','> " +
             "('${item.channelId}', '${item.deviceId}', '${item.name}', '${item.manufacture}', '${item.model}', " +
@@ -157,7 +158,7 @@
             "'${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}') " +
             "</foreach> " +
             "ON DUPLICATE KEY UPDATE " +
             "updateTime=VALUES(updateTime), " +
@@ -189,7 +190,8 @@
             "latitudeGcj02=VALUES(latitudeGcj02), " +
             "longitudeWgs84=VALUES(longitudeWgs84), " +
             "latitudeWgs84=VALUES(latitudeWgs84), " +
-            "businessGroupId=VALUES(businessGroupId) " +
+            "businessGroupId=VALUES(businessGroupId), " +
+            "gpsTime=VALUES(gpsTime)" +
             "</script>")
     int batchAdd(List<DeviceChannel> addChannels);
 
@@ -228,6 +230,7 @@
             "<if test='item.longitudeWgs84 != null'>, longitudeWgs84=${item.longitudeWgs84}</if>" +
             "<if test='item.latitudeWgs84 != null'>, latitudeWgs84=${item.latitudeWgs84}</if>" +
             "<if test='item.businessGroupId != null'>, businessGroupId=#{item.businessGroupId}</if>" +
+            "<if test='item.gpsTime != null'>, gpsTime=#{item.gpsTime}</if>" +
             "WHERE deviceId='${item.deviceId}' AND channelId='${item.channelId}'"+
             "</foreach>" +
             "</script>"})
@@ -281,10 +284,11 @@
             "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} " +
             " <if test='channelId != null' >  AND channelId=#{channelId}</if>" +
             " </script>"})
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 088f556..616b1b7 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 @@
 @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 = {" <script>" +
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
index 9ac90bb..fa8381c 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
@@ -15,10 +15,10 @@
 public interface GbStreamMapper {
 
     @Insert("REPLACE INTO gb_stream (app, stream, gbId, name, " +
-            "longitude, latitude, streamType, mediaServerId, status, createStamp) VALUES" +
+            "longitude, latitude, streamType, mediaServerId, status, createTime) VALUES" +
             "('${app}', '${stream}', '${gbId}', '${name}', " +
             "'${longitude}', '${latitude}', '${streamType}', " +
-            "'${mediaServerId}', ${status}, ${createStamp})")
+            "'${mediaServerId}', ${status}, '${createTime}')")
     @Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId")
     int add(GbStream gbStream);
 
@@ -120,12 +120,12 @@
     @Insert("<script> " +
             "INSERT IGNORE into gb_stream " +
             "(app, stream, gbId, name, " +
-            "longitude, latitude, streamType, mediaServerId, status, createStamp)" +
+            "longitude, latitude, streamType, mediaServerId, status, createTime)" +
             "values " +
             "<foreach collection='subList' index='index' item='item' separator=','> " +
             "('${item.app}', '${item.stream}', '${item.gbId}', '${item.name}', " +
             "'${item.longitude}', '${item.latitude}', '${item.streamType}', " +
-            "'${item.mediaServerId}', ${item.status}, ${item.createStamp}) "+
+            "'${item.mediaServerId}', ${item.status}, '${item.createTime}') "+
             "</foreach> " +
             "</script>")
     @Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId")
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
index 2cbb426..b57e103 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
@@ -16,10 +16,10 @@
 
     @Insert("INSERT INTO parent_platform (enable, name, serverGBId, serverGBDomain, serverIP, serverPort, deviceGBId, deviceIp,  " +
             "            devicePort, username, password, expires, keepTimeout, transport, characterSet, ptz, rtcp, " +
-            "            status, shareAllLiveStream, startOfflinePush, catalogId, administrativeDivision, catalogGroup) " +
+            "            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 @@
             "startOfflinePush=${startOfflinePush}, " +
             "catalogGroup=#{catalogGroup}, " +
             "administrativeDivision=#{administrativeDivision}, " +
+            "createTime=#{createTime}, " +
+            "updateTime=#{updateTime}, " +
             "catalogId=#{catalogId} " +
             "WHERE id=#{id}")
     int updateParentPlatform(ParentPlatform parentPlatform);
@@ -86,10 +88,10 @@
 
     @Update(value = {" <script>" +
             "UPDATE parent_platform " +
-            "SET catalogId=#{catalogId}" +
+            "SET catalogId=#{catalogId}, updateTime=#{updateTime}" +
             "WHERE serverGBId=#{platformId}"+
             "</script>"})
-    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 14b2ce3..9a5be6e 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 @@
 		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 @@
 
 	@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 @@
 		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 2d588fa..d107331 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.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 a3f1d6a..44de6c9 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.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 @@
             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 @@
         }
         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 f2e48d8..f21bfd1 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 Object start(String app, String stream){
         logger.info("鍚敤浠g悊锛� " + app + "/" + stream);
         boolean result = streamProxyService.start(app, stream);
+        if (!result) {
+            logger.info("鍚敤浠g悊澶辫触锛� " + app + "/" + stream);
+        }
         return result?"success":"fail";
     }
 
diff --git a/web_src/src/components/StreamProxyList.vue b/web_src/src/components/StreamProxyList.vue
index 9f7ed61..f99f8e9 100644
--- a/web_src/src/components/StreamProxyList.vue
+++ b/web_src/src/components/StreamProxyList.vue
@@ -87,7 +87,7 @@
           <el-divider direction="vertical"></el-divider>
           <el-button size="medium" icon="el-icon-switch-button" type="text" v-if="scope.row.enable" @click="stop(scope.row)">鍋滅敤</el-button>
           <el-divider direction="vertical"></el-divider>
-          <el-button size="medium" icon="el-icon-check" type="text" :loading="startBtnLaoding" v-if="!scope.row.enable" @click="start(scope.row)">鍚敤</el-button>
+          <el-button size="medium" icon="el-icon-check" type="text" :loading="scope.row.startBtnLoading" v-if="!scope.row.enable" @click="start(scope.row)">鍚敤</el-button>
           <el-divider v-if="!scope.row.enable" direction="vertical"></el-divider>
           <el-button size="medium" icon="el-icon-delete" type="text" style="color: #f56c6c" @click="deleteStreamProxy(scope.row)">鍒犻櫎</el-button>
         </template>
@@ -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){

--
Gitblit v1.8.0