From f02ad2926c2b5a2576e75c2cd6611862e9ec8cea Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期五, 29 四月 2022 14:17:47 +0800
Subject: [PATCH] 摄像头

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java |  109 +++++++++++++++++++++++++++++++-----------------------
 1 files changed, 62 insertions(+), 47 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
index b54253a..dbb3a1b 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
@@ -4,12 +4,13 @@
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.pagehelper.PageHelper;
+import com.sandu.common.domain.CommonPage;
 import com.sandu.common.execption.BusinessException;
 import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.service.impl.BaseServiceImpl;
 import com.sandu.ximon.admin.param.MonitorParam;
 import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.admin.utils.ListPagingUtils;
 import com.sandu.ximon.dao.bo.MonitorBo;
 import com.sandu.ximon.dao.domain.Monitor;
 import com.sandu.ximon.admin.dto.YSY_AccessTokenDto;
@@ -17,13 +18,13 @@
 import com.sandu.ximon.dao.domain.PoleBinding;
 import com.sandu.ximon.dao.mapper.MonitorMapper;
 import lombok.AllArgsConstructor;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.CountDownLatch;
 
 @Service
 @AllArgsConstructor
@@ -53,47 +54,53 @@
     /**
      * 妯$硦鏌ヨ
      */
-    public List<MonitorBo> listMonitorByKeyword(BaseConditionVO baseConditionVO, MonitorParam monitorParam) {
-        List<Monitor> list;
-        if (SecurityUtils.getClientId() == null) {
-            list = monitorMapper.listMonitorDeviceSerial1(null, monitorParam.getKeyword());
-        } else {
-            list = monitorMapper.listMonitorDeviceSerial1(SecurityUtils.getUserId(), monitorParam.getKeyword());
-        }
-
-        //娌℃湁鏁版嵁鏃跺�欑洿鎺ヨ繑鍥炵┖鏁扮粍
-        if (list.size() == 0 || list == null) {
-            List<MonitorBo> nullList = new ArrayList<>();
-            return nullList;
-        }
-        List<String> device_serialList = new ArrayList<>(list.size());
-        for (Monitor demo : list) {
-            device_serialList.add(demo.getDeviceSerial());
-
-            YSY_MonitorDto.MonitorDto monitorInfo = getMonitorInfo_Async(demo.getDeviceSerial());
-            if (monitorInfo != null) {
-                demo.setEquipmentState(monitorInfo.getStatus());
-            }
-        }
-        updateBatchById(list);
-
-        if (baseConditionVO != null) {
-            PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
-        }
-        List<MonitorBo> monitorList;
+    public CommonPage listMonitorByKeyword(BaseConditionVO baseConditionVO, MonitorParam monitorParam) {
         //缁戝畾鐘舵�侊細宸茬粦瀹�/鏈粦瀹�/鍏ㄩ儴
         if (monitorParam.getBindingState() == null) {
             //鍏ㄩ儴
             monitorParam.setBindingState(2);
+        }
+        List<MonitorBo> list;
+        if (SecurityUtils.getClientId() == null) {
+            list = monitorMapper.listMonitorDeviceSerial1(null, monitorParam.getKeyword(), monitorParam.getBindingState());
+        } else {
+            list = monitorMapper.listMonitorDeviceSerial1(SecurityUtils.getUserId(), monitorParam.getKeyword(), monitorParam.getBindingState());
+        }
+
+        //娌℃湁鏁版嵁鏃跺�欑洿鎺ヨ繑鍥炵┖鏁扮粍
+        if (list.size() == 0 || list == null) {
+            return new CommonPage();
+        }
+        List<String> device_serialList = new ArrayList<>(list.size());
+        CountDownLatch latch = new CountDownLatch(list.size());
+        for (Monitor demo : list) {
+            device_serialList.add(demo.getDeviceSerial());
+            getMonitorInfo_Async(demo, latch);
+        }
+        try {
+            latch.await();
+        } catch (InterruptedException e) {
+            e.printStackTrace();
         }
         if (monitorParam.getEquipmentState() == null) {
             //鍏ㄩ儴
             monitorParam.setEquipmentState(2);
         }
 
-        monitorList = monitorMapper.listMonitorByIds(device_serialList, monitorParam.getBindingState(), monitorParam.getEquipmentState());
+        List<MonitorBo> temp = new ArrayList<>();
+        if (monitorParam.getEquipmentState() == 2) {
+            temp.addAll(list);
+        } else {
+            for (MonitorBo monitorBo : list) {
+                //绛涢�夌姸鎬佹暟鎹�
+                if (monitorBo.getEquipmentState().equals(monitorParam.getEquipmentState())) {
+                    temp.add(monitorBo);
+                }
+            }
+        }
 
-        return monitorList;
+        CommonPage commonPage = ListPagingUtils.pages(temp, baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
+        return commonPage;
     }
 
     public Monitor getYSYMonitorInfoAndaddMonitorToTable(String deviceSerial) {
@@ -169,21 +176,29 @@
      *
      * @return
      */
-    @Async("taskExecutor")
-    public YSY_MonitorDto.MonitorDto getMonitorInfo_Async(String deviceSerial) {
-        String token = getAccessToken();
-        Map<String, Object> paramMap = new HashMap<>();
-        paramMap.put("accessToken", token);
-        paramMap.put("deviceSerial", deviceSerial);
-        String s = HttpUtil.post(YSY_URL + GET_DEVICE_URL, paramMap);
-        YSY_MonitorDto monitorDto = null;
-        try {
-            monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
-            return monitorDto.getData();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
+    public void getMonitorInfo_Async(Monitor monitor, CountDownLatch countDownLatch) {
+        Thread t = new Thread() {
+            @Override
+            public void run() {
+                String token = getAccessToken();
+                Map<String, Object> paramMap = new HashMap<>();
+                paramMap.put("accessToken", token);
+                paramMap.put("deviceSerial", monitor.getDeviceSerial());
+                String s = HttpUtil.post(YSY_URL + GET_DEVICE_URL, paramMap);
+                YSY_MonitorDto monitorDto = null;
+                try {
+                    monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
+                    System.out.println(s + "       ----------");
+                    monitor.setEquipmentState(monitorDto.getData().getStatus());
+                    countDownLatch.countDown();
+                } catch (Exception e) {
+                    monitor.setEquipmentState(0);
+                    countDownLatch.countDown();
+                }
+            }
+        };
+        t.start();
+
     }
 
     /**

--
Gitblit v1.9.3