From 4d25380fe077f82b45f00e83ecb6d93e76c95554 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 29 八月 2024 16:27:12 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-server/src/main/java/com/ycl/task/CarTask.java | 24 - ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java | 13 ycl-server/src/main/java/com/ycl/platform/controller/SynPY/SynPYController.java | 4 ycl-common/src/main/java/constant/ApiConstants.java | 13 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java | 102 ++++++ ycl-server/src/main/resources/application-prod.yml | 11 ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java | 2 ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java | 61 ++ ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java | 1 ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java | 40 - ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java | 14 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | 16 ycl-server/src/main/java/com/ycl/platform/service/UYErrorTypeCheckService.java | 2 ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java | 6 ycl-server/src/main/resources/application-dev.yml | 18 ycl-pojo/src/main/java/com/ycl/platform/domain/result/OSDResult.java | 44 ++ /dev/null | 145 -------- ycl-server/src/main/java/com/ycl/task/FaceTask.java | 20 ycl-common/src/main/java/enumeration/general/AreaDeptEnum.java | 12 ycl-server/src/main/java/com/ycl/api/HK/HKApi.java | 129 +++++-- ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java | 17 + ycl-server/src/main/java/com/ycl/task/OsdTask.java | 229 +++++++++++++ ycl-server/src/main/java/com/ycl/task/VideoTask.java | 33 - ycl-server/src/main/java/com/ycl/task/UYTask.java | 35 -- ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java | 5 25 files changed, 633 insertions(+), 363 deletions(-) diff --git a/ycl-common/src/main/java/constant/ApiConstants.java b/ycl-common/src/main/java/constant/ApiConstants.java index 436c6ae..ea06696 100644 --- a/ycl-common/src/main/java/constant/ApiConstants.java +++ b/ycl-common/src/main/java/constant/ApiConstants.java @@ -59,10 +59,10 @@ public final static Integer UY_OnlineStatus_Offline = -1; public final static Integer UY_OnlineStatus_Unknown = 0; - //Python鏍¢獙鏍囪瘑 - public final static Integer PY_OSD_Correct = 1; - public final static Integer PY_OSD_Unknown = 0; - public final static Integer PY_OSD_Error = -1; + //OSD鏍¢獙鏍囪瘑 + public final static Integer OSD_Correct = 1; + public final static Integer OSD_Unknown = 0; + public final static Integer OSD_Error = -1; //鑷础琛屾斂缂栫爜 public final static String AreaNo = "5103"; @@ -70,7 +70,10 @@ //鐪佸巺鍓嶇紑 public final static String Province = "Province_"; - + //娴峰悍璁块棶OSD璺緞 + public final static String HK_OSD_PATH = "/ISAPI/System/Video/inputs/channels/1/overlays"; + //娴峰悍璁块棶鏃堕棿璺緞 + public final static String HK_OSD_TIME = "/ISAPI/System/time"; } diff --git a/ycl-common/src/main/java/enumeration/general/AreaDeptEnum.java b/ycl-common/src/main/java/enumeration/general/AreaDeptEnum.java index 5ec96c3..4e8d169 100644 --- a/ycl-common/src/main/java/enumeration/general/AreaDeptEnum.java +++ b/ycl-common/src/main/java/enumeration/general/AreaDeptEnum.java @@ -7,13 +7,13 @@ */ @Getter public enum AreaDeptEnum { - ZLJQ("鑷祦浜曞尯", "510302", 201), - GJQ("璐′簳鍖�", "510303", 202), - DAQ("澶у畨鍖�", "510304", 102), - YTQ("娌挎哗鍖�", "510311", 211), + ZLJQ("鑷祦浜�", "510302", 201), + GJQ("璐′簳", "510303", 202), + DAQ("澶у畨", "510304", 102), + YTQ("娌挎哗", "510311", 211), RX("鑽e幙", "510321", 203), - FSX("瀵岄『鍘�", "510322", 101), - GXQ("楂樻柊鍖�", "510399", 210), + FSX("瀵岄『", "510322", 101), + GXQ("楂樻柊", "510399", 210), ; private final String name; diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java index 4bba239..797ac77 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java @@ -1,11 +1,9 @@ package com.ycl.platform.base; import com.fasterxml.jackson.annotation.JsonFormat; -import enumeration.ContractStatus; import lombok.Data; import java.util.Date; -import java.util.List; /** * 鍩虹鍝嶅簲 diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java index 4b6c13f..a233222 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java @@ -2,6 +2,7 @@ import annotation.Excel; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.system.entity.BaseEntity; import lombok.Data; diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/OSDResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/OSDResult.java new file mode 100644 index 0000000..ade1021 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/OSDResult.java @@ -0,0 +1,44 @@ +package com.ycl.platform.domain.result; + +import lombok.Data; + +import java.util.Date; + +@Data +public class OSDResult { + /** + * 璁惧缂栧彿 + */ + private String serialNumber; + /** + * 璁惧鏃堕棿 + */ + private Date osdTime; + /** + * 妫�娴嬫椂闂� + */ + private Date checkTime; + //osd鍙充笅鎸夐『搴� + /** + * 鐪佷唤 + */ + private String OSD1; + /** + * 鍩庡競 + */ + private String OSD2; + /** + * 鍖哄幙 + */ + private String OSD3; + /** + * 閫氶亾鍚嶏紙monitor鐨勮澶囧悕锛� + */ + private String name; + + //osd宸︿笅 + /** + * 鍥恒�佹灙銆佽矾銆佽タ鍖� + */ + private String OSD4; +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java new file mode 100644 index 0000000..83a1247 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java @@ -0,0 +1,102 @@ +package com.ycl.platform.domain.result.UY; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ycl.platform.domain.result.BaseResult; +import lombok.Data; +import org.springframework.data.mongodb.core.annotation.Collation; + +import java.util.Date; + +/** + * python鑾峰彇osd鏁版嵁 + * + * @author锛歺p + * @date锛�2024/8/8 19:35 + */ +@Data +@Collation("osd_check_result") +public class OsdCheckResult extends BaseResult { + + /** + * 鍥芥爣鐮� + */ + private String deviceNo; + + /** + * 璁惧绫诲瀷 + */ + private String deviceType; + + /** + * ip + */ + private String ip; + + /** + * 妫�娴嬫椂闂� + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkTime; + + /** + * 鏍囨敞鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date setTime; + + /** + * osd閫氶亾鍚� + */ + private String osdName; + /** + * osd鐪� + */ + private String osdProvince; + + /** + * osd甯� + */ + private String osdCity; + + /** + * osd鍖� + */ + private String osdPart; + + /** + * osd 宸︿笅瑙� + */ + private String osdLB; + + /** + * osdTimeCorrect鏃堕棿鏄惁姝g‘ + */ + private Integer osdTimeCorrect; + + /** + * osd閫氶亾鍚嶆槸鍚︽纭� + */ + private Integer osdNameCorrect; + /** + * osd鐪佹槸鍚︽纭� + */ + private Integer osdProvinceCorrect; + + /** + * osd甯傛槸鍚︽纭� + */ + private Integer osdCityCorrect; + + /** + * osd鍖烘槸鍚︽纭� + */ + private Integer osdPartCorrect; + + /** + * osd宸︿笅瑙掓槸鍚︽纭� + */ + private Integer osdLbCorrect; + + + +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/PyOsdResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/PyOsdResult.java deleted file mode 100644 index defd2ee..0000000 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/PyOsdResult.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.ycl.platform.domain.result.UY; - -import com.ycl.platform.domain.result.BaseResult; -import lombok.Data; -import org.springframework.data.mongodb.core.annotation.Collation; - -/** - * python鑾峰彇osd鏁版嵁 - * - * @author锛歺p - * @date锛�2024/8/8 19:35 - */ -@Data -@Collation("py_osd") -public class PyOsdResult extends BaseResult { - - /** - * 鍥芥爣鐮� - */ - private String deviceNo; - - /** - * 鏉嗕綋缂栫爜 - */ - private String bodyNo; - - /** - * 璁惧绫诲瀷 - */ - private String deviceType; - - /** - * 鏃堕棿鏍煎紡 - */ - private String timeFormat; - - private String ODS1; - - private String ODS2; - - /** - * ip - */ - private String ip; - - /** - * 鐪佸巺鑰冩牳 - */ - private String provinceCheck; - - /** - * 鍏畨閮ㄨ�冩牳 - */ - private String policeCheck; - - /** - * 鏂癐P - */ - private String newIp; - - /** - * ip鐘舵�� - */ - private String ipStatus; - - /** - * 妫�娴嬫椂闂� - */ - private String checkTime; - - /** - * OSD妫�娴嬬姸鎬� - */ - private String checkStatus; - - /** - * 鏍囨敞鏃堕棿 - */ - private String setTime; - - /** - * osd1鐪� - */ - private String osd1Province; - - /** - * osd1甯� - */ - private String osd1City; - - /** - * osd1鍖� - */ - private String osd1Part; - - /** - * osd1 宸︿笅瑙� - */ - private Integer osd1LB; - - /** - * osd1_osd - */ - private Integer osd1OSD; - - /** - * osd1_鏃堕棿鏍煎紡鏄惁姝g‘ - */ - private Integer osd1TimeFormat; - - /** - * osd1_鐪佽缃� - */ - private String osd1ProvinceSet; - - /** - * osd1_甯傝缃� - */ - private String osd1CitySet; - - /** - * osd1_鍖鸿缃槸鍚� - */ - private String osd1PartSet; - - /** - * osd1_osd宸︿笅瑙掕缃槸鍚︽纭� - */ - private String osd1OsdLbSet; - - /** - * osd1_osd璁剧疆 - */ - private Integer osd1OsdSet; - - /** - * osd1 鏃堕棿鏍煎紡 - */ - private String osd1TimeFormatSet; - - /** - * ntp_server - */ - private String ntpServer; -} 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 5ad0cbb..6064fcb 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 @@ -9,13 +9,17 @@ import com.ycl.api.DH.lib.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY; import com.ycl.api.DH.lib.ToolKits; import com.ycl.api.DH.lib.structure.*; +import com.ycl.platform.domain.result.OSDResult; import com.ycl.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Date; import static com.ycl.api.DH.lib.NetSDKLib.NET_EM_OSD_BLEND_TYPE.NET_EM_OSD_BLEND_TYPE_MAIN; import static com.ycl.api.DH.lib.enumeration.NET_EM_CFG_OPERATE_TYPE.NET_EM_CFG_CUSTOMTITLE; @@ -159,40 +163,69 @@ return bRet; } - public static String getOsdTime() { + public static OSDResult getOsd() { + OSDResult osdResult = new OSDResult(); NetSDKLib.NET_TIME deviceTime = new NetSDKLib.NET_TIME(); - if (!netsdk.CLIENT_QueryDeviceTime(m_hLoginHandle, deviceTime, 3000)) { - System.err.println("CLIENT_QueryDeviceTime Failed!" + ToolKits.getErrorCodePrint()); + log.error("CLIENT_QueryDeviceTime Failed!" + ToolKits.getErrorCodePrint()); return null; } + Date checkTime = new Date(); + osdResult.setCheckTime(checkTime); String date = deviceTime.toStringTime(); date = date.replace("/", "-"); - log.info("鎴愬姛鑾峰彇妫�娴媜sd鏃堕棿" + date); - + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + Date time = simpleDateFormat.parse(date); + osdResult.setOsdTime(time); + } catch (ParseException e) { + log.error("鏃堕棿瑙f瀽澶辫触"); + } NET_CFG_GBMODE_INFO reserve = new NET_CFG_GBMODE_INFO(); NET_CFG_GBMODE_INFO osdInfo = new NET_CFG_GBMODE_INFO(); osdInfo.write(); boolean b = netsdk.CLIENT_GetConfig(m_hLoginHandle, NET_EM_CFG_GBMODE, 0, osdInfo.getPointer(), osdInfo.size(), 3000, reserve.getPointer()); if (!b) { - log.info(("CLIENT_GetConfig Failed!" + ToolKits.getErrorCodePrint())); + log.error("CLIENT_GetConfig Failed!" + ToolKits.getErrorCodePrint()); + return null; } else { osdInfo.read(); NET_GBMODE_CUSTOMTITLE_INFO[] stuCustomTitle = osdInfo.stuCustomTitle; for (NET_GBMODE_CUSTOMTITLE_INFO title : stuCustomTitle) { - NET_TITLE_OSD_INFO[] stuOSD = title.stuOSD; - for (NET_TITLE_OSD_INFO osd : stuOSD) { - String osdStr = null; - osdStr = new String(osd.szText, StandardCharsets.UTF_8); - if (!StringUtils.isEmpty(osdStr)) { - log.info("osd浜岀骇鏂囨湰" + osdStr); + String position = new String(title.szPositon, StandardCharsets.UTF_8).trim(); + if("LeftDown".equals(position)) { + NET_TITLE_OSD_INFO[] stuOSD = title.stuOSD; + for (NET_TITLE_OSD_INFO osd : stuOSD) { + String osdStr = null; + osdStr = new String(osd.szText, StandardCharsets.UTF_8); + if (!StringUtils.isEmpty(osdStr)) { + osdResult.setOSD4(osdStr); + } + } + }else if("RightDown".equals(position)){ + NET_TITLE_OSD_INFO[] stuOSD = title.stuOSD; + int num = 0; + for (NET_TITLE_OSD_INFO osd : stuOSD) { + String osdStr = null; + osdStr = new String(osd.szText, StandardCharsets.UTF_8); + if (!StringUtils.isEmpty(osdStr)) { + if(num ==0){ + osdResult.setOSD1(osdStr); + }else if(num ==1){ + osdResult.setOSD2(osdStr); + }else if(num ==2){ + osdResult.setOSD3(osdStr); + }else if(num ==3){ + osdResult.setName(osdStr); + } + } + num++; } } } } - - return date; + return osdResult; } } 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 new file mode 100644 index 0000000..83a6a5c --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java @@ -0,0 +1,17 @@ +package com.ycl.api.DH.utils; + +import com.ycl.api.DH.module.LoginModule; +import com.ycl.platform.domain.result.OSDResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; + +@Slf4j +public class DHApi { + + public static OSDResult getOsd(String ip, String userName, String password){ + LoginModule.login(ip, 80, userName, password); + OSDResult osd = LoginModule.getOsd(); + LoginModule.logout(); + 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 1b4e116..1360fea 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,65 +1,120 @@ package com.ycl.api.HK; +import com.ycl.platform.domain.result.OSDResult; +import constant.ApiConstants; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; -import org.apache.http.auth.Credentials; 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.HttpGet; -import org.apache.http.impl.client.DefaultHttpClient; +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.xml.sax.InputSource; +import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; import java.io.StringReader; import java.net.URI; +import java.net.URISyntaxException; +import java.time.OffsetDateTime; +import java.util.Date; @Slf4j public class HKApi { - public static void getOsdByIP(String ip) { - DefaultHttpClient httpclient = new DefaultHttpClient(); + //TODO:楠岃瘉閿欒鐨勬儏鍐� + public static OSDResult getOsdByIP(String ip, String userName, String password) { + OSDResult osdResult = new OSDResult(); + CloseableHttpClient httpClient = HttpClients.createDefault(); String hostUrl = "http://" + ip; - // 鑾峰彇鐒﹁窛 - String url = hostUrl + "/ISAPI/System/Video/inputs/channels/1/overlays"; - URI serverURI = null; try { - serverURI = new URI(url); - HttpGet httpGet = new HttpGet(url); - String username = "admin"; - String password = "zg@2024dx"; - Credentials creds = new UsernamePasswordCredentials(username, - password); - httpclient.getCredentialsProvider(). - - setCredentials( - new AuthScope(serverURI.getHost(), serverURI. - - getPort()), (Credentials) creds); - - HttpResponse response = httpclient.execute(httpGet); - - String resultString = EntityUtils.toString(response.getEntity(), "utf-8"); - log.info(resultString); + //鑾峰彇OSD + HttpResponse OSDResponse = getHttpResponse(httpClient, hostUrl + ApiConstants.HK_OSD_PATH, userName, password); + String OSDString = EntityUtils.toString(OSDResponse.getEntity(), "utf-8"); //瑙f瀽xml - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new InputSource(new StringReader(resultString))); - document.getDocumentElement().normalize(); - NodeList nodeList = document.getElementsByTagName("TextOverlay"); - for (int i = 0; i < nodeList.getLength(); i++) { - Node node = nodeList.item(i); - if (node.getNodeType() == Node.ELEMENT_NODE) { - Element element = (Element) node; - log.info("TEXT : " + element.getElementsByTagName("displayText").item(0).getTextContent()); - } - } + parseXMl(OSDString, "TextOverlay", "displayText", osdResult, null); + //鑾峰彇Time + HttpResponse TimeResponse = getHttpResponse(httpClient, hostUrl + ApiConstants.HK_OSD_TIME, userName, password); + Date date = new Date(); + String timeString = EntityUtils.toString(TimeResponse.getEntity(), "utf-8"); + //瑙f瀽xml + parseXMl(timeString, "Time", "localTime", osdResult, date); } catch (Exception e) { - e.printStackTrace(); + 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); + } + } 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())); + } + } + } + + private static HttpResponse getHttpResponse(CloseableHttpClient httpClient, 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)); + + HttpGet httpGet = new HttpGet(url); + + // 璁剧疆璇锋眰閰嶇疆 + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(2000) + .setSocketTimeout(2000) + .build(); + httpGet.setConfig(requestConfig); + + // 缁戝畾鍑瘉鎻愪緵鑰呭埌HttpClient + httpClient = HttpClientBuilder.create() + .setDefaultCredentialsProvider(credsProvider) + .build(); + try { + return httpClient.execute(httpGet); + } catch (Exception e){ + throw new RuntimeException("娴峰悍OSD鎵ц澶辫触"); } } } diff --git a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java index 24d8cdc..80c425b 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java +++ b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java @@ -200,11 +200,8 @@ } //杩斿洖monitor - //TODO:鏃堕棿鍐欐浜� public List<String> getMonitorFromMongo() { - Date date = DateUtils.getDay(2024, 7, 13); - Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); -// Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); + 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); return CollectionUtils.isEmpty(oneMachineFileResults) ? new ArrayList<>() : oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList()); diff --git a/ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java index 54ddecb..b8e8747 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java +++ b/ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java @@ -1,8 +1,7 @@ package com.ycl.calculate; import com.ycl.platform.domain.entity.CheckIndexVideo; -import com.ycl.platform.domain.result.UY.PyOsdResult; -import com.ycl.platform.domain.result.UY.VideoOnlineResult; +import com.ycl.platform.domain.result.UY.OsdCheckResult; import com.ycl.platform.domain.vo.TMonitorVO; import com.ycl.platform.mapper.CheckIndexVideoMapper; import com.ycl.platform.mapper.TMonitorMapper; @@ -32,7 +31,7 @@ */ @Component @Slf4j -public class VideoOsdCalculation extends IndexCalculationServe implements CalculationStrategy<PyOsdResult> { +public class VideoOsdCalculation extends IndexCalculationServe implements CalculationStrategy<OsdCheckResult> { @Autowired private CheckIndexVideoMapper checkIndexVideoMapper; @Autowired @@ -52,14 +51,14 @@ } @Override - public void calculate(List<PyOsdResult> list) { + public void calculate(List<OsdCheckResult> list) { if (CollectionUtils.isEmpty(list)) { log.info("鏁版嵁涓虹┖"); return; } //鑾峰緱鍥芥爣鐮佷负key鐨勮澶噈ap - Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(PyOsdResult::getDeviceNo).collect(Collectors.toList())) + Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(OsdCheckResult::getDeviceNo).collect(Collectors.toList())) .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity())); //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚� List<String> provinceIds = getProvince(); @@ -67,7 +66,7 @@ List<String> important = getImportant(); Map<String, AreaStats> areaStatsMap = new HashMap<>(); - for (PyOsdResult result : list) { + for (OsdCheckResult result : list) { TMonitorVO monitor = monitorMap.get(result.getDeviceNo()); if (monitor == null) continue; @@ -99,7 +98,7 @@ /** * 绱osd鍚堟牸鏁般�佹椂闂村亸宸悎鏍兼暟 */ - private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, PyOsdResult result, List<String> important) { + private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, OsdCheckResult result, List<String> important) { //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats()); stats.totalSites++; @@ -123,27 +122,16 @@ } } - private Boolean checkOsd(PyOsdResult result) { - return ApiConstants.PY_OSD_Correct.equals(result.getOsd1Province()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1City()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1Part()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1LB()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1OSD()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1TimeFormat()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1OsdSet()); + private Boolean checkOsd(OsdCheckResult result) { + return ApiConstants.OSD_Correct.equals(result.getOsdTimeCorrect()) && + ApiConstants.OSD_Correct.equals(result.getOsdNameCorrect()) && + ApiConstants.OSD_Correct.equals(result.getOsdProvinceCorrect()) && + ApiConstants.OSD_Correct.equals(result.getOsdCityCorrect()) && + ApiConstants.OSD_Correct.equals(result.getOsdPartCorrect()); } - private Boolean checkTime(PyOsdResult result) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - // 瑙f瀽鏃堕棿瀛楃涓� - LocalDateTime checkTime = LocalDateTime.parse(result.getCheckTime(), formatter); - LocalDateTime osdTime = LocalDateTime.parse(result.getSetTime(), formatter); - // 璁$畻鏃堕棿宸紙Duration锛� - Duration duration = Duration.between(checkTime, osdTime); - // 灏嗘椂闂村樊杞崲涓虹 - long secondsBetween = duration.getSeconds(); - // 鍒ゆ柇鏃堕棿宸槸鍚﹀湪60绉掍互鍐� - return secondsBetween <= 60; + private Boolean checkTime(OsdCheckResult result) { + return ApiConstants.OSD_Correct.equals(result.getOsdTimeCorrect()); } /** diff --git a/ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java b/ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java index cb5ae8f..cc344d3 100644 --- a/ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java +++ b/ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java @@ -9,6 +9,7 @@ import com.ycl.utils.DateUtils; import constant.ApiConstants; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.util.CollectionUtils; import java.util.ArrayList; @@ -24,6 +25,12 @@ @Slf4j public class HkApiUtil { + @Value("${HK.host}") + public static String host; + @Value("${HK.appKey}") + public static String appKey; + @Value("${HK.appSecret}") + public static String appSecret; /** * 璋冪敤娴峰悍鎺ュ彛 * @@ -35,9 +42,9 @@ public static <T> List<T> sendAPI(String apiUrl, BaseParam params, Class<T> resultType) { // STEP1锛氳缃钩鍙板弬鏁帮紝鏍规嵁瀹為檯鎯呭喌,璁剧疆host appkey appsecret 涓変釜鍙傛暟. - ArtemisConfig.host = "51.92.65.49"; // 骞冲彴鐨刬p绔彛 - ArtemisConfig.appKey = "29555942"; // 瀵嗛挜appkey - ArtemisConfig.appSecret = "t9U7tCplCyYHzQPPL7cH";// 瀵嗛挜appSecret + ArtemisConfig.host = host; // 骞冲彴鐨刬p绔彛 + ArtemisConfig.appKey = appKey; // 瀵嗛挜appkey + ArtemisConfig.appSecret = appSecret;// 瀵嗛挜appSecret // STEP2锛氳缃甇penAPI鎺ュ彛鐨勪笂涓嬫枃 final String ARTEMIS_PATH = "/artemis"; diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/SynPY/SynPYController.java b/ycl-server/src/main/java/com/ycl/platform/controller/SynPY/SynPYController.java index 2270144..dcc4120 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/SynPY/SynPYController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/SynPY/SynPYController.java @@ -1,6 +1,6 @@ package com.ycl.platform.controller.SynPY; -import com.ycl.platform.domain.result.UY.PyOsdResult; +import com.ycl.platform.domain.result.UY.OsdCheckResult; import com.ycl.system.Result; import lombok.RequiredArgsConstructor; import org.springframework.data.mongodb.core.MongoTemplate; @@ -23,7 +23,7 @@ private final MongoTemplate mongoTemplate; @PostMapping("/osd") - public Result pySynOSD(@RequestBody List<PyOsdResult> dataList) { + public Result pySynOSD(@RequestBody List<OsdCheckResult> dataList) { mongoTemplate.insertAll(dataList); return Result.ok(); } diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java index 239924e..f46e204 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java @@ -22,7 +22,7 @@ * @date 2024-03-04 */ @Mapper -public interface TMonitorMapper extends BaseMapper<TMonitor> +public interface TMonitorMapper { /** * 鏌ヨ璁惧璧勪骇 @@ -137,5 +137,7 @@ * @param list * @return */ - int batchUpdateDeviceType(@Param("list") List<TMonitor> list); + int batchUpdateDeviceType(@Param("numbers") List<String> list,@Param("deviceType") Integer deviceType); + + List<TMonitor> selectByNumbers(@Param("numbers")List<String> numbers); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/UYErrorTypeCheckService.java b/ycl-server/src/main/java/com/ycl/platform/service/UYErrorTypeCheckService.java index f06ec06..ce38103 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/UYErrorTypeCheckService.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/UYErrorTypeCheckService.java @@ -37,7 +37,7 @@ * * @param dataList */ - void osdCheck(List<PyOsdResult> dataList); + void osdCheck(List<OsdCheckResult> dataList); // /** // * 瑙嗛鏍囨敞 diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java index 871b5db..ba79174 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java @@ -5,6 +5,7 @@ import com.ycl.platform.service.UYErrorTypeCheckService; import com.ycl.platform.service.WorkOrderService; import com.ycl.utils.uuid.IdUtils; +import constant.ApiConstants; import enumeration.ErrorType; import enumeration.general.WorkOrderStatusEnum; import lombok.RequiredArgsConstructor; @@ -129,19 +130,18 @@ @Override - public void osdCheck(List<PyOsdResult> dataList) { + public void osdCheck(List<OsdCheckResult> dataList) { List<WorkOrder> workOrderList = dataList.stream().map(item -> { WorkOrder workOrder = new WorkOrder(); // osd鏃堕棿 - if (!item.getCheckTime().equals(item.getSetTime())) { + if (!ApiConstants.OSD_Correct.equals(item.getOsdTimeCorrect())) { this.genWorkOrder(workOrder, ErrorType.CLOCK_SKEW, item.getDeviceNo()); } // osd淇℃伅 - if (!"璁剧疆姝g‘".equals(item.getOsd1Province()) - || (!"璁剧疆姝g‘".equals(item.getOsd1City())) - || (!"璁剧疆姝g‘".equals(item.getOsd1Part())) - || (!"璁剧疆姝g‘".equals(item.getOsd1TimeFormat())) - || (!"璁剧疆姝g‘".equals(item.getOsd1OSD())) + if (!ApiConstants.OSD_Correct.equals(item.getOsdProvinceCorrect()) + || (!ApiConstants.OSD_Correct.equals(item.getOsdCityCorrect())) + || (!ApiConstants.OSD_Correct.equals(item.getOsdPartCorrect())) + || (!ApiConstants.OSD_Correct.equals(item.getOsdNameCorrect())) ) { this.genWorkOrder(workOrder, ErrorType.OSD_ERROR, item.getDeviceNo()); } diff --git a/ycl-server/src/main/java/com/ycl/task/CarTask.java b/ycl-server/src/main/java/com/ycl/task/CarTask.java index 26b1c93..cb5c6a6 100644 --- a/ycl-server/src/main/java/com/ycl/task/CarTask.java +++ b/ycl-server/src/main/java/com/ycl/task/CarTask.java @@ -36,12 +36,10 @@ public void siteOnlineTask() { log.info("寮�濮嬭绠楄溅杈嗙偣浣嶅湪绾跨巼鍜岃鍥惧簱瀵规帴绋冲畾鎬�"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭�� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)) + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)) .and("dataType").is(ApiConstants.HK_DataType_CAR)); List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class); CalculationStrategy<SnapshotDataMonitorResult> calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_SiteOnline_ViewStability); @@ -52,12 +50,10 @@ public void deviceSampleTask() { log.info("寮�濮嬭绠楄溅杈嗗崱鍙h澶囨暟鎹瘑鍒噯纭�с�乽rl鍙敤鎬с�佸ぇ鍥惧彲鐢ㄦ��"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻杞﹁締鍗″彛璁惧鏁版嵁璇嗗埆鍑嗙‘鎬с�乽rl鍙敤鎬с�佸ぇ鍥惧彲鐢ㄦ�� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<VehicleDeviceSamplingResult> results = mongoTemplate.find(query, VehicleDeviceSamplingResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_DataAccuracy_Url_PicUsability); calculator.calculate(results); @@ -67,12 +63,10 @@ public void infoAccuracyTask() { log.info("寮�濮嬭绠楄溅杈嗗崱鍙d俊鎭噰闆嗗噯纭巼"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻杞﹁締鍗″彛淇℃伅閲囬泦鍑嗙‘鐜� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<CrossDetailResult> results = mongoTemplate.find(query, CrossDetailResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_InfoAccuracy); calculator.calculate(results); @@ -82,12 +76,10 @@ public void snapShopDelayTask() { log.info("寮�濮嬭绠楄溅杈嗘姄鎷嶆暟鎹笂浼犲強鏃舵��"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻杞﹁締鎶撴媿鏁版嵁涓婁紶鍙婃椂鎬� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)) + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)) .and("dataType").is(ApiConstants.HK_DataType_CAR)); List<SnapshotDelayMonitorResult> results = mongoTemplate.find(query, SnapshotDelayMonitorResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_SnapshotDelay); @@ -98,12 +90,10 @@ public void snapShopDataIntegrity() { log.info("寮�濮嬭绠楄溅杈嗘暟鎹姄鎷嶅畬鏁存��"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻杞﹁締鏁版嵁鎶撴媿瀹屾暣鎬� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<DataIntegrityMonitoringResult> results = mongoTemplate.find(query, DataIntegrityMonitoringResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_DataIntegrity); calculator.calculate(results); @@ -113,12 +103,10 @@ public void clockAccuracyTask() { log.info("寮�濮嬭绠楄溅杈嗗崱鍙h澶囨椂閽熷噯纭��"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻杞﹁締鍗″彛璁惧鏃堕挓鍑嗙‘鎬� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<VehicleDeviceInspectionResult> results = mongoTemplate.find(query, VehicleDeviceInspectionResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_ClockAccuracy); calculator.calculate(results); diff --git a/ycl-server/src/main/java/com/ycl/task/FaceTask.java b/ycl-server/src/main/java/com/ycl/task/FaceTask.java index cf4ba45..c04538e 100644 --- a/ycl-server/src/main/java/com/ycl/task/FaceTask.java +++ b/ycl-server/src/main/java/com/ycl/task/FaceTask.java @@ -37,12 +37,10 @@ public void siteOnlineTask() { log.info("寮�濮嬭绠椾汉鑴哥偣浣嶅湪绾跨巼鍜岃鍥惧簱瀵规帴绋冲畾鎬�"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭�� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)) + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)) .and("dataType").is(ApiConstants.HK_DataType_FACE)); List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_SiteOnline_ViewStability); @@ -52,12 +50,10 @@ public void deviceSampleTask() { log.info("寮�濮嬭绠椾汉鑴稿浘鐗囧悎鏍肩巼銆佸ぇ鍥惧彲鐢ㄦ��"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻浜鸿劯鍥剧墖鍚堟牸鐜囥�佸ぇ鍥惧彲鐢ㄦ�� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<FaceDeviceSamplingResult> results = mongoTemplate.find(query, FaceDeviceSamplingResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_DataAccuracy_PicUsability); calculator.calculate(results); @@ -66,12 +62,10 @@ public void infoAccuracyTask(){ log.info("寮�濮嬭绠椾汉鑴稿崱鍙d俊鎭噰闆嗗噯纭巼"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻浜鸿劯鍗″彛淇℃伅閲囬泦鍑嗙‘鐜� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<MonitoringDetailResult> results = mongoTemplate.find(query, MonitoringDetailResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_InfoAccuracy); calculator.calculate(results); @@ -80,12 +74,10 @@ public void snapShopDelay(){ log.info("寮�濮嬭绠椾汉鑴告姄鎷嶆暟鎹笂浼犲強鏃舵��"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻浜鸿劯鎶撴媿鏁版嵁涓婁紶鍙婃椂鎬� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)) + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)) .and("dataType").is(ApiConstants.HK_DataType_FACE)); List<SnapshotDelayMonitorResult> results = mongoTemplate.find(query, SnapshotDelayMonitorResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_SnapshotDelay); @@ -95,12 +87,10 @@ public void clockAccuracyTask() { log.info("寮�濮嬭绠椾汉鑴歌澶囨椂閽熷噯纭��"); Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻浜鸿劯璁惧鏃堕挓鍑嗙‘鎬� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<FaceDeviceInspectionResult> results = mongoTemplate.find(query, FaceDeviceInspectionResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_ClockAccuracy); calculator.calculate(results); 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 0e75f94..511633b 100644 --- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java +++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java @@ -1,18 +1,239 @@ package com.ycl.task; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mongodb.client.result.DeleteResult; import com.ycl.api.DH.module.LoginModule; +import com.ycl.api.DH.utils.DHApi; import com.ycl.api.HK.HKApi; +import com.ycl.platform.domain.entity.TMonitor; +import com.ycl.platform.domain.result.OSDResult; +import com.ycl.platform.domain.result.UY.MonitorQualifyResult; +import com.ycl.platform.domain.result.UY.OsdCheckResult; +import com.ycl.platform.mapper.TMonitorMapper; +import com.ycl.platform.service.UYErrorTypeCheckService; +import com.ycl.utils.DateUtils; +import com.ycl.utils.StringUtils; +import constant.ApiConstants; +import enumeration.DeviceType; +import enumeration.general.AreaDeptEnum; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; +import java.util.stream.Collectors; @Slf4j @Component("OsdTask") public class OsdTask { + @Value("${HK.userName}") + public String HKUserName; + @Value("${HK.password}") + public String HKPassword; + @Value("${DH.userName}") + public String DHUserName; + @Value("${DH.password}") + public String DHPassword; + @Autowired + private MongoTemplate mongoTemplate; + @Autowired + private TMonitorMapper monitorMapper; + @Autowired + private UYErrorTypeCheckService uyErrorTypeCheckService; + + private static final ExecutorService executorService = new ThreadPoolExecutor(8, + 24, + 5000, + TimeUnit.SECONDS, + new ArrayBlockingQueue<>(10), + new ThreadPoolExecutor.CallerRunsPolicy() + ); + + /** + * 閫氳繃鏌ongoDB姣忔棩涓�鏈轰竴妗f暟鎹幏鍙栬澶噄p + * 閫氳繃璁惧ip銆佸搧鐗岃皟鐢ㄤ笉鍚宎pi鑾峰彇osd淇℃伅 + * 姣斿mongoDB涓�鏈轰竴妗d俊鎭紝鏁寸悊鎴恟esult瀛樺叆mongo + * 鍚屾鍝佺墝鍒癿ysql + */ public void getOSD() { - HKApi.getOsdByIP("51.95.68.80"); - long loginId = LoginModule.login("51.95.67.189", 80, "admin", "zg@2024dx"); - String osdTime = LoginModule.getOsdTime(); - LoginModule.logout(); + //鎵归噺淇敼娴峰悍鍝佺墝闆嗗悎 + List<String> hkList = new ArrayList<>(); + //鎵归噺淇敼澶у崕鍝佺墝闆嗗悎 + List<String> dhList = new ArrayList<>(); + //鎵归噺淇敼瀹囪鍝佺墝闆嗗悎 + List<String> ysList = new ArrayList<>(); + List<OSDResult> osdResultList = new ArrayList<>(); + //鏌ヤ竴鏈轰竴妗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); + //闇�瑕佽�冩牳鐨勬暟鎹� + List<String> serialNumbers = oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList()); + + List<TMonitor> monitors = monitorMapper.selectByNumbers(serialNumbers); + for (TMonitor monitor : monitors) { + executorService.submit(() -> { + if (DeviceType.HK.getType().equals(monitor.getDeviceType())) { + //娴峰悍鍝佺墝 + OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword); + if (checkSuccess(osdResultList, monitor, osd)) return; + } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) { + //澶у崕鍝佺墝 + OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword); + if (checkSuccess(osdResultList, monitor, osd)) return; + } else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) { + //TODO锛氬畤瑙哸pi + } + //鏈煡鍝佺墝鎴栬�卆pi璋冪敤澶辫触锛屾尐涓墽琛屾墍鏈塧pi + OSDResult osd = tryAllApi(monitor, hkList, dhList, ysList); + if (osd != null) { + synchronized (osdResultList) { + osdResultList.add(osd); + } + } + }); + } + executorService.shutdown(); + //缁撴潫api鎵ц锛屽紑濮嬫牎楠� + List<OsdCheckResult> checkResults = new ArrayList<>(); + Map<String, TMonitor> monitorMap = monitors.stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); + for (OSDResult osdResult : osdResultList) { + TMonitor monitor = monitorMap.get(osdResult.getSerialNumber()); + //灏佽OsdCheckResult + OsdCheckResult osdCheckResult = getOsdCheckResult(osdResult, monitor); + checkCorrect(osdResult, monitor, osdCheckResult); + checkResults.add(osdCheckResult); + } + //缁撴灉瀛樺叆mongo + if(CollectionUtils.isEmpty(checkResults)){ + //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎 + Query pyQuery = new Query(Criteria + .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); + DeleteResult result = mongoTemplate.remove(pyQuery, OsdCheckResult.class); + //瀛樻斁鍦╩ongo涓� + mongoTemplate.insertAll(checkResults); + // 宸ュ崟鐢熸垚 + uyErrorTypeCheckService.osdCheck(checkResults); + } + //淇敼鏁版嵁搴撳搧鐗� + if(!CollectionUtils.isEmpty(hkList)){ + monitorMapper.batchUpdateDeviceType(hkList,DeviceType.HK.getType()); + } + if(!CollectionUtils.isEmpty(dhList)){ + monitorMapper.batchUpdateDeviceType(dhList,DeviceType.DH.getType()); + } + //TODO:瀹囪 + log.info("缁撴潫鑾峰彇OSD"); + } + + private OsdCheckResult getOsdCheckResult(OSDResult osdResult, TMonitor monitor) { + OsdCheckResult osdCheckResult = new OsdCheckResult(); + osdCheckResult.setDeviceNo(osdResult.getSerialNumber()); + osdCheckResult.setIp(monitor.getIp()); + osdCheckResult.setDeviceType(monitor.getCameraFunType()); + osdCheckResult.setCheckTime(osdResult.getCheckTime()); + osdCheckResult.setSetTime(osdResult.getOsdTime()); + osdCheckResult.setOsdProvince(osdResult.getOSD1()); + osdCheckResult.setOsdCity(osdResult.getOSD2()); + osdCheckResult.setOsdPart(osdResult.getOSD3()); + osdCheckResult.setOsdLB(osdResult.getOSD4()); + osdCheckResult.setOsdName(osdResult.getName()); + return osdCheckResult; + } + + private void checkCorrect(OSDResult osdResult, TMonitor monitor, OsdCheckResult osdCheckResult) { + //妫�鏌ユ椂闂存槸鍚︽纭� + if (osdResult.getCheckTime() != null && osdResult.getOsdTime() != null) { + long checkTime = osdResult.getCheckTime().getTime(); + long osdTime = osdResult.getOsdTime().getTime(); + long timeDiff = (checkTime - osdTime) / 1000; + if (timeDiff <=60) { + osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Correct); + } else { + osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Error); + } + } + //妫�鏌ラ�氶亾鍚嶆槸鍚︽纭� + if (!StringUtils.isEmpty(osdResult.getName()) && !StringUtils.isEmpty(monitor.getName())) { + if (monitor.getName().equals(osdResult.getName())) { + osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct); + } else { + osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Error); + } + } + //妫�鏌ョ渷鏄惁姝g‘ + if (!StringUtils.isEmpty(osdResult.getOSD1())) { + if ("鍥涘窛".equals(osdResult.getOSD1())) { + osdCheckResult.setOsdProvinceCorrect(ApiConstants.OSD_Correct); + } else { + osdCheckResult.setOsdProvinceCorrect(ApiConstants.OSD_Error); + } + } + //妫�鏌ュ競鏄惁姝g‘ + if (!StringUtils.isEmpty(osdResult.getOSD2())) { + if ("鑷础".equals(osdResult.getOSD2())) { + osdCheckResult.setOsdCityCorrect(ApiConstants.OSD_Correct); + } else { + osdCheckResult.setOsdCityCorrect(ApiConstants.OSD_Error); + } + } + //妫�鏌ュ尯鍘挎槸鍚︽纭� + if (!StringUtils.isEmpty(osdResult.getOSD3())) { + AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(monitor.getSerialNumber().substring(0, 6)); + if (areaDeptEnum != null && osdResult.getOSD3().equals(areaDeptEnum.getName())) { + osdCheckResult.setOsdPartCorrect(ApiConstants.OSD_Correct); + } else { + osdCheckResult.setOsdPartCorrect(ApiConstants.OSD_Error); + } + } + } + + private boolean checkSuccess(List<OSDResult> osdResultList, TMonitor monitor, OSDResult osd) { + if (osd != null) { + osd.setSerialNumber(monitor.getSerialNumber()); + synchronized (osdResultList) { + osdResultList.add(osd); + } + return true; + } else { + return false; + } + } + + private OSDResult tryAllApi(TMonitor monitor, List<String> hkList, List<String> dhList, List<String> ysList) { + //灏濊瘯娴峰悍鐨刟pi + OSDResult hkosd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword); + if (hkosd != null) { + hkosd.setSerialNumber(monitor.getSerialNumber()); + synchronized (hkList) { + hkList.add(monitor.getSerialNumber()); + } + return hkosd; + } + //灏濊瘯澶у崕鐨刟pi + OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword); + if (dhosd != null) { + dhosd.setSerialNumber(monitor.getSerialNumber()); + synchronized (dhList) { + dhList.add(monitor.getSerialNumber()); + } + return dhosd; + } + //TODO锛氬畤瑙哸pi + return null; } } diff --git a/ycl-server/src/main/java/com/ycl/task/UYTask.java b/ycl-server/src/main/java/com/ycl/task/UYTask.java index b910d85..2f8297a 100644 --- a/ycl-server/src/main/java/com/ycl/task/UYTask.java +++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java @@ -218,39 +218,4 @@ log.info("缁撴潫鎵ц褰曞儚鍙敤鏁版嵁鍚屾"); } - - //瑙嗛鏍囨敞 - public void OsdMonitorTask() { - //瑙嗛鏍囨敞 - log.info("寮�濮嬫墽琛岃棰戞爣娉ㄦ暟鎹悓姝�"); - OsdMonitorParam param = new OsdMonitorParam(); - param.setPageNum(ApiConstants.PageNo); - param.setPageSize(ApiConstants.PageSize); - JSONObject jsonObject = uyClient.osdMonitorList(param, tenantId); - if (jsonObject != null) { - if (ApiConstants.UYSuccessCodeStr.equals(jsonObject.getString("code"))) { - JSONObject data = jsonObject.getJSONObject("data"); - if (data != null) { - List<OsdMonitorResult> records = data.getList("records", OsdMonitorResult.class); - if (!CollectionUtils.isEmpty(records)) { - //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎 - Query query = new Query(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); - DeleteResult result = mongoTemplate.remove(query, OsdMonitorResult.class); - //瀛樻斁鍦╩ongo涓� - mongoTemplate.insertAll(records); - } else { - log.error("瑙嗛鏍囨敞鏁版嵁涓虹┖{}", data); - } - } else { - log.error("瑙嗛鏍囨敞鏁版嵁涓虹┖{}", jsonObject); - } - } else { - log.error("瑙嗛鏍囨敞鏁版嵁涓虹┖{}", jsonObject); - } - } else { - log.error("瑙嗛鏍囨敞鏁版嵁涓虹┖"); - } - log.info("缁撴潫鎵ц瑙嗛鏍囨敞鏁版嵁鍚屾"); - } } diff --git a/ycl-server/src/main/java/com/ycl/task/VideoTask.java b/ycl-server/src/main/java/com/ycl/task/VideoTask.java index 522d096..3aa39a4 100644 --- a/ycl-server/src/main/java/com/ycl/task/VideoTask.java +++ b/ycl-server/src/main/java/com/ycl/task/VideoTask.java @@ -3,34 +3,22 @@ import com.ycl.calculate.CalculationStrategy; import com.ycl.factory.IndexCalculationFactory; -import com.ycl.platform.domain.entity.CheckIndexVideo; -import com.ycl.platform.domain.param.UY.RecordMetaDSumParam; -import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult; import com.ycl.platform.domain.result.UY.*; import com.ycl.platform.domain.vo.PlatformOnlineVO; import com.ycl.platform.domain.vo.TMonitorVO; -import com.ycl.platform.mapper.CheckIndexVideoMapper; import com.ycl.platform.mapper.PlatformOnlineMapper; import com.ycl.platform.mapper.TMonitorMapper; -import com.ycl.platform.service.PlatformOnlineService; -import com.ycl.system.mapper.SysDeptMapper; import com.ycl.utils.DateUtils; -import constant.ApiConstants; import constant.CalculationStrategyConstants; -import constant.CheckConstants; -import enumeration.general.AreaDeptEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; import java.util.Date; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * 瑙嗛璁$畻鑰冩牳鎸囨爣浠诲姟 @@ -48,12 +36,10 @@ public void siteOnlineTask() { Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻鐐逛綅鍦ㄧ嚎鐜囧拰閲嶇偣鐐逛綅鍦ㄧ嚎鐜囧拰鎸囨尌鍥惧儚鍦ㄧ嚎鐜� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<VideoOnlineResult> results = mongoTemplate.find(query, VideoOnlineResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_SiteOnline); @@ -62,12 +48,10 @@ public void videoUsabilityTask() { Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); //璁$畻褰曞儚鍙敤鐜囧拰閲嶇偣褰曞儚鍙敤鐜� Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<RecordMetaDSumResult> results = mongoTemplate.find(query, RecordMetaDSumResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_Usability); @@ -82,12 +66,11 @@ } public void oneMonitorQualifyTask(){ //璁$畻涓�鏈轰竴妗e悎鏍肩巼 -// Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); + Date yesterday = DateUtils.addDays(new Date(), -1); + Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<MonitorQualifyResult> results = mongoTemplate.find(query, MonitorQualifyResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_MonitorQualify); calculator.calculate(results); @@ -101,12 +84,10 @@ public void osdTask() { //璁$畻Osd鏍囨敞銆佹椂闂村噯纭巼 Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO:鏃堕棿鍐欐浜� - Date date = DateUtils.getDay(2024,7,13); Query query = new Query(); query.addCriteria(Criteria - .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); - List<PyOsdResult> results = mongoTemplate.find(query, PyOsdResult.class); + .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); + List<OsdCheckResult> results = mongoTemplate.find(query, OsdCheckResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_OsdTime); calculator.calculate(results); } diff --git a/ycl-server/src/main/resources/application-dev.yml b/ycl-server/src/main/resources/application-dev.yml index b0129c1..b71e1c8 100644 --- a/ycl-server/src/main/resources/application-dev.yml +++ b/ycl-server/src/main/resources/application-dev.yml @@ -76,12 +76,12 @@ spring.data: redis: # 鍦板潃 - #host: 42.193.1.25 - host: 127.0.0.1 + host: 42.193.1.25 +# host: 127.0.0.1 # 绔彛锛岄粯璁や负6379 port: 6379 - #password: ycl2018 - password: + password: ycl2018 +# password: # 鏁版嵁搴撶储寮� database: 0 # 瀵嗙爜(濡傛病鏈夊瘑鐮佽娉ㄩ噴鎺�) @@ -140,6 +140,16 @@ apikey: 72fcfd6825304f7fa0453134de620f3a accesskey: fc9503a521544e76a8e69b912a2f177bc6362b19 +HK: + userName: admin + passWord: zg@2024dx + host: 51.92.65.49 + appKey: 29555942 + appSecret: t9U7tCplCyYHzQPPL7cH + +DH: + userName: admin + password: zg@2024dx # gb281瑙嗛缃戝叧鍦板潃锛岀敤浜庤幏鍙杛tsp鏍煎紡鐨勬祦鍦板潃 rtsp: server: http://192.168.3.88:7788 diff --git a/ycl-server/src/main/resources/application-prod.yml b/ycl-server/src/main/resources/application-prod.yml index 5df6354..891eab7 100644 --- a/ycl-server/src/main/resources/application-prod.yml +++ b/ycl-server/src/main/resources/application-prod.yml @@ -130,7 +130,6 @@ retry: 4 # 鏈�澶ч噸璇曟鏁� youYunDomain: http://51.92.65.56 # 浼樹簯鍦板潃 haiKangDomain: 51.92.65.48 # 娴峰悍鍦板潃 - youYun: tenantId: e10adc3949ba59abbe56e057f20f88dd email: yunwei @@ -138,6 +137,16 @@ apikey: 72fcfd6825304f7fa0453134de620f3a accesskey: fc9503a521544e76a8e69b912a2f177bc6362b19 +HK: + userName: admin + passWord: zg@2024dx + host: 51.92.65.49 + appKey: 29555942 + appSecret: t9U7tCplCyYHzQPPL7cH + +DH: + userName: admin + password: zg@2024dx # gb281瑙嗛缃戝叧鍦板潃锛岀敤浜庤幏鍙杛tsp鏍煎紡鐨勬祦鍦板潃 rtsp: server: http://192.168.3.88:7788 diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml index b97bffc..6775baf 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml @@ -89,6 +89,13 @@ </foreach> </select> + <select id="selectByNumbers" resultType="com.ycl.platform.domain.vo.TMonitor"> + select * from t_monitor where serial_number in + <foreach collection="numbers" separator="," open="(" close=")" item="number"> + #{number} + </foreach> + </select> + <select id="selectTMonitorList" resultType="com.ycl.platform.domain.vo.TMonitorVO"> select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude, camera_capture_area, on_state, civil_code, d.dept_id, d.dept_name, d.area, p.province_tag, @@ -224,12 +231,9 @@ </insert> <update id="batchUpdateDeviceType"> - <foreach collection="list" separator=";" item="item"> - UPDATE t_monitor - SET - update_time = #{item.updateTime}, - device_type = #{item.deviceType} - WHERE id = #{item.id} + update t_monitor set device_type = #{deviceType} where serial_number in + <foreach collection="numbers" separator="," open="(" close=")" item="number"> + #{number} </foreach> </update> -- Gitblit v1.8.0