From 5e724cc0628554b949f0102bee6294db8a23c7f5 Mon Sep 17 00:00:00 2001
From: wangyimeng <421132955@qq.com>
Date: 星期三, 06 七月 2022 15:33:43 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' of https://github.com/mrjackwang/wvp-GB28181-pro into wvp-28181-2.0
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java | 90 +++++++++++++++++++++++++++++++++++---------
1 files changed, 71 insertions(+), 19 deletions(-)
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 7e66658..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);
@@ -173,16 +174,40 @@
mobilePosition.getLongitude(), mobilePosition.getLatitude());
mobilePosition.setReportSource("Mobile Position");
// 榛樿鏉ユ簮鍧愭爣绯讳负WGS-84澶勭悊
- Double[] gcj02Point = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- logger.info("GCJ02鍧愭爣锛�" + gcj02Point[0] + ", " + gcj02Point[1]);
- mobilePosition.setGeodeticSystem("GCJ-02");
- mobilePosition.setCnLng(gcj02Point[0] + "");
- mobilePosition.setCnLat(gcj02Point[1] + "");
- if (!userSetting.getSavePositionHistory()) {
- storager.clearMobilePositionsByDeviceId(deviceId);
+ if ("WGS84".equals(device.getGeoCoordSys())) {
+ mobilePosition.setLongitudeWgs84(mobilePosition.getLongitude());
+ mobilePosition.setLatitudeWgs84(mobilePosition.getLatitude());
+ Double[] position = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
+ mobilePosition.setLongitudeGcj02(position[0]);
+ mobilePosition.setLatitudeGcj02(position[1]);
+ }else if ("GCJ02".equals(device.getGeoCoordSys())) {
+ mobilePosition.setLongitudeGcj02(mobilePosition.getLongitude());
+ mobilePosition.setLatitudeGcj02(mobilePosition.getLatitude());
+ Double[] position = Coordtransform.GCJ02ToWGS84(mobilePosition.getLongitude(), mobilePosition.getLatitude());
+ mobilePosition.setLongitudeWgs84(position[0]);
+ mobilePosition.setLatitudeWgs84(position[1]);
+ }else {
+ mobilePosition.setLongitudeGcj02(0.00);
+ mobilePosition.setLatitudeGcj02(0.00);
+ mobilePosition.setLongitudeWgs84(0.00);
+ mobilePosition.setLatitudeWgs84(0.00);
}
- storager.insertMobilePosition(mobilePosition);
- storager.updateChannelPotion(deviceId, channelId, mobilePosition.getLongitude(), mobilePosition.getLatitude() );
+ if (userSetting.getSavePositionHistory()) {
+ storager.insertMobilePosition(mobilePosition);
+ }
+
+ // 鏇存柊device channel 鐨勭粡绾害
+ DeviceChannel deviceChannel = new DeviceChannel();
+ deviceChannel.setDeviceId(device.getDeviceId());
+ deviceChannel.setChannelId(channelId);
+ deviceChannel.setLongitude(mobilePosition.getLongitude());
+ deviceChannel.setLatitude(mobilePosition.getLatitude());
+ deviceChannel.setLongitudeWgs84(mobilePosition.getLongitudeWgs84());
+ deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
+ deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
+ deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
+ deviceChannel.setGpsTime(mobilePosition.getTime());
+ storager.updateChannelPosition(deviceChannel);
// 鍙戦�乺edis娑堟伅銆� 閫氱煡浣嶇疆淇℃伅鐨勫彉鍖�
JSONObject jsonObject = new JSONObject();
jsonObject.put("time", time);
@@ -209,9 +234,12 @@
return;
}
try {
+ FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
+ String deviceId = SipUtils.getUserIdFromFromHeader(fromHeader);
+
Element rootElement = getRootElement(evt);
Element deviceIdElement = rootElement.element("DeviceID");
- String deviceId = deviceIdElement.getText().toString();
+ String channelId = deviceIdElement.getText().toString();
Device device = redisCatchStorage.getDevice(deviceId);
if (device == null) {
@@ -247,21 +275,45 @@
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());
mobilePosition.setLatitude(deviceAlarm.getLatitude());
mobilePosition.setReportSource("GPS Alarm");
- // 榛樿鏉ユ簮鍧愭爣绯讳负WGS-84澶勭悊
- Double[] gcj02Point = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
- logger.info("GCJ02鍧愭爣锛�" + gcj02Point[0] + ", " + gcj02Point[1]);
- mobilePosition.setGeodeticSystem("GCJ-02");
- mobilePosition.setCnLng(gcj02Point[0] + "");
- mobilePosition.setCnLat(gcj02Point[1] + "");
- if (!userSetting.getSavePositionHistory()) {
- storager.clearMobilePositionsByDeviceId(deviceId);
+ if ("WGS84".equals(device.getGeoCoordSys())) {
+ mobilePosition.setLongitudeWgs84(mobilePosition.getLongitude());
+ mobilePosition.setLatitudeWgs84(mobilePosition.getLatitude());
+ Double[] position = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
+ mobilePosition.setLongitudeGcj02(position[0]);
+ mobilePosition.setLatitudeGcj02(position[1]);
+ }else if ("GCJ02".equals(device.getGeoCoordSys())) {
+ mobilePosition.setLongitudeGcj02(mobilePosition.getLongitude());
+ mobilePosition.setLatitudeGcj02(mobilePosition.getLatitude());
+ Double[] position = Coordtransform.GCJ02ToWGS84(mobilePosition.getLongitude(), mobilePosition.getLatitude());
+ mobilePosition.setLongitudeWgs84(position[0]);
+ mobilePosition.setLatitudeWgs84(position[1]);
+ }else {
+ mobilePosition.setLongitudeGcj02(0.00);
+ mobilePosition.setLatitudeGcj02(0.00);
+ mobilePosition.setLongitudeWgs84(0.00);
+ mobilePosition.setLatitudeWgs84(0.00);
}
- storager.insertMobilePosition(mobilePosition);
+ if (userSetting.getSavePositionHistory()) {
+ storager.insertMobilePosition(mobilePosition);
+ }
+ // 鏇存柊device channel 鐨勭粡绾害
+ DeviceChannel deviceChannel = new DeviceChannel();
+ deviceChannel.setDeviceId(device.getDeviceId());
+ deviceChannel.setChannelId(channelId);
+ deviceChannel.setLongitude(mobilePosition.getLongitude());
+ deviceChannel.setLatitude(mobilePosition.getLatitude());
+ deviceChannel.setLongitudeWgs84(mobilePosition.getLongitudeWgs84());
+ deviceChannel.setLatitudeWgs84(mobilePosition.getLatitudeWgs84());
+ deviceChannel.setLongitudeGcj02(mobilePosition.getLongitudeGcj02());
+ deviceChannel.setLatitudeGcj02(mobilePosition.getLatitudeGcj02());
+ deviceChannel.setGpsTime(mobilePosition.getTime());
+ storager.updateChannelPosition(deviceChannel);
}
// TODO: 闇�瑕佸疄鐜板瓨鍌ㄦ姤璀︿俊鎭�佹姤璀﹀垎绫�
--
Gitblit v1.8.0