From 4e051073734c823793f2a45f1dc1bb3c0d755b8c Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 02 九月 2024 14:40:11 +0800
Subject: [PATCH] uy任务代码注释取消
---
ycl-server/src/main/java/com/ycl/task/OsdTask.java | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 262 insertions(+), 8 deletions(-)
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 0aa9e2d..f2c565a 100644
--- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -1,21 +1,275 @@
package com.ycl.task;
-import com.ycl.api.DH.frame.RealplayEx;
-import com.ycl.api.DH.module.LoginModule;
+import com.mongodb.client.result.DeleteResult;
+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 static com.ycl.api.DH.lib.enumeration.NET_EM_CFG_OPERATE_TYPE.NET_EM_CFG_CUSTOMTITLE;
+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 {
- public void test() {
-// HKApi.test();
- long loginId = LoginModule.login("51.95.67.189", 80, "admin", "zg@2024dx");
- String osdTime = LoginModule.getOsdTime();
- LoginModule.logout();
+ @Value("${HK.userName}")
+ public String HKUserName;
+ @Value("${HK.password}")
+ public String HKPassword;
+ @Value("${DH.userName}")
+ public String DHUserName;
+ @Value("${DH.password}")
+ public String DHPassword;
+ @Value("${YS.userName}")
+ public String YSUserName;
+ @Value("${YS.password}")
+ public String YSPassword;
+ @Autowired
+ private MongoTemplate mongoTemplate;
+ @Autowired
+ private TMonitorMapper monitorMapper;
+ @Autowired
+ private UYErrorTypeCheckService uyErrorTypeCheckService;
+
+ /**
+ * 閫氳繃鏌ongoDB姣忔棩涓�鏈轰竴妗f暟鎹幏鍙栬澶噄p
+ * 閫氳繃璁惧ip銆佸搧鐗岃皟鐢ㄤ笉鍚宎pi鑾峰彇osd淇℃伅
+ * 姣斿mongoDB涓�鏈轰竴妗d俊鎭紝鏁寸悊鎴恟esult瀛樺叆mongo
+ * 鍚屾鍝佺墝鍒癿ysql
+ */
+ public void getOSD() {
+ log.info("寮�濮嬭幏鍙朞SD");
+// YSApi.getOsd("51.95.66.42",YSUserName,YSPassword);
+ //鎵归噺淇敼娴峰悍鍝佺墝闆嗗悎
+ 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());
+ if(!CollectionUtils.isEmpty(serialNumbers)) {
+ ExecutorService executorService = new ThreadPoolExecutor(8,
+ 24,
+ 5000,
+ TimeUnit.SECONDS,
+ new ArrayBlockingQueue<>(1000),
+ new ThreadPoolExecutor.CallerRunsPolicy()
+ );
+ List<TMonitor> monitors = monitorMapper.selectByNumbers(serialNumbers);
+ monitors = monitors.stream().filter(monitor -> !StringUtils.isEmpty(monitor.getIp()) && !"127.0.0.1".equals(monitor.getIp())).collect(Collectors.toList());
+// log.info("澶勭悊鏁版嵁澶у皬{}", monitors.size());
+ 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)) {
+ log.info("娴峰悍璋冪敤鎴愬姛" + osd);
+ return;
+ }
+ } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) {
+ //澶у崕鍝佺墝
+ OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
+ if (checkSuccess(osdResultList, monitor, osd)) {
+ log.info("澶у崕璋冪敤鎴愬姛" + 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();
+ try {
+ // 绛夊緟鎵�鏈変换鍔″畬鎴愶紝鏈�澶氱瓑寰�10绉掞紙鍙互鏍规嵁闇�瑕佽皟鏁达級
+ if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) {
+ // 濡傛灉瓒呮椂锛屽皾璇曞仠姝㈠綋鍓嶆鍦ㄦ墽琛岀殑浠诲姟
+ executorService.shutdownNow();
+ }
+ } catch (InterruptedException e) {
+ // 褰撳墠绾跨▼鍦ㄧ瓑寰呰繃绋嬩腑琚腑鏂�
+ executorService.shutdownNow();
+ }
+ //缁撴潫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);
+ log.info("鏍¢獙缁撴灉锛歿}",osdCheckResult);
+ checkResults.add(osdCheckResult);
+ }
+ log.info("缁撴灉鏁版嵁澶у皬:{}", checkResults.size());
+ //缁撴灉瀛樺叆mongo
+ if (!CollectionUtils.isEmpty(checkResults)) {
+ log.info("瀛樺叆mongo");
+ //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
+ 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)) {
+ log.info("淇敼鍝佺墝");
+ monitorMapper.batchUpdateDeviceType(hkList, DeviceType.HK.getType());
+ }
+ if (!CollectionUtils.isEmpty(dhList)) {
+ log.info("淇敼鍝佺墝");
+ 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);
+ }
+ }
+ //妫�鏌ラ�氶亾鍚嶆槸鍚︽纭�
+ //TODO:鏍¢獙瑙勫垯锛岃繖閲屾殏鏃朵笉姣旇緝鍏ㄦ櫙鍜岀粏鑺備袱瀛椼��
+ if (!StringUtils.isEmpty(osdResult.getName()) && !StringUtils.isEmpty(monitor.getName())) {
+ if (monitor.getName().equals(osdResult.getName()) || monitor.getName().replace("鍏ㄦ櫙","缁嗚妭").equals(osdResult.getName()) || monitor.getName().replace("缁嗚妭","鍏ㄦ櫙").equals(osdResult.getName())) {
+ //OSD4鍜�5閮藉彲鑳戒负鍚嶅瓧銆佹瘮杈冨叾涓竴鏉℃纭嵆鍙紝姝g‘浜嗘敼涓烘纭悕瀛�
+ osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
+ osdCheckResult.setOsdName(osdResult.getName());
+ }else if (monitor.getName().equals(osdResult.getName2()) || monitor.getName().replace("鍏ㄦ櫙","缁嗚妭").equals(osdResult.getName2()) || monitor.getName().replace("缁嗚妭","鍏ㄦ櫙").equals(osdResult.getName2())) {
+ //OSD4鍜�5閮藉彲鑳戒负鍚嶅瓧銆佹瘮杈冨叾涓竴鏉℃纭嵆鍙紝姝g‘浜嗘敼涓烘纭悕瀛�
+ osdCheckResult.setOsdName(osdResult.getName2());
+ 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());
+ log.info("娴峰悍璋冪敤鎴愬姛"+hkosd);
+ synchronized (hkList) {
+ hkList.add(monitor.getSerialNumber());
+ }
+ return hkosd;
+ }
+ //灏濊瘯澶у崕鐨刟pi
+ OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
+ if (dhosd != null) {
+ dhosd.setSerialNumber(monitor.getSerialNumber());
+ log.info("澶у崕璋冪敤鎴愬姛"+dhosd);
+ synchronized (dhList) {
+ dhList.add(monitor.getSerialNumber());
+ }
+ return dhosd;
+ }
+ //TODO锛氬畤瑙哸pi
+ return null;
}
}
--
Gitblit v1.8.0