From 6da8bd9bf08a75e3d026505f23c008f3b8188c22 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期三, 13 十一月 2024 18:52:39 +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