From 2150b0b87de4ec80a9d3f968c6de947f361ca19f Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 15 十一月 2024 11:36:06 +0800 Subject: [PATCH] 在线监测对于纯车辆人脸可以恢复在线状态 --- ycl-server/src/main/java/com/ycl/task/UYTask.java | 76 +++++++++++++++++++++---------------- 1 files changed, 43 insertions(+), 33 deletions(-) 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 0256642..7527055 100644 --- a/ycl-server/src/main/java/com/ycl/task/UYTask.java +++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java @@ -175,7 +175,6 @@ /** * 鐐逛綅鍦ㄧ嚎PING妫�娴� */ - //TODO锛氱偣浣嶅湪绾匡紙淇敼閫昏緫鍙拡瀵瑰伐鍗曪級 public void pointOnline() throws ExecutionException, InterruptedException { log.info("寮�濮嬫娴嬬偣浣嶅湪绾�"); Integer times = 2; @@ -195,7 +194,7 @@ for (TMonitorResult result : monitorList) { TMonitorResult mongoData = mongoMap.get(result.getNo()); if(mongoData!=null){ - result.setOffLineTime(mongoData.getOffLineTime()); + result.setOffLineTimeStr(mongoData.getOffLineTimeStr()); } } List<TMonitorResult> dataList = new ArrayList<>(48); @@ -206,37 +205,44 @@ return thread.call(); // 鍋囪 OnlineCheckThread 瀹炵幇浜� Callable 鎺ュ彛 }, executorService) .orTimeout(60, TimeUnit.SECONDS) - //鍑虹幇寮傚父 .exceptionally(ex -> { if (ex instanceof TimeoutException) { log.error("浠诲姟鎵ц瓒呮椂:"+monitor.getIp()); } else { - log.error("浠诲姟鎵ц寮傚父:"+monitor.getIp() + ex); + log.error("浠诲姟鎵ц寮傚父:"+monitor.getIp() +ex); + ex.printStackTrace(); } - int checkTimes = 1; - int offLineTimes = 1; - Map<String, Object> map = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getIp()); - if (!CollectionUtils.isEmpty(map)) { - checkTimes = (Integer) map.get("checkTimes") + 1; - offLineTimes = (Integer) map.get("offLineTimes"); - } - monitor.setPingOnline(Boolean.FALSE); - monitor.setCheckCount(checkTimes); - monitor.setOffLineCount(offLineTimes); - List<Date> offLineTime = monitor.getOffLineTime(); - if(CollectionUtils.isEmpty(offLineTime)) offLineTime = new ArrayList<>(); - offLineTime.add(new Date()); - monitor.setOffLineTime(offLineTime); - if (monitor.getOffLineCount() >= time) { - WorkOrder workOrder = new WorkOrder(); - workOrder.setSerialNumber(monitor.getNo()); - List<String> errList = new ArrayList<>(); - errList.add(ErrorType.DEVICE_OFFLINE.getValue()); - workOrder.setErrorTypeList(errList); - workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED); - monitor.setWorkOrder(workOrder); - } - return monitor; // 杩斿洖澶辫触鐨勭粨鏋� + return null; +// int checkTimes = 1; +// int offLineTimes = 1; +// Map<String, Object> map = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getNo()); +// if (!CollectionUtils.isEmpty(map)) { +// checkTimes = (Integer) map.get("checkTimes") + 1; +// offLineTimes = (Integer) map.get("offLineTimes"); +// }else { +// map = new HashMap<>(); +// } +// monitor.setPingOnline(Boolean.FALSE); +// monitor.setCheckCount(checkTimes); +// monitor.setOffLineCount(offLineTimes); +// List<Date> offLineTime = monitor.getOffLineTime(); +// if(CollectionUtils.isEmpty(offLineTime)) offLineTime = new ArrayList<>(); +// offLineTime.add(new Date()); +// monitor.setOffLineTime(offLineTime); +// if (monitor.getOffLineCount() >= time) { +// WorkOrder workOrder = new WorkOrder(); +// workOrder.setSerialNumber(monitor.getNo()); +// List<String> errList = new ArrayList<>(); +// errList.add(ErrorType.DEVICE_OFFLINE.getValue()); +// workOrder.setErrorTypeList(errList); +// workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED); +// monitor.setWorkOrder(workOrder); +// } +// map.put("checkTimes", checkTimes); +// map.put("offLineTimes", offLineTimes); +// redisTemplate.opsForHash().put(RedisConstant.ONLINE_KEY, monitor.getNo(), map); +// return monitor; // 杩斿洖澶辫触鐨勭粨鏋� + })) .collect(Collectors.toList()); @@ -247,7 +253,7 @@ try { allOf.get(60, TimeUnit.SECONDS); // 缁欎簣棰濆鐨�5绉掓潵鏀堕泦缁撴灉 } catch (TimeoutException e) { - log.warn("閮ㄥ垎浠诲姟鏈湪鎸囧畾鏃堕棿鍐呭畬鎴�"); + log.error("閮ㄥ垎浠诲姟鏈湪鎸囧畾鏃堕棿鍐呭畬鎴�"); } catch (Exception e2){ log.error("鏁版嵁鏀堕泦寮傚父"+e2); } @@ -256,16 +262,20 @@ .map(CompletableFuture::join) .filter(Objects::nonNull) .collect(Collectors.toList()); - //绛涢�夊嚭ping绂荤嚎鐨勮澶囷紝鏇存敼鏁版嵁搴撲负绂荤嚎 + //绛涢�夊嚭ping绂荤嚎鐨勮澶囷紝鏇存敼鏁版嵁搴撲负绂荤嚎锛屽苟涓旀洿鏂扮函杞﹁締鎴栫函浜鸿劯鐨勮澶囩殑鍦ㄧ嚎鐘舵��(杩欓儴鍒嗚澶囦笉浼氭媺娴佹娴�) Date now = new Date(); - List<UpdateOnlineVO> willUpdateList = dataList.stream().filter(result->!result.getPingOnline()).map(item -> { + List<UpdateOnlineVO> onlineUpdateList = dataList.stream().map(item -> { UpdateOnlineVO vo = new UpdateOnlineVO(); - vo.setOnline(ApiConstants.UY_OnlineSite_Offline); + if(item.getPingOnline()) { + vo.setOnline(ApiConstants.UY_OnlineSite_Online); + }else if(!item.getPingOnline()){ + vo.setOnline(ApiConstants.UY_OnlineSite_Offline); + } vo.setIp(item.getIp()); vo.setUpdateTime(now); return vo; }).collect(Collectors.toList()); - monitorMapper.updateOnline(willUpdateList); + monitorMapper.updateOnline(onlineUpdateList); //瀛樻斁鍒癿ongo if (!CollectionUtils.isEmpty(dataList)) { //濡傛灉瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎 -- Gitblit v1.8.0