From 7f7e2cf6e81018077de4a4df5ff7b64b81434a8a Mon Sep 17 00:00:00 2001 From: yiming Date: Mon, 16 May 2022 15:37:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=94=9D=E5=83=8F=E9=A0=AD?= =?UTF-8?q?=E9=8F=88=E6=8E=A5=E7=8B=80=E6=85=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhehekeji/web/service/CameraService.java | 45 +++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/web/src/main/java/com/zhehekeji/web/service/CameraService.java b/web/src/main/java/com/zhehekeji/web/service/CameraService.java index 73b1086..99c1cea 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -34,6 +34,7 @@ import java.io.IOException; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; +import java.util.concurrent.CountDownLatch; @Service @Slf4j @@ -103,20 +104,48 @@ public class CameraService { cameraMapper.deleteById(id); } - public PageInfo cameras(StreetSearch streetSearch) { + public PageInfo cameras(StreetSearch streetSearch){ PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize()); List cameras = cameraMapper.selectByMap(new HashMap<>(0)); - cameras.forEach(camera -> { - Boolean ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); - if(ok){ - camera.setStatus("連接正常"); - }else { - camera.setStatus("未連接"); + if(cameras.size() > 0){ + CountDownLatch latch = new CountDownLatch(cameras.size()); + cameras.forEach(camera -> { + StatusThread statusThread = new StatusThread(camera,latch); + statusThread.start(); + }); + try { + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); } - }); + } return new PageInfo<>(cameras); } + public class StatusThread extends Thread{ + private Camera camera; + private CountDownLatch latch; + public StatusThread(Camera camera,CountDownLatch latch){ + this.camera = camera; + this.latch = latch; + } + @Override + public void run() { + try { + Boolean ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); + if(ok){ + camera.setStatus("連接正常"); + }else { + camera.setStatus("未連接"); + } + }catch (Exception e){ + camera.setStatus("未連接"); + }finally { + latch.countDown(); + } + } + } + public Camera detail(Integer id){ return cameraMapper.selectById(id); }