diff --git a/sql/update.sql b/sql/update.sql
index 0abc5446..f78744d7 100644
--- a/sql/update.sql
+++ b/sql/update.sql
@@ -1,4 +1,16 @@
alter table stream_push
add serverId varchar(50) not null;
+alter table device
+ add geoCoordSys varchar(50) not null;
+update device set device.geoCoordSys='WGS84';
+alter table device_channel
+ add longitudeGcj02 double default null;
+alter table device_channel
+ add latitudeGcj02 double default null;
+alter table device_channel
+ add longitudeWgs84 double default null;
+alter table device_channel
+ add latitudeWgs84 double default null;
+
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
index e8eab8c2..d6befca5 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
@@ -1,6 +1,10 @@
package com.genersoft.iot.vmp.gb28181.bean;
+/**
+ * 国标设备/平台
+ * @author lin
+ */
public class Device {
/**
@@ -129,6 +133,11 @@ public class Device {
*/
private boolean ssrcCheck;
+ /**
+ * 地理坐标系, 目前支持 WGS84,GCJ02 TODO CGCS2000
+ */
+ private String geoCoordSys;
+
public String getDeviceId() {
return deviceId;
@@ -321,4 +330,12 @@ public class Device {
public void setSsrcCheck(boolean ssrcCheck) {
this.ssrcCheck = ssrcCheck;
}
+
+ public String getGeoCoordSys() {
+ return geoCoordSys;
+ }
+
+ public void setGeoCoordSys(String geoCoordSys) {
+ this.geoCoordSys = geoCoordSys;
+ }
}
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 95576f38..63452775 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
@@ -154,6 +154,26 @@ public class DeviceChannel {
*/
private double latitude;
+ /**
+ * 经度 GCJ02
+ */
+ private double longitudeGcj02;
+
+ /**
+ * 纬度 GCJ02
+ */
+ private double latitudeGcj02;
+
+ /**
+ * 经度 WGS84
+ */
+ private double longitudeWgs84;
+
+ /**
+ * 纬度 WGS84
+ */
+ private double latitudeWgs84;
+
/**
* 子设备数
*/
@@ -407,6 +427,38 @@ public class DeviceChannel {
this.latitude = latitude;
}
+ public double getLongitudeGcj02() {
+ return longitudeGcj02;
+ }
+
+ public void setLongitudeGcj02(double longitudeGcj02) {
+ this.longitudeGcj02 = longitudeGcj02;
+ }
+
+ public double getLatitudeGcj02() {
+ return latitudeGcj02;
+ }
+
+ public void setLatitudeGcj02(double latitudeGcj02) {
+ this.latitudeGcj02 = latitudeGcj02;
+ }
+
+ public double getLongitudeWgs84() {
+ return longitudeWgs84;
+ }
+
+ public void setLongitudeWgs84(double longitudeWgs84) {
+ this.longitudeWgs84 = longitudeWgs84;
+ }
+
+ public double getLatitudeWgs84() {
+ return latitudeWgs84;
+ }
+
+ public void setLatitudeWgs84(double latitudeWgs84) {
+ this.latitudeWgs84 = latitudeWgs84;
+ }
+
public int getSubCount() {
return subCount;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
index be67e7c6..2e70ea75 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -277,8 +277,8 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
catalogXml.append("" + channel.getOwner() + "\r\n");
catalogXml.append("" + channel.getCivilCode() + "\r\n");
catalogXml.append("
" + channel.getAddress() + "\r\n");
- catalogXml.append("" + channel.getLongitude() + "\r\n");
- catalogXml.append("" + channel.getLatitude() + "\r\n");
+ catalogXml.append("" + channel.getLongitudeWgs84() + "\r\n");
+ catalogXml.append("" + channel.getLatitudeWgs84() + "\r\n");
catalogXml.append("" + channel.getIpAddress() + "\r\n");
catalogXml.append("" + channel.getPort() + "\r\n");
catalogXml.append("\r\n");
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorAbstract.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorAbstract.java
deleted file mode 100644
index dd098f7b..00000000
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorAbstract.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.genersoft.iot.vmp.gb28181.transmit.event.request;
-
-import gov.nist.javax.sip.SipProviderImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-
-/**
- * @description:处理接收IPCamera发来的SIP协议请求消息
- * @author: songww
- * @date: 2020年5月3日 下午4:42:22
- */
-public abstract class SIPRequestProcessorAbstract {
-
-
- @Autowired
- @Qualifier(value="tcpSipProvider")
- private SipProviderImpl tcpSipProvider;
-
- @Autowired
- @Qualifier(value="udpSipProvider")
- private SipProviderImpl udpSipProvider;
-
-}
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 38a72465..7e666581 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
@@ -312,7 +312,7 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements
}else {
event = eventElement.getText().toUpperCase();
}
- DeviceChannel channel = XmlUtil.channelContentHander(itemDevice);
+ DeviceChannel channel = XmlUtil.channelContentHander(itemDevice, device);
channel.setDeviceId(device.getDeviceId());
logger.info("[收到 目录订阅]:{}/{}", device.getDeviceId(), channel.getChannelId());
switch (event) {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
index e9143392..c2226a18 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
@@ -140,6 +140,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
device = new Device();
device.setStreamMode("UDP");
device.setCharset("GB2312");
+ device.setGeoCoordSys("WGS84");
device.setDeviceId(deviceId);
}
device.setIp(received);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
index 4d618d10..d9d94797 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
@@ -82,7 +82,6 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme
@Override
public void process(RequestEvent evt) {
Request request = evt.getRequest();
- System.out.println("收到订阅");
try {
Element rootElement = getRootElement(evt);
String cmd = XmlUtil.getText(rootElement, "CmdType");
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
index 0fe317ae..c4e88c57 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
@@ -129,7 +129,7 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
// if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Longitude"))) {//如果包含位置信息,就更新一下位置
// processNotifyMobilePosition(evt, itemDevice);
// }
- DeviceChannel deviceChannel = XmlUtil.channelContentHander(itemDevice);
+ DeviceChannel deviceChannel = XmlUtil.channelContentHander(itemDevice, device);
deviceChannel.setDeviceId(take.getDevice().getDeviceId());
channelList.add(deviceChannel);
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 2caab0f8..c44001a4 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
@@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.gb28181.utils;
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 org.dom4j.Attribute;
import org.dom4j.Document;
@@ -180,7 +181,7 @@ public class XmlUtil {
return xml.getRootElement();
}
- public static DeviceChannel channelContentHander(Element itemDevice){
+ public static DeviceChannel channelContentHander(Element itemDevice, Device device){
Element channdelNameElement = itemDevice.element("Name");
String channelName = channdelNameElement != null ? channdelNameElement.getTextTrim().toString() : "";
Element statusElement = itemDevice.element("Status");
@@ -308,6 +309,31 @@ public class XmlUtil {
} else {
deviceChannel.setLatitude(0.00);
}
+ if (deviceChannel.getLongitude()*deviceChannel.getLatitude() > 0) {
+ if ("WGS84".equals(device.getGeoCoordSys())) {
+ deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude());
+ Double[] position = Coordtransform.WGS84ToGCJ02(deviceChannel.getLongitude(), deviceChannel.getLatitude());
+ deviceChannel.setLongitudeGcj02(position[0]);
+ deviceChannel.setLatitudeGcj02(position[1]);
+ }else if ("GCJ02".equals(device.getGeoCoordSys())) {
+ deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude());
+ Double[] position = Coordtransform.GCJ02ToWGS84(deviceChannel.getLongitude(), deviceChannel.getLatitude());
+ deviceChannel.setLongitudeWgs84(position[0]);
+ deviceChannel.setLatitudeWgs84(position[1]);
+ }else {
+ deviceChannel.setLongitudeGcj02(0.00);
+ deviceChannel.setLatitudeGcj02(0.00);
+ deviceChannel.setLongitudeWgs84(0.00);
+ deviceChannel.setLatitudeWgs84(0.00);
+ }
+ }else {
+ deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude());
+ deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude());
+ }
if (XmlUtil.getText(itemDevice, "PTZType") == null || "".equals(XmlUtil.getText(itemDevice, "PTZType"))) {
//兼容INFO中的信息
Element info = itemDevice.element("Info");
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
index 3359b00f..ec30cd48 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
@@ -2,17 +2,21 @@ package com.genersoft.iot.vmp.service.impl;
import com.genersoft.iot.vmp.conf.DynamicTask;
import com.genersoft.iot.vmp.gb28181.bean.Device;
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
import com.genersoft.iot.vmp.gb28181.task.ISubscribeTask;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd.CatalogResponseMessageHandler;
+import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.gb28181.task.impl.CatalogSubscribeTask;
import com.genersoft.iot.vmp.gb28181.task.impl.MobilePositionSubscribeTask;
import com.genersoft.iot.vmp.gb28181.bean.SyncStatus;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
import com.genersoft.iot.vmp.utils.DateUtil;
import org.slf4j.Logger;
@@ -50,6 +54,12 @@ public class DeviceServiceImpl implements IDeviceService {
@Autowired
private DeviceMapper deviceMapper;
+ @Autowired
+ private DeviceChannelMapper deviceChannelMapper;
+
+ @Autowired
+ private IVideoManagerStorage storage;
+
@Autowired
private ISIPCommander commander;
@@ -292,6 +302,10 @@ public class DeviceServiceImpl implements IDeviceService {
removeMobilePositionSubscribe(deviceInStore);
}
}
+ // 坐标系变化,需要重新计算GCJ02坐标和WGS84坐标
+ if (!deviceInStore.getGeoCoordSys().equals(device.getGeoCoordSys())) {
+ updateDeviceChannelGeoCoordSys(device);
+ }
String now = DateUtil.getNow();
device.setUpdateTime(now);
@@ -299,6 +313,32 @@ public class DeviceServiceImpl implements IDeviceService {
device.setUpdateTime(DateUtil.getNow());
if (deviceMapper.update(device) > 0) {
redisCatchStorage.updateDevice(device);
+
}
}
+
+ /**
+ * 更新通道坐标系
+ */
+ private void updateDeviceChannelGeoCoordSys(Device device) {
+ List deviceChannels = deviceChannelMapper.getAllChannelWithCoordinate(device.getDeviceId());
+ if (deviceChannels.size() > 0) {
+ for (DeviceChannel deviceChannel : deviceChannels) {
+ if ("WGS84".equals(device.getGeoCoordSys())) {
+ deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude());
+ Double[] position = Coordtransform.WGS84ToGCJ02(deviceChannel.getLongitude(), deviceChannel.getLatitude());
+ deviceChannel.setLongitudeGcj02(position[0]);
+ deviceChannel.setLatitudeGcj02(position[1]);
+ }else if ("GCJ02".equals(device.getGeoCoordSys())) {
+ deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude());
+ Double[] position = Coordtransform.GCJ02ToWGS84(deviceChannel.getLongitude(), deviceChannel.getLatitude());
+ deviceChannel.setLongitudeWgs84(position[0]);
+ deviceChannel.setLatitudeWgs84(position[1]);
+ }
+ }
+ }
+ storage.updateChannels(device.getDeviceId(), deviceChannels);
+ }
}
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 6db08d1b..5c46fb92 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
@@ -17,10 +17,10 @@ public interface DeviceChannelMapper {
@Insert("INSERT INTO device_channel (channelId, deviceId, name, manufacture, model, owner, civilCode, block, " +
"address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " +
- "ipAddress, port, password, PTZType, status, streamId, longitude, latitude, createTime, updateTime) " +
+ "ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, longitudeWgs84, latitudeWgs84, createTime, updateTime) " +
"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},'${createTime}', '${updateTime}')")
+ "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status}, '${streamId}', ${longitude}, ${latitude}, ${longitudeGcj02}, ${latitudeGcj02}, ${longitudeWgs84}, ${latitudeWgs84},'${createTime}', '${updateTime}')")
int add(DeviceChannel channel);
@Update(value = {" "})
int update(DeviceChannel channel);
@@ -138,7 +142,8 @@ public interface DeviceChannelMapper {
"insert into device_channel " +
"(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, createTime, updateTime) " +
+ " ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, " +
+ " longitudeWgs84, latitudeWgs84, createTime, updateTime) " +
"values " +
" " +
"('${item.channelId}', '${item.deviceId}', '${item.name}', '${item.manufacture}', '${item.model}', " +
@@ -146,7 +151,8 @@ public interface DeviceChannelMapper {
"'${item.address}', ${item.parental}, '${item.parentId}', ${item.safetyWay}, ${item.registerWay}, " +
"'${item.certNum}', ${item.certifiable}, ${item.errCode}, '${item.secrecy}', " +
"'${item.ipAddress}', ${item.port}, '${item.password}', ${item.PTZType}, ${item.status}, " +
- "'${item.streamId}', ${item.longitude}, ${item.latitude},'${item.createTime}', '${item.updateTime}')" +
+ "'${item.streamId}', ${item.longitude}, ${item.latitude},${item.longitudeGcj02}, " +
+ "${item.latitudeGcj02},${item.longitudeWgs84}, ${item.latitudeWgs84},'${item.createTime}', '${item.updateTime}')" +
" " +
"ON DUPLICATE KEY UPDATE " +
"updateTime=VALUES(updateTime), " +
@@ -173,7 +179,11 @@ public interface DeviceChannelMapper {
"status=VALUES(status), " +
"streamId=VALUES(streamId), " +
"longitude=VALUES(longitude), " +
- "latitude=VALUES(latitude)" +
+ "latitude=VALUES(latitude), " +
+ "longitudeGcj02=VALUES(longitudeGcj02), " +
+ "latitudeGcj02=VALUES(latitudeGcj02), " +
+ "longitudeWgs84=VALUES(longitudeWgs84), " +
+ "latitudeWgs84=VALUES(latitudeWgs84) " +
"")
int batchAdd(List addChannels);
@@ -207,7 +217,11 @@ public interface DeviceChannelMapper {
", hasAudio=${item.hasAudio}" +
", longitude=${item.longitude}" +
", latitude=${item.latitude}" +
- "WHERE deviceId=#{item.deviceId} AND channelId=#{item.channelId}"+
+ ", longitudeGcj02=${item.longitudeGcj02}" +
+ ", latitudeGcj02=${item.latitudeGcj02}" +
+ ", longitudeWgs84=${item.longitudeWgs84}" +
+ ", latitudeWgs84=${item.latitudeWgs84}" +
+ "WHERE deviceId='${item.deviceId}' AND channelId='${item.channelId}'"+
"" +
""})
int batchUpdate(List updateChannels);
@@ -261,4 +275,6 @@ public interface DeviceChannelMapper {
@Select("SELECT * FROM device_channel WHERE length(trim(streamId)) > 0")
List getAllChannelInPlay();
+ @Select("select * from device_channel where longitude*latitude > 0 and deviceId = #{deviceId}")
+ List getAllChannelWithCoordinate(String deviceId);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
index 37d951e2..3e15b739 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
@@ -38,6 +38,7 @@ public interface DeviceMapper {
"mobilePositionSubmissionInterval," +
"subscribeCycleForAlarm," +
"ssrcCheck," +
+ "geoCoordSys," +
"online" +
") VALUES (" +
"#{deviceId}," +
@@ -61,6 +62,7 @@ public interface DeviceMapper {
"#{mobilePositionSubmissionInterval}," +
"#{subscribeCycleForAlarm}," +
"#{ssrcCheck}," +
+ "#{geoCoordSys}," +
"#{online}" +
")")
int add(Device device);
@@ -87,6 +89,7 @@ public interface DeviceMapper {
", mobilePositionSubmissionInterval=${mobilePositionSubmissionInterval}" +
", subscribeCycleForAlarm=${subscribeCycleForAlarm}" +
", ssrcCheck=${ssrcCheck}" +
+ ", geoCoordSys=#{geoCoordSys}" +
"WHERE deviceId='${deviceId}'"+
" "})
int update(Device device);
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
index d313c6b0..4c895378 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
@@ -317,12 +317,7 @@ public class DeviceQuery {
public ResponseEntity> updateDevice(Device device){
if (device != null && device.getDeviceId() != null) {
-
-
- // TODO 报警订阅相关的信息
-
deviceService.updateDevice(device);
-// cmder.deviceInfoQuery(device);
}
WVPResult result = new WVPResult<>();
result.setCode(0);
diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
index d4928ec7..3be4be3e 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
@@ -146,8 +146,8 @@ public class ApiDeviceController {
// 2-基于口令的双向认证,
// 3-基于数字证书的双向认证
deviceJOSNChannel.put("Status", deviceChannel.getStatus());
- deviceJOSNChannel.put("Longitude", deviceChannel.getLongitude());
- deviceJOSNChannel.put("Latitude", deviceChannel.getLatitude());
+ deviceJOSNChannel.put("Longitude", deviceChannel.getLongitudeWgs84());
+ deviceJOSNChannel.put("Latitude", deviceChannel.getLatitudeWgs84());
deviceJOSNChannel.put("PTZType ", deviceChannel.getPTZType()); // 云台类型, 0 - 未知, 1 - 球机, 2 - 半球,
// 3 - 固定枪机, 4 - 遥控枪机
deviceJOSNChannel.put("CustomPTZType", "");
diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml
index 1233a890..9dedcb14 100644
--- a/src/main/resources/all-application.yml
+++ b/src/main/resources/all-application.yml
@@ -32,7 +32,7 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false
+ url: jdbc:mysql://127.0.0.1:3306/wvp2?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
username: root
password: root123
druid:
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 35314314..35ddc86c 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -20,7 +20,7 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false
+ url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
username: root
password: 123456
druid:
diff --git a/src/main/resources/application-docker.yml b/src/main/resources/application-docker.yml
index 1653a586..53a86356 100644
--- a/src/main/resources/application-docker.yml
+++ b/src/main/resources/application-docker.yml
@@ -20,7 +20,7 @@ spring:
datasource:
# 使用mysql 打开23-28行注释, 删除29-36行
name: wvp
- url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&allowMultiQueries=true&useSSL=false
+ url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&allowMultiQueries=true&useSSL=false&allowMultiQueries=true
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
diff --git a/web_src/src/components/dialog/deviceEdit.vue b/web_src/src/components/dialog/deviceEdit.vue
index b4dd2855..233fa567 100644
--- a/web_src/src/components/dialog/deviceEdit.vue
+++ b/web_src/src/components/dialog/deviceEdit.vue
@@ -36,6 +36,12 @@
+
+
+
+
+
+
diff --git a/web_src/src/components/devicePosition.vue b/web_src/src/components/map.vue
similarity index 93%
rename from web_src/src/components/devicePosition.vue
rename to web_src/src/components/map.vue
index db196779..caf36d4a 100644
--- a/web_src/src/components/devicePosition.vue
+++ b/web_src/src/components/map.vue
@@ -49,7 +49,7 @@ import devicePlayer from './dialog/devicePlayer.vue'
import queryTrace from './dialog/queryTrace.vue'
export default {
- name: "devicePosition",
+ name: "map",
components: {
MapComponent,
DeviceTree,
@@ -183,12 +183,27 @@ export default {
this.clean()
this.closeInfoBox()
let params = [];
+ let longitudeStr;
+ let latitudeStr;
+ if (window.mapParam.coordinateSystem == "GCJ-02") {
+ longitudeStr = "longitudeGcj02";
+ latitudeStr = "latitudeGcj02";
+ }else if (window.mapParam.coordinateSystem == "WGS84") {
+ longitudeStr = "longitudeWgs84";
+ latitudeStr = "latitudeWgs84";
+ }else {
+ longitudeStr = "longitude";
+ latitudeStr = "latitude";
+ }
+
for (let i = 0; i < channels.length; i++) {
- if (channels[i].longitude * channels[i].latitude === 0) {
+ let longitude = channels[i][longitudeStr];
+ let latitude = channels[i][latitudeStr];
+ if (longitude * latitude === 0) {
continue;
}
let item = {
- position: [channels[i].longitude, channels[i].latitude],
+ position: [longitude, latitude],
image: {
src: this.getImageByChannel(channels[i]),
anchor: [0.5, 1]
@@ -202,7 +217,7 @@ export default {
this.layer = this.$refs.map.addLayer(params, this.featureClickEvent)
console.log(4)
if (params.length === 1) {
- this.$refs.map.panTo([channels[0].longitude, channels[0].latitude], mapParam.maxZoom)
+ this.$refs.map.panTo([channels[0][longitudeStr], channels[0][latitudeStr]], mapParam.maxZoom)
} else if (params.length > 1) {
this.$refs.map.fit(this.layer)
} else {
diff --git a/web_src/src/router/index.js b/web_src/src/router/index.js
index 88448621..2f44fd85 100644
--- a/web_src/src/router/index.js
+++ b/web_src/src/router/index.js
@@ -7,7 +7,7 @@ import deviceList from '../components/DeviceList.vue'
import channelList from '../components/channelList.vue'
import pushVideoList from '../components/PushVideoList.vue'
import streamProxyList from '../components/StreamProxyList.vue'
-import devicePosition from '../components/devicePosition.vue'
+import map from '../components/map.vue'
import login from '../components/Login.vue'
import parentPlatformList from '../components/ParentPlatformList.vue'
import cloudRecord from '../components/CloudRecord.vue'
@@ -69,9 +69,9 @@ export default new VueRouter({
component: parentPlatformList,
},
{
- path: '/devicePosition/:deviceId/:parentChannelId/:count/:page',
- name: 'devicePosition',
- component: devicePosition,
+ path: '/map/:deviceId/:parentChannelId/:count/:page',
+ name: 'map',
+ component: map,
},
{
path: '/cloudRecord',
@@ -100,8 +100,8 @@ export default new VueRouter({
},
{
path: '/map',
- name: 'devicePosition',
- component: devicePosition,
+ name: 'map',
+ component: map,
},
]
},