From 64efb660b2c119c00432434c0f651f8996483f18 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 21 二月 2025 15:51:13 +0800 Subject: [PATCH] OSD大华数据格式+数据中心重点标签统计数 --- ycl-server/src/main/java/com/ycl/api/HK/HKApi.java | 161 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 105 insertions(+), 56 deletions(-) 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 1360fea..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 @@ -1,23 +1,23 @@ package com.ycl.api.HK; import com.ycl.platform.domain.result.OSDResult; +import com.ycl.utils.StringUtils; import constant.ApiConstants; +import enumeration.DeviceType; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; +import org.w3c.dom.*; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -33,88 +33,137 @@ @Slf4j public class HKApi { - //TODO:楠岃瘉閿欒鐨勬儏鍐� - 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(); - CloseableHttpClient httpClient = HttpClients.createDefault(); String hostUrl = "http://" + ip; try { //鑾峰彇OSD - HttpResponse OSDResponse = getHttpResponse(httpClient, hostUrl + ApiConstants.HK_OSD_PATH, userName, password); - String OSDString = EntityUtils.toString(OSDResponse.getEntity(), "utf-8"); + /** + * 閫氳繃鍥芥爣鍊掓暟绗竷浣嶅垽鏂�氶亾 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 - parseXMl(OSDString, "TextOverlay", "displayText", osdResult, null); + parseXMl(OSDString, "TextOverlay", "displayText", osdResult, null, ip); //鑾峰彇Time - HttpResponse TimeResponse = getHttpResponse(httpClient, hostUrl + ApiConstants.HK_OSD_TIME, userName, password); + String timeString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_TIME, userName, password); + if (timeString == null) return null; + Date date = new Date(); - String timeString = EntityUtils.toString(TimeResponse.getEntity(), "utf-8"); //瑙f瀽xml - parseXMl(timeString, "Time", "localTime", osdResult, date); + parseXMl(timeString, "Time", "localTime", osdResult, date, ip); + osdResult.setDeviceBrand(DeviceType.HK.getType()); } catch (Exception e) { - log.error(e.getMessage()); return null; } return osdResult; } - private static void parseXMl(String OSDString, String tagName1, String tagName2, OSDResult osdResult, Date date) throws ParserConfigurationException, SAXException, IOException { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new InputSource(new StringReader(OSDString))); - document.getDocumentElement().normalize(); - NodeList nodeList = document.getElementsByTagName(tagName1); - for (int i = 0; i < nodeList.getLength(); i++) { - Node node = nodeList.item(i); - if (node.getNodeType() == Node.ELEMENT_NODE && "TextOverlay".equals(tagName1)) { - Element element = (Element) node; - String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent(); - log.info("TEXT : " + textContent); - if (i == 0) { - osdResult.setOSD1(textContent); - } else if (i == 1) { - osdResult.setOSD2(textContent); - } else if (i == 2) { - osdResult.setOSD3(textContent); - } else if (i == 3) { - osdResult.setName(textContent); - } else if (i == 4) { - osdResult.setOSD4(textContent); + private static void parseXMl(String OSDString, String tagName1, String tagName2, OSDResult osdResult, Date date, String ip) throws ParserConfigurationException, SAXException, IOException { + + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.parse(new InputSource(new StringReader(OSDString))); + document.getDocumentElement().normalize(); + NodeList nodeList = document.getElementsByTagName(tagName1); + for (int i = 0; i < nodeList.getLength(); i++) { + Node node = nodeList.item(i); + if (node.getNodeType() == Node.ELEMENT_NODE && "TextOverlay".equals(tagName1)) { + Element element = (Element) node; + String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent(); + // log.info("TEXT : " + textContent); + if (i == 0) { + osdResult.setOSD1(textContent); + } else if (i == 1) { + osdResult.setOSD2(textContent); + } else if (i == 2) { + osdResult.setOSD3(textContent); + } else if (i == 3) { + osdResult.setName(textContent); + } else if (i == 4) { + osdResult.setOSD4(textContent); + } + } else if (node.getNodeType() == Node.ELEMENT_NODE && "Time".equals(tagName1)) { + Element element = (Element) node; + String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent(); + // log.info("TEXT : " + textContent); + osdResult.setCheckTime(date); + OffsetDateTime dateTime = OffsetDateTime.parse(textContent); + // 灏哋ffsetDateTime杞崲涓篋ate瀵硅薄 + osdResult.setOsdTime(Date.from(dateTime.toInstant())); } - } else if (node.getNodeType() == Node.ELEMENT_NODE && "Time".equals(tagName1)) { - Element element = (Element) node; - String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent(); - log.info("TEXT : " + textContent); - osdResult.setCheckTime(date); - OffsetDateTime dateTime = OffsetDateTime.parse(textContent); - // 灏哋ffsetDateTime杞崲涓篋ate瀵硅薄 - osdResult.setOsdTime(Date.from(dateTime.toInstant())); } + } catch (Exception e) { + log.error("ip:{}鍑虹幇寮傚父,{}", ip, e.getMessage()); + throw new RuntimeException(e.getMessage()); } } - private static HttpResponse getHttpResponse(CloseableHttpClient httpClient, String url, String userName, String password) throws URISyntaxException, IOException { + private static String getHttpResponse(String url, String userName, String password) throws URISyntaxException, IOException { CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(new URI(url).getHost(), new URI(url).getPort()), new UsernamePasswordCredentials(userName, password)); + // 缁戝畾鍑瘉鎻愪緵鑰呭埌HttpClient + CloseableHttpClient httpClient = HttpClientBuilder.create() + .setDefaultCredentialsProvider(credsProvider) + .build(); HttpGet httpGet = new HttpGet(url); // 璁剧疆璇锋眰閰嶇疆 RequestConfig requestConfig = RequestConfig.custom() - .setConnectTimeout(2000) - .setSocketTimeout(2000) + .setConnectTimeout(3000) + .setSocketTimeout(3000) .build(); httpGet.setConfig(requestConfig); - - // 缁戝畾鍑瘉鎻愪緵鑰呭埌HttpClient - httpClient = HttpClientBuilder.create() - .setDefaultCredentialsProvider(credsProvider) - .build(); - try { - return httpClient.execute(httpGet); - } catch (Exception e){ - throw new RuntimeException("娴峰悍OSD鎵ц澶辫触"); + try (CloseableHttpResponse response = httpClient.execute(httpGet)) { + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == 200) { + return EntityUtils.toString(response.getEntity(), "utf-8"); + } else { + return null; + } + } catch (Exception e) { + throw new RuntimeException("娴峰悍OSD鎵ц澶辫触", e); } + } } -- Gitblit v1.8.0