From d8391959627eeba172c57763d1fb22f68256bbff Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 13 十一月 2024 18:53:52 +0800
Subject: [PATCH] OSD通过国标码判断通道、数据中心车辆人脸在线率离线时间点
---
ycl-common/src/main/java/constant/ApiConstants.java | 15 ++++
ycl-server/src/main/java/com/ycl/api/HK/HKApi.java | 42 +++++++++++++
ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java | 17 +++++
ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java | 4
ycl-server/src/main/java/com/ycl/task/OsdTask.java | 15 ++++
ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java | 8 +-
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 33 +++++++++-
7 files changed, 116 insertions(+), 18 deletions(-)
diff --git a/ycl-common/src/main/java/constant/ApiConstants.java b/ycl-common/src/main/java/constant/ApiConstants.java
index 38baf1d..e1eb920 100644
--- a/ycl-common/src/main/java/constant/ApiConstants.java
+++ b/ycl-common/src/main/java/constant/ApiConstants.java
@@ -73,11 +73,22 @@
//鍏畨閮ㄥ墠缂�
public final static String Dept = "Dept_";
- //娴峰悍璁块棶OSD璺緞
- public final static String HK_OSD_PATH = "/ISAPI/System/Video/inputs/channels/1/overlays";
+ //娴峰悍璁块棶OSD璺緞 閫氶亾1
+ public final static String HK_OSD_PATH_1 = "/ISAPI/System/Video/inputs/channels/1/overlays";
+ //娴峰悍璁块棶OSD璺緞 閫氶亾2
+ public final static String HK_OSD_PATH_2 = "/ISAPI/System/Video/inputs/channels/2/overlays";
//娴峰悍璁块棶鏃堕棿璺緞
public final static String HK_OSD_TIME = "/ISAPI/System/time";
+ //鍥芥爣鐮侀�氶亾绱㈠紩
+ public final static Integer SerialNumber_Channel = 13;
+ //鍥芥爣鐮佽澶囩被鍨嬬储寮�
+ public final static Integer SerialNumber_Category = 17;
+ //鍥芥爣鍏ㄦ櫙鏍囪瘑
+ public final static char SerialNumber_All = '0';
+ //鍥芥爣缁嗚妭鏍囪瘑
+ public final static char SerialNumber_Detail = '1';
+
//鏍囩甯搁噺
public final static Integer TRUE = 1;
public final static Integer FALSE = 0;
diff --git a/ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java b/ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java
index ffcae92..63f9881 100644
--- a/ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java
+++ b/ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java
@@ -11,6 +11,7 @@
import com.ycl.api.DH.lib.structure.*;
import com.ycl.platform.domain.result.OSDResult;
import com.ycl.utils.StringUtils;
+import constant.ApiConstants;
import enumeration.DeviceType;
import lombok.extern.slf4j.Slf4j;
@@ -152,7 +153,7 @@
return bRet;
}
- public static OSDResult getOsd(LLong loginId) {
+ public static OSDResult getOsd(String serialNumber,LLong loginId) {
OSDResult osdResult = new OSDResult();
NetSDKLib.NET_TIME deviceTime = new NetSDKLib.NET_TIME();
if (!netsdk.CLIENT_QueryDeviceTime(loginId, deviceTime, 3000)) {
@@ -174,7 +175,19 @@
NET_CFG_GBMODE_INFO osdInfo = new NET_CFG_GBMODE_INFO();
osdInfo.write();
- boolean b = netsdk.CLIENT_GetConfig(loginId, NET_EM_CFG_GBMODE, 0, osdInfo.getPointer(), osdInfo.size(), 3000, reserve.getPointer());
+ boolean b = false;
+ /**
+ * 閫氳繃鍥芥爣鍊掓暟绗竷浣嶅垽鏂�氶亾 0/鍏ㄦ櫙 1/缁嗚妭
+ * 瀵逛簬娴峰悍鏉ヨ锛� 鍥芥爣鍊�7: 0/鍏ㄦ櫙/閫氶亾2 1/缁嗚妭/閫氶亾1
+ * 瀵逛簬澶у崕鏉ヨ锛� 鍥芥爣鍊�7: 0/鍏ㄦ櫙/閫氶亾1 1/缁嗚妭/閫氶亾2
+ * 瀹囪鍗曢�氶亾涓嶈�冭檻
+ */
+ if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == ApiConstants.SerialNumber_All ) {
+ b = netsdk.CLIENT_GetConfig(loginId, NET_EM_CFG_GBMODE, 0, osdInfo.getPointer(), osdInfo.size(), 3000, reserve.getPointer());
+ }else if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == ApiConstants.SerialNumber_Detail){
+ b = netsdk.CLIENT_GetConfig(loginId, NET_EM_CFG_GBMODE, 1, osdInfo.getPointer(), osdInfo.size(), 3000, reserve.getPointer());
+ }
+
if (!b) {
// log.error("CLIENT_GetConfig Failed!" + ToolKits.getErrorCodePrint());
return null;
diff --git a/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java b/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java
index 4ed1e3a..b53a7eb 100644
--- a/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java
+++ b/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java
@@ -9,12 +9,12 @@
@Slf4j
public class DHApi {
- public static OSDResult getOsd(String ip, String userName, String password){
+ public static OSDResult getOsd(String serialNumber,String ip, String userName, String password){
NetSDKLib.LLong loginId = LoginModule.login(ip, 80, userName, password);
if(loginId.longValue() ==0){
return null;
}
- OSDResult osd = LoginModule.getOsd(loginId);
+ OSDResult osd = LoginModule.getOsd(serialNumber,loginId);
LoginModule.logout(loginId);
return osd;
}
diff --git a/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java b/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java
index a9711cd..b6c5c17 100644
--- a/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java
+++ b/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java
@@ -33,12 +33,50 @@
@Slf4j
public class HKApi {
- public static OSDResult getOsdByIP(String ip, String userName, String password) {
+ public static OSDResult getOsdByIP(String serialNumber, String ip, String userName, String password) {
OSDResult osdResult = new OSDResult();
String hostUrl = "http://" + ip;
try {
//鑾峰彇OSD
- String OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH, userName, password);
+ /**
+ * 閫氳繃鍥芥爣鍊掓暟绗竷浣嶅垽鏂�氶亾 0/鍏ㄦ櫙 1/缁嗚妭
+ * 瀵逛簬娴峰悍鏉ヨ锛� 鍥芥爣鍊�7 0/鍏ㄦ櫙/閫氶亾2 1/缁嗚妭/閫氶亾1
+ * 瀵逛簬澶у崕鏉ヨ锛� 鍥芥爣鍊�7 0/鍏ㄦ櫙/閫氶亾1 1/缁嗚妭/閫氶亾2
+ * 瀹囪鍗曢�氶亾涓嶈�冭檻
+ */
+ String OSDString = null;
+ if(StringUtils.isEmpty(serialNumber)) return null;
+ if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == ApiConstants.SerialNumber_All ) {
+ OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_2, userName, password);
+ }else if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == ApiConstants.SerialNumber_Detail){
+ OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_1, userName, password);
+ }
+ //閫氳繃璁惧绫诲瀷鍒ゆ柇锛堝純鐢級
+// if(serialNumber.charAt(ApiConstants.SerialNumber_Category) == 1 ){
+// //鏋満
+// if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == 1){
+// OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_1, userName, password);
+// }else if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == 0){
+// OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_2, userName, password);
+// }
+// }else if(serialNumber.charAt(ApiConstants.SerialNumber_Category) == 2){
+// //鐞冩満
+// if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == 0){
+// OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_1, userName, password);
+// }else if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == 1){
+// OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_2, userName, password);
+// }
+// }else if(serialNumber.charAt(ApiConstants.SerialNumber_Category) == 3){
+// //鍗″彛 鍗曢�氶亾
+// OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_1, userName, password);
+// }else if(serialNumber.charAt(ApiConstants.SerialNumber_Category) == 4){
+// //楂樼┖
+// if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == 0){
+// OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_1, userName, password);
+// }else if(serialNumber.charAt(ApiConstants.SerialNumber_Channel) == 1){
+// OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH_2, userName, password);
+// }
+// }
if (OSDString == null) return null;
//瑙f瀽xml
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
index 3813971..781bf2b 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -87,7 +87,8 @@
query.addCriteria(Criteria.where("online").is(params.getOption()));
}
Sort sort = Sort.by(
- Sort.Order.asc("pingOnline") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
);
// 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
query.with(sort);
@@ -1397,8 +1398,12 @@
if (params.getOption() != null) {
query.addCriteria(Criteria.where("online").is(params.getOption()));
}
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
// 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
- query.with(Sort.by(Sort.Order.asc("pingOnline")));
+ query.with(sort);
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -1420,6 +1425,14 @@
item.setOnlineStr("绂荤嚎");
} else {
item.setOnlineStr("鏈煡");
+ }
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if(!CollectionUtils.isEmpty(offLineTime)) {
+ //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(0, 2);
+ }
+ item.setOffLineTimeStr(offLineTime);
}
});
@@ -2205,8 +2218,12 @@
if (params.getOption() != null) {
query.addCriteria(Criteria.where("online").is(params.getOption()));
}
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
// 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
- query.with(Sort.by(Sort.Order.asc("pingOnline")));
+ query.with(sort);
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -2226,11 +2243,19 @@
} else {
item.setOnlineStr("鏈煡");
}
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if(!CollectionUtils.isEmpty(offLineTime)) {
+ //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(0, 2);
+ }
+ item.setOffLineTimeStr(offLineTime);
+ }
});
params.setDeptTag(-1);
params.setDeviceType(3);
-// 缁熻璁惧鏁伴噺
+ // 缁熻璁惧鏁伴噺
//鍗$墖缁熻
int totalCount = 0;
int onlineCount = 0;
diff --git a/ycl-server/src/main/java/com/ycl/task/OsdTask.java b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
index eed5164..1eca90f 100644
--- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -67,6 +67,18 @@
*/
public void getOSD() throws ExecutionException, InterruptedException {
log.info("寮�濮嬭幏鍙朞SD");
+// //娴峰悍璁惧娴嬭瘯
+// //鍏ㄦ櫙
+// OSDResult osd1 = HKApi.getOsdByIP("51031140001320359101","51.95.99.112", HKUserName, HKPassword);
+// log.info("娴峰悍鍏ㄦ櫙:{}",osd1);
+// //缁嗚妭
+// OSDResult osd2 = HKApi.getOsdByIP("51031140001321359101","51.95.99.112", HKUserName, HKPassword);
+// log.info("娴峰悍缁嗚妭:{}",osd2);
+// //澶у崕璁惧娴嬭瘯
+// OSDResult osd3 = DHApi.getOsd("51030244001320120201","51.95.4.3", DHUserName, DHPassword);
+// log.info("澶у崕鍏ㄦ櫙:{}",osd3);
+// OSDResult osd4 = DHApi.getOsd("51030244001321120201","51.95.4.3", DHUserName, DHPassword);
+// log.info("澶у崕缁嗚妭:{}",osd4);
//鏌ヤ竴鏈轰竴妗onitor
Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
@@ -157,9 +169,8 @@
osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Unknown);
}
//妫�鏌ラ�氶亾鍚嶆槸鍚︽纭�
- //鏍¢獙瑙勫垯锛岃繖閲屾殏鏃朵笉姣旇緝鍏ㄦ櫙鍜岀粏鑺備袱瀛椼��
if (!StringUtils.isEmpty(osdResult.getName()) && !StringUtils.isEmpty(monitor.getName())) {
- if (monitor.getName().equals(osdResult.getName()) || monitor.getName().replace("鍏ㄦ櫙", "缁嗚妭").equals(osdResult.getName()) || monitor.getName().replace("缁嗚妭", "鍏ㄦ櫙").equals(osdResult.getName())) {
+ if (monitor.getName().equals(osdResult.getName())) {
osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
osdCheckResult.setOsdName(osdResult.getName());
} else {
diff --git a/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java b/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
index fa9788b..083a301 100644
--- a/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
+++ b/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
@@ -90,7 +90,7 @@
public OSDResult call() throws Exception {
if (DeviceType.HK.getType().equals(monitor.getDeviceType())) {
//娴峰悍
- OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
+ OSDResult osd = HKApi.getOsdByIP(monitor.getSerialNumber(),monitor.getIp(), HKUserName, HKPassword);
OSDResult osdResult = checkSuccess(monitor, osd);
if (osdResult!=null) {
return osd;
@@ -99,7 +99,7 @@
}
} else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) {
//澶у崕
- OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
+ OSDResult osd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(), DHUserName, DHPassword);
OSDResult osdResult = checkSuccess(monitor, osd);
if (osdResult!=null) {
return osd;
@@ -123,13 +123,13 @@
private OSDResult tryAllApi(TMonitor monitor) {
//灏濊瘯娴峰悍鐨刟pi
- OSDResult hkosd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
+ OSDResult hkosd = HKApi.getOsdByIP(monitor.getSerialNumber(),monitor.getIp(), HKUserName, HKPassword);
if (hkosd != null) {
hkosd.setSerialNumber(monitor.getSerialNumber());
return hkosd;
}
//灏濊瘯澶у崕鐨刟pi
- OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
+ OSDResult dhosd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(), DHUserName, DHPassword);
if (dhosd != null) {
dhosd.setSerialNumber(monitor.getSerialNumber());
return dhosd;
--
Gitblit v1.8.0