From ec8ab540f8af6dca862d3ec9967e9042fa7dd8eb Mon Sep 17 00:00:00 2001 From: hotcoffie <35990065+hotcoffie@users.noreply.github.com> Date: 星期六, 07 五月 2022 17:42:31 +0800 Subject: [PATCH] Merge branch '648540858:wvp-28181-2.0' into wvp-28181-2.0 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java | 124 +++++++++++++++++ src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java | 5 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 18 ++ src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java | 1 src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarmMethod.java | 40 +++++ src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java | 38 +++-- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java | 11 - pom.xml | 4 web_src/index.html | 21 -- README.md | 44 ++++- src/main/java/com/genersoft/iot/vmp/domain/req/PresetQuerySipReq.java | 28 ++++ web_src/src/components/devicePosition.vue | 2 web_src/static/js/mapConfig.js | 19 ++ src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java | 46 ++++- 14 files changed, 326 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index ee03012..f9ef44a 100644 --- a/README.md +++ b/README.md @@ -109,21 +109,45 @@ - [X] 鏀寔浣跨敤mysql浣滀负鏁版嵁搴擄紝榛樿sqlite3,寮�绠卞嵆鐢ㄣ�� - [X] WEB绔敮鎸佹挱鏀綡264涓嶩265锛岄煶棰戞敮鎸丟.711A/G.711U/AAC,瑕嗙洊鍥芥爣甯哥敤缂栫爜鏍煎紡銆� -# docker蹇�熶綋楠� -鐩墠浣滆�呯殑docker-compose鍥犱负鏃堕棿鏈夐檺缁存姢涓嶅強鏃讹紝杩欓噷鎻愪緵绗笁鏂规彁渚涚殑渚涘ぇ瀹朵娇鐢紝缁存姢涓嶆槗锛屽ぇ瀹惰寰楃粰杩欎綅灏忎紮浼寸偣涓猻tar銆� -https://github.com/SaltFish001/wvp_pro_compose -[https://github.com/SaltFish001/wvp_pro_compose](https://github.com/SaltFish001/wvp_pro_compose) -杩欐槸浣滆�呯淮鎶ょ殑涓�涓暅鍍忥紝鍙兘瀛樺湪涓嶅強鏃剁殑闂銆� -```shell -docker pull 648540858/wvp_pro +[//]: # (# docker蹇�熶綋楠�) -docker run --env WVP_IP="浣犵殑IP" -it -p 18080:18080 -p 30000-30500:30000-30500/udp -p 30000-30500:30000-30500/tcp -p 80:80 -p 5060:5060 -p 5060:5060/udp 648540858/wvp_pro -``` -docker浣跨敤璇︽儏鏌ョ湅锛歔https://hub.docker.com/r/648540858/wvp_pro](https://hub.docker.com/r/648540858/wvp_pro) +[//]: # (鐩墠浣滆�呯殑docker-compose鍥犱负鏃堕棿鏈夐檺缁存姢涓嶅強鏃讹紝杩欓噷鎻愪緵绗笁鏂规彁渚涚殑渚涘ぇ瀹朵娇鐢紝缁存姢涓嶆槗锛屽ぇ瀹惰寰楃粰杩欎綅灏忎紮浼寸偣涓猻tar銆� ) + +[//]: # (https://github.com/SaltFish001/wvp_pro_compose) + +[//]: # ([https://github.com/SaltFish001/wvp_pro_compose](https://github.com/SaltFish001/wvp_pro_compose)) + +[//]: # (杩欐槸浣滆�呯淮鎶ょ殑涓�涓暅鍍忥紝鍙兘瀛樺湪涓嶅強鏃剁殑闂銆�) + +[//]: # (```shell) + +[//]: # (docker pull 648540858/wvp_pro) + +[//]: # () +[//]: # (docker run --env WVP_IP="浣犵殑IP" -it -p 18080:18080 -p 30000-30500:30000-30500/udp -p 30000-30500:30000-30500/tcp -p 80:80 -p 5060:5060 -p 5060:5060/udp 648540858/wvp_pro) + +[//]: # (```) + +[//]: # (docker浣跨敤璇︽儏鏌ョ湅锛歔https://hub.docker.com/r/648540858/wvp_pro](https://hub.docker.com/r/648540858/wvp_pro)) # gitee鍚屾浠撳簱 https://gitee.com/pan648540858/wvp-GB28181-pro.git +# 閬囧埌闂 +鍥芥爣鏈�楹荤儲鐨勫湴鏂瑰湪浜庤澶囩殑鍏煎鎬э紝鎵�浠ラ渶瑕佸ぇ閲忕殑璁惧鏉ユ祴璇曪紝鐩墠浣滆�呮墜閲岀殑璁惧鏈夐檺锛屽啀鍔犱笂浣滆�呮按骞虫湁闄愶紝鎵�浠ラ亣鍒伴棶棰樺湪鎵�闅惧厤锛� +1. 鏌ョ湅wiki锛屼粩缁嗙殑闃呰鍙互甯綘閬垮厤鍑犱箮鎵�鏈夌殑闂 +2. 鎼滅储issues锛岃繖閲屾湁澶ч儴鍒嗙殑绛旀 +3. 鍔燪Q缇わ紝杩欓噷鏈夊ぇ閲忕儹蹇冪殑灏忎紮浼达紝浣嗘槸鍓嶆彁鏂板笇鏈涗綘宸茬粡浠旂粏闃呰浜唚iki鍜屾悳绱簡issues銆� +4. 浣犲彲浠ヨ浣滆�呬负浣犺В绛旓紝浣嗘槸鎴戜笉鏄厤璐圭殑銆� +5. 浣犲彲浠ユ妸閬囧埌闂鐨勮澶囧瘎缁欐垜锛屽彲浠ユ洿瀹规槗鐨勫鐜伴棶棰樸�� + + +# 鍚堜綔 +鐩墠寰堝鎵撶潃鍚堜綔鐨勫箤瀛愭潵绉佽亰鐨勶紝鍏跺疄澶у澶у彲涓嶅繀锛岀洰鍓嶄綔鑰呮病鏈夌簿鍔涳紝浣犳湁闂鍙互浠樿垂鎵炬垜瑙g瓟锛屼篃鍙互鎻怭R +锛屽鏋滃浠g爜鏈夊缓璁彲浠ユ彁ISSUE锛涗篃鍙互鍔犵兢涓�璧疯亰鑱娿�傛垜浠杩庢墍鏈夋湁鍏磋叮浣嗛亣鍒伴」鐩腑鏉ョ殑浜恒�� + + + # 浣跨敤甯姪 QQ缇�: 901799015, ZLM浣跨敤鏂囨。[https://github.com/ZLMediaKit/ZLMediaKit](https://github.com/ZLMediaKit/ZLMediaKit) QQ绉佷俊涓�鑸笉鍥�, 绮惧姏鏈夐檺.娆㈣繋澶у鍦ㄧ兢閲岃璁�.瑙夊緱椤圭洰瀵逛綘鏈夊府鍔╋紝娆㈣繋star鍜屾彁浜r銆� diff --git a/pom.xml b/pom.xml index 34a07e1..eade1f0 100644 --- a/pom.xml +++ b/pom.xml @@ -256,6 +256,7 @@ <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> + <version>2.3.5.RELEASE</version> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> @@ -263,6 +264,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> @@ -272,6 +274,7 @@ <plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> + <version>3.0.1</version> <configuration> <offline>true</offline> </configuration> @@ -280,6 +283,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> + <version>2.22.2</version> <configuration> <skipTests>true</skipTests> </configuration> diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java index 9dacbad..8ff2efb 100644 --- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java +++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java @@ -7,7 +7,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import springfox.documentation.oas.annotations.EnableOpenApi; diff --git a/src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java b/src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java index e91d1ca..ed1c2b9 100644 --- a/src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java +++ b/src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java @@ -1,5 +1,9 @@ package com.genersoft.iot.vmp.common; +/** + * 涓篈PI閲嶅懡鍚�, 鏂逛究鍚戞暟鎹簱璁板綍鏁版嵁鐨勬椂鍊欏睍绀� + * @author lin + */ public class ApiSaveConstant { public static String getVal(String key) { @@ -35,8 +39,9 @@ return "[璁惧鎺у埗] 寮哄埗鍏抽敭甯�"; case "home_position": return "[璁惧鎺у埗] 鐪嬪畧浣嶆帶鍒�"; + default: + return ""; } - break; case "query": if (keyItemArray.length <= 5) { return null; @@ -51,23 +56,30 @@ return "[璁惧鏌ヨ] 鍚屾璁惧閫氶亾"; case "delete": return "[璁惧鏌ヨ] 绉婚櫎璁惧"; + default: + return ""; } - break; case "channel": return "[璁惧鏌ヨ] 鏇存柊閫氶亾淇℃伅"; case "transport": return "[璁惧鏌ヨ] 淇敼鏁版嵁娴佷紶杈撴ā寮�"; + default: + return ""; } - break; + default: + return ""; } + + break; case "gbStream": switch (keyItemArray[3]) { case "del": return "绉婚櫎閫氶亾涓庡浗鏍囩殑鍏宠仈"; case "add": return "娣诲姞閫氶亾涓庡浗鏍囩殑鍏宠仈"; + default: + return ""; } - break; case "media": break; case "position": @@ -85,8 +97,9 @@ return "鍚戜笂绾у钩鍙版坊鍔犲浗鏍囬�氶亾"; case "del_channel_for_gb": return "浠庝笂绾у钩鍙扮Щ闄ゅ浗鏍囬�氶亾"; + default: + return ""; } - break; case "platform_gb_stream": break; case "play": @@ -101,32 +114,36 @@ return "缁撴潫杞爜"; case "broadcast": return "璇煶骞挎挱"; + default: + return ""; } - break; case "download": switch (keyItemArray[3]) { case "start": return "寮�濮嬪巻鍙插獟浣撲笅杞�"; case "stop": return "鍋滄鍘嗗彶濯掍綋涓嬭浇"; + default: + return ""; } - break; case "playback": switch (keyItemArray[3]) { case "start": return "寮�濮嬭棰戝洖鏀�"; case "stop": return "鍋滄瑙嗛鍥炴斁"; + default: + return ""; } - break; case "ptz": switch (keyItemArray[3]) { case "control": return "浜戝彴鎺у埗"; case "front_end_command": return "閫氱敤鍓嶇鎺у埗鍛戒护"; + default: + return ""; } - break; case "gb_record": break; case "onvif": @@ -146,16 +163,18 @@ return "鍚敤浠g悊"; case "stop": return "鍋滅敤浠g悊"; + default: + return ""; } - break; case "push": switch (keyItemArray[3]) { case "save_to_gb": return "灏嗘帹娴佹坊鍔犲埌鍥芥爣"; case "remove_form_gb": return "灏嗘帹娴佺Щ鍑哄埌鍥芥爣"; + default: + return ""; } - break; case "user": switch (keyItemArray[3]) { case "login": @@ -166,8 +185,11 @@ return "娣诲姞鐢ㄦ埛"; case "delete": return "鍒犻櫎鐢ㄦ埛"; + default: + return ""; } - break; + default: + return ""; } } return null; diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java b/src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java index 2356b57..95b2262 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java @@ -13,6 +13,7 @@ /** * 澶勭悊鍖垮悕鐢ㄦ埛璁块棶閫昏緫 + * @author lin */ @Component public class AnonymousAuthenticationEntryPoint implements AuthenticationEntryPoint { @@ -21,7 +22,6 @@ @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) { -// logger.debug("鐢ㄦ埛闇�瑕佺櫥褰曪紝璁块棶[{}]澶辫触锛孉uthenticationException=[{}]", request.getRequestURI(), e.getMessage()); // 鍏佽璺ㄥ煙 response.setHeader("Access-Control-Allow-Origin", "*"); // 鍏佽鑷畾涔夎姹傚ごtoken(鍏佽head璺ㄥ煙) @@ -30,7 +30,8 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("code", "-1"); jsonObject.put("msg", "璇风櫥褰曞悗閲嶆柊璇锋眰"); - if (request.getRequestURI().contains("api/user/login")){ + String logUri = "api/user/login"; + if (request.getRequestURI().contains(logUri)){ jsonObject.put("msg", e.getMessage()); } response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); diff --git a/src/main/java/com/genersoft/iot/vmp/domain/req/PresetQuerySipReq.java b/src/main/java/com/genersoft/iot/vmp/domain/req/PresetQuerySipReq.java new file mode 100644 index 0000000..e2f3ec6 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/domain/req/PresetQuerySipReq.java @@ -0,0 +1,28 @@ +package com.genersoft.iot.vmp.domain.req; + + +/** + * @author chenjialing + */ +public class PresetQuerySipReq { + + private String presetId; + + private String presetName; + + public String getPresetId() { + return presetId; + } + + public void setPresetId(String presetId) { + this.presetId = presetId; + } + + public String getPresetName() { + return presetName; + } + + public void setPresetName(String presetName) { + this.presetName = presetName; + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarmMethod.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarmMethod.java new file mode 100644 index 0000000..ff8761e --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceAlarmMethod.java @@ -0,0 +1,40 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +/** + * 鎶ヨ鏂瑰紡 + * @author lin + * 1涓虹數璇濇姤璀�, 2涓鸿澶囨姤璀�, 3涓虹煭淇℃姤璀�, 4涓� GPS鎶ヨ, 5涓鸿棰戞姤璀�, 6涓鸿澶囨晠闅滄姤璀�, + * 7鍏朵粬鎶ヨ;鍙互涓虹洿鎺ョ粍鍚堝12涓虹數璇濇姤璀︽垨 璁惧鎶ヨ- + */ +public enum DeviceAlarmMethod { + // 1涓虹數璇濇姤璀� + Telephone(1), + + // 2涓鸿澶囨姤璀� + Device(2), + + // 3涓虹煭淇℃姤璀� + SMS(3), + + // 4涓� GPS鎶ヨ + GPS(4), + + // 5涓鸿棰戞姤璀� + Video(5), + + // 6涓鸿澶囨晠闅滄姤璀� + DeviceFailure(6), + + // 7鍏朵粬鎶ヨ + Other(7); + + private final int val; + + DeviceAlarmMethod(int val) { + this.val=val; + } + + public int getVal() { + return val; + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java index 7d67e82..1c2e611 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java @@ -68,9 +68,6 @@ toHeader, viaHeaders, maxForwards); List<String> agentParam = new ArrayList<>(); - agentParam.add("wvp-pro"); - UserAgentHeader userAgentHeader = sipFactory.createHeaderFactory().createUserAgentHeader(agentParam); - request.addHeader(userAgentHeader); ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml"); request.setContent(content, contentTypeHeader); @@ -115,10 +112,6 @@ ExpiresHeader expires = sipFactory.createHeaderFactory().createExpiresHeader(Integer.parseInt(platform.getExpires())); request.addHeader(expires); - List<String> agentParam = new ArrayList<>(); - agentParam.add("wvp-pro"); - UserAgentHeader userAgentHeader = sipFactory.createHeaderFactory().createUserAgentHeader(agentParam); - request.addHeader(userAgentHeader); return request; } @@ -226,10 +219,6 @@ messageFactory.setDefaultContentEncodingCharset(parentPlatform.getCharacterSet()); request = messageFactory.createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwards); - List<String> agentParam = new ArrayList<>(); - agentParam.add("wvp-pro"); - UserAgentHeader userAgentHeader = sipFactory.createHeaderFactory().createUserAgentHeader(agentParam); - request.addHeader(userAgentHeader); ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml"); request.setContent(content, contentTypeHeader); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index 7689a7b..ea8f202 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.SpringBootVersion; import org.springframework.context.annotation.DependsOn; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; @@ -37,7 +38,9 @@ import javax.sip.message.Request; import java.lang.reflect.Field; import java.text.ParseException; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; /** * @description:璁惧鑳藉姏鎺ュ彛锛岀敤浜庡畾涔夎澶囩殑鎺у埗銆佹煡璇㈣兘鍔� @@ -49,7 +52,7 @@ public class SIPCommander implements ISIPCommander { private final Logger logger = LoggerFactory.getLogger(SIPCommander.class); - + @Autowired private SipConfig sipConfig; @@ -1643,7 +1646,18 @@ } else if("UDP".equals(device.getTransport())) { clientTransaction = udpSipProvider.getNewClientTransaction(request); } - + if (request.getHeader(UserAgentHeader.NAME) == null) { + List<String> agentParam = new ArrayList<>(); + agentParam.add("wvp-pro"); + // TODO 娣诲姞鐗堟湰淇℃伅浠ュ強鏃ユ湡 + UserAgentHeader userAgentHeader = null; + try { + userAgentHeader = sipFactory.createHeaderFactory().createUserAgentHeader(agentParam); + } catch (ParseException e) { + throw new RuntimeException(e); + } + request.addHeader(userAgentHeader); + } CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME); // 娣诲姞閿欒璁㈤槄 if (errorEvent != null) { 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 fa20d51..b7e222d 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 @@ -32,7 +32,7 @@ @Component public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent implements InitializingBean, IMessageHandler { - private Logger logger = LoggerFactory.getLogger(AlarmNotifyMessageHandler.class); + private final Logger logger = LoggerFactory.getLogger(AlarmNotifyMessageHandler.class); private final String cmdType = "Alarm"; @Autowired @@ -85,24 +85,27 @@ deviceAlarm.setAlarmPriority(getText(rootElement, "AlarmPriority")); deviceAlarm.setAlarmMethod(getText(rootElement, "AlarmMethod")); deviceAlarm.setAlarmTime(getText(rootElement, "AlarmTime")); - if (getText(rootElement, "AlarmDescription") == null) { + String alarmDescription = getText(rootElement, "AlarmDescription"); + if (alarmDescription == null) { deviceAlarm.setAlarmDescription(""); } else { - deviceAlarm.setAlarmDescription(getText(rootElement, "AlarmDescription")); + deviceAlarm.setAlarmDescription(alarmDescription); } - if (NumericUtil.isDouble(getText(rootElement, "Longitude"))) { - deviceAlarm.setLongitude(Double.parseDouble(getText(rootElement, "Longitude"))); + String longitude = getText(rootElement, "Longitude"); + if (longitude != null && NumericUtil.isDouble(longitude)) { + deviceAlarm.setLongitude(Double.parseDouble(longitude)); } else { deviceAlarm.setLongitude(0.00); } - if (NumericUtil.isDouble(getText(rootElement, "Latitude"))) { - deviceAlarm.setLatitude(Double.parseDouble(getText(rootElement, "Latitude"))); + String latitude = getText(rootElement, "Latitude"); + if (latitude != null && NumericUtil.isDouble(latitude)) { + deviceAlarm.setLatitude(Double.parseDouble(latitude)); } else { deviceAlarm.setLatitude(0.00); } if (!StringUtils.isEmpty(deviceAlarm.getAlarmMethod())) { - if ( deviceAlarm.getAlarmMethod().equals("4")) { + if ( deviceAlarm.getAlarmMethod().contains(DeviceAlarmMethod.GPS.getVal() + "")) { MobilePosition mobilePosition = new MobilePosition(); mobilePosition.setDeviceId(deviceAlarm.getDeviceId()); mobilePosition.setTime(deviceAlarm.getAlarmTime()); @@ -122,7 +125,7 @@ } } if (!StringUtils.isEmpty(deviceAlarm.getDeviceId())) { - if (deviceAlarm.getAlarmMethod().equals("5")) { + if (deviceAlarm.getAlarmMethod().contains(DeviceAlarmMethod.Video.getVal() + "")) { deviceAlarm.setAlarmType(getText(rootElement.element("Info"), "AlarmType")); } } @@ -173,25 +176,28 @@ deviceAlarm.setAlarmPriority(getText(rootElement, "AlarmPriority")); deviceAlarm.setAlarmMethod(getText(rootElement, "AlarmMethod")); deviceAlarm.setAlarmTime(getText(rootElement, "AlarmTime")); - if (getText(rootElement, "AlarmDescription") == null) { + String alarmDescription = getText(rootElement, "AlarmDescription"); + if (alarmDescription == null) { deviceAlarm.setAlarmDescription(""); } else { - deviceAlarm.setAlarmDescription(getText(rootElement, "AlarmDescription")); + deviceAlarm.setAlarmDescription(alarmDescription); } - if (NumericUtil.isDouble(getText(rootElement, "Longitude"))) { - deviceAlarm.setLongitude(Double.parseDouble(getText(rootElement, "Longitude"))); + String longitude = getText(rootElement, "Longitude"); + if (longitude != null && NumericUtil.isDouble(longitude)) { + deviceAlarm.setLongitude(Double.parseDouble(longitude)); } else { deviceAlarm.setLongitude(0.00); } - if (NumericUtil.isDouble(getText(rootElement, "Latitude"))) { - deviceAlarm.setLatitude(Double.parseDouble(getText(rootElement, "Latitude"))); + String latitude = getText(rootElement, "Latitude"); + if (latitude != null && NumericUtil.isDouble(latitude)) { + deviceAlarm.setLatitude(Double.parseDouble(latitude)); } else { deviceAlarm.setLatitude(0.00); } if (!StringUtils.isEmpty(deviceAlarm.getAlarmMethod())) { - if (deviceAlarm.getAlarmMethod().equals("5")) { + if (deviceAlarm.getAlarmMethod().contains(DeviceAlarmMethod.Video.getVal() + "")) { deviceAlarm.setAlarmType(getText(rootElement.element("Info"), "AlarmType")); } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java new file mode 100644 index 0000000..db7bb55 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java @@ -0,0 +1,124 @@ +package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd; + +import com.genersoft.iot.vmp.conf.SipConfig; +import com.genersoft.iot.vmp.conf.UserSetting; +import com.genersoft.iot.vmp.domain.req.PresetQuerySipReq; +import com.genersoft.iot.vmp.gb28181.bean.*; +import com.genersoft.iot.vmp.gb28181.event.EventPublisher; +import com.genersoft.iot.vmp.gb28181.session.CatalogDataCatch; +import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; +import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; +import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; +import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; +import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; +import com.genersoft.iot.vmp.gb28181.utils.Coordtransform; +import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; +import com.genersoft.iot.vmp.gb28181.utils.XmlUtil; +import com.genersoft.iot.vmp.storager.IRedisCatchStorage; +import com.genersoft.iot.vmp.storager.IVideoManagerStorage; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import javax.sip.InvalidArgumentException; +import javax.sip.RequestEvent; +import javax.sip.SipException; +import javax.sip.message.Response; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.UUID; + +import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText; + +@Component +public class PresetQueryResponseMessageHandler extends SIPRequestProcessorParent implements InitializingBean, IMessageHandler { + + private Logger logger = LoggerFactory.getLogger(PresetQueryResponseMessageHandler.class); + private final String cmdType = "PresetQuery"; + + private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Autowired + private ResponseMessageHandler responseMessageHandler; + + @Autowired + private DeferredResultHolder deferredResultHolder; + + + @Override + public void afterPropertiesSet() throws Exception { + responseMessageHandler.addHandler(cmdType, this); + } + + @Override + public void handForDevice(RequestEvent evt, Device device, Element element) { + Element rootElement = null; + try { + rootElement = getRootElement(evt, device.getCharset()); + + Element presetListNumElement = rootElement.element("PresetList"); + Element snElement = rootElement.element("SN"); + //璇ュ瓧娈靛彲鑳戒负閫氶亾鎴栧垯璁惧鐨刬d + String deviceId = getText(rootElement, "DeviceID"); + String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + deviceId; + if (snElement == null || presetListNumElement == null) { + responseAck(evt, Response.BAD_REQUEST, "xml error"); + return; + } + int sumNum = Integer.parseInt(presetListNumElement.attributeValue("Num")); + List<PresetQuerySipReq> presetQuerySipReqList = new ArrayList<>(); + if (sumNum == 0) { + // 鏁版嵁鏃犻缃綅淇℃伅 + + + }else { + for (Iterator<Element> presetIterator = presetListNumElement.elementIterator();presetIterator.hasNext();){ + Element itemListElement = presetIterator.next(); + PresetQuerySipReq presetQuerySipReq = new PresetQuerySipReq(); + for (Iterator<Element> itemListIterator = itemListElement.elementIterator();itemListIterator.hasNext();){ + // 閬嶅巻item + Element itemOne = itemListIterator.next(); + String name = itemOne.getName(); + String textTrim = itemOne.getTextTrim(); + if("PresetID".equals(name)){ + presetQuerySipReq.setPresetId(textTrim); + }else { + presetQuerySipReq.setPresetName(textTrim); + } + } + presetQuerySipReqList.add(presetQuerySipReq); + + + } + + } + RequestMessage requestMessage = new RequestMessage(); + requestMessage.setKey(key); + requestMessage.setData(presetQuerySipReqList); + deferredResultHolder.invokeAllResult(requestMessage); + responseAck(evt, Response.OK); + } catch (DocumentException e) { + e.printStackTrace(); + } catch (InvalidArgumentException e) { + e.printStackTrace(); + } catch (ParseException e) { + e.printStackTrace(); + } catch (SipException e) { + e.printStackTrace(); + } + } + + @Override + public void handForPlatform(RequestEvent evt, ParentPlatform parentPlatform, Element rootElement) { + + } + +} diff --git a/web_src/index.html b/web_src/index.html index f69f16b..21ad271 100644 --- a/web_src/index.html +++ b/web_src/index.html @@ -12,26 +12,7 @@ <script type="text/javascript" src="./static/js/jessibuca/jessibuca.js"></script> <script type="text/javascript" src="./static/js/EasyWasmPlayer.js"></script> <script type="text/javascript" src="./static/js/ZLMRTCClient.js"></script> + <script type="text/javascript" src="./static/js/mapConfig.js"></script> <div id="app"></div> - <!-- built files will be auto injected --> - <script> - // map缁勪欢鍏ㄥ眬鍙傛暟, 娉ㄩ噴姝ゅ唴瀹瑰彲浠ュ叧闂湴鍥惧姛鑳� - window.mapParam = { - // 鍧愭爣绯� GCJ-02 WGS-84, - coordinateSystem: "GCJ-02", - // 鍦板浘鐡︾墖鍦板潃 - tilesUrl: "http://webrd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8", - // 鐡︾墖澶у皬 - tileSize: 256, - // 榛樿灞傜骇 - zoom:10, - // 榛樿鍦板浘涓績鐐� - center:[116.41020, 39.915119], - // 鍦板浘鏈�澶у眰绾� - maxZoom:18, - // 鍦板浘鏈�灏忓眰绾� - minZoom: 3 - } - </script> </body> </html> diff --git a/web_src/src/components/devicePosition.vue b/web_src/src/components/devicePosition.vue index 16675c9..db19677 100644 --- a/web_src/src/components/devicePosition.vue +++ b/web_src/src/components/devicePosition.vue @@ -59,7 +59,7 @@ }, data() { return { - onOff: typeof window.mapParam !== "undefined", + onOff: typeof window.mapParam !== "undefined" && window.mapParam.enable, deviceService: new DeviceService(), layer: null, lineLayer: null, diff --git a/web_src/static/js/mapConfig.js b/web_src/static/js/mapConfig.js new file mode 100644 index 0000000..60427e8 --- /dev/null +++ b/web_src/static/js/mapConfig.js @@ -0,0 +1,19 @@ +// map缁勪欢鍏ㄥ眬鍙傛暟, 娉ㄩ噴姝ゅ唴瀹瑰彲浠ュ叧闂湴鍥惧姛鑳� +window.mapParam = { + // 寮�鍚�/鍏抽棴鍦板浘鍔熻兘 + enable: true, + // 鍧愭爣绯� GCJ-02 WGS-84, + coordinateSystem: "GCJ-02", + // 鍦板浘鐡︾墖鍦板潃 + tilesUrl: "http://webrd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8", + // 鐡︾墖澶у皬 + tileSize: 256, + // 榛樿灞傜骇 + zoom:10, + // 榛樿鍦板浘涓績鐐� + center:[116.41020, 39.915119], + // 鍦板浘鏈�澶у眰绾� + maxZoom:18, + // 鍦板浘鏈�灏忓眰绾� + minZoom: 3 +} -- Gitblit v1.8.0