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