From 2e81e44c7dc4945b9d1db55bf0357e4c79d59500 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 04 七月 2023 16:15:42 +0800
Subject: [PATCH] websocket推送ptz增加剩余秒数

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java |   88 ++++++++++++++++++++++++++++++++------------
 1 files changed, 64 insertions(+), 24 deletions(-)

diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
index baff613..4fcc320 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
@@ -1,16 +1,22 @@
 package com.ruoyi.quartz.task;
 
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.common.websocket.util.WebSocketUtils;
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.device.hiksdk.common.GlobalVariable;
 import com.ruoyi.device.hiksdk.service.IHikClientService;
+import com.ruoyi.system.service.ISysUserService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
+
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
 import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
 
 /**
@@ -21,11 +27,8 @@
  * @Version: 1.0
  **/
 @Component("SdkTask")
+@Slf4j(topic = "hikSdk")
 public class SdkTask {
-    @Resource
-    IArdCamerasService ardCamerasService;
-    @Resource
-    IHikClientService hikClientService;
 
     /**
      * @鎻忚堪 瀹氭椂鎺ㄩ�乸tz
@@ -36,24 +39,61 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     public void ptzPush() {
-        List<Map<String, Object>> list = new ArrayList<>();
-        ArdCameras ardCameras = new ArdCameras();
-        ardCameras.setGdtype("1");
-        List<ArdCameras> ardCamerasList = ardCamerasService.selectArdCamerasListNoDataScope(ardCameras);
-        for (ArdCameras camera : ardCamerasList) {
-            CameraCmd cmd = new CameraCmd();
-            cmd.setCameraId(camera.getId());
-            cmd.setChannelNum(1);
-            Map<String, Object> ptz = hikClientService.getPtz(cmd);
-            if (ptz.size() > 0) {
-                ptz.put("cameraId", camera.getId());
-                list.add(ptz);
+        try {
+            ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
+            IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class);
+            IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class);
+            List<Map<String, Object>> list = new ArrayList<>();
+            ArdCameras ardCameras = new ArdCameras();
+            ardCameras.setGdtype("1");
+            List<ArdCameras> ardCamerasList = ardCamerasService.selectArdCamerasListNoDataScope(ardCameras);
+            for (ArdCameras camera : ardCamerasList) {
+                CameraCmd cmd = new CameraCmd();
+                cmd.setCameraId(camera.getId());
+                cmd.setChannelNum(1);
+                cmd.setOperator(camera.getOperatorId());
+                if (!GlobalVariable.loginMap.containsKey(camera.getId()))//鍙帹閫佺櫥褰曟垚鍔熺殑鐩告満
+                {
+                    continue;
+                }
+                Map<String, Object> ptz = hikClientService.getPtz(cmd);
+                if (StringUtils.isNull(ptz)) {
+                    continue;
+                }
+                SysUser sysUser = sysUserService.selectUserById(camera.getOperatorId());
+                if (StringUtils.isNotNull(sysUser)) {
+                    cmd.setOperatorZh(sysUser.getNickName());
+                } else {
+                    cmd.setOperatorZh(cmd.getOperator());
+                }
+
+                //鑾峰彇鏃堕棿宸�
+                long secDatePoor = 0;
+                if (StringUtils.isNotNull(camera.getOperatorExpired())) {
+                    secDatePoor = DateUtils.getSecDatePoor(camera.getOperatorExpired(), new Date());
+                    if(secDatePoor<0)
+                    {
+                        secDatePoor=0;
+                    }
+                }
+
+                if (ptz.size() > 0) {
+                    ptz.put("cameraId", cmd.getCameraId());
+                    ptz.put("usernameZh", cmd.getOperatorZh());
+                    ptz.put("operatorId", cmd.getOperator());//涓婇攣鐢ㄦ埛id
+                    ptz.put("expirationRemainingSecond", secDatePoor);
+                    list.add(ptz);
+                }
+            }
+            if (ONLINE_USER_SESSIONS.size() > 0) {
+                Map<String, Object> sendMap = new HashMap<>();
+                sendMap.put("10000", list);
+                WebSocketUtils.sendMessageAll(sendMap);
             }
         }
-        if (ONLINE_USER_SESSIONS.size() > 0) {
-            Map<String, Object> sendMap=new HashMap<>();
-            sendMap.put("10000",list);
-            WebSocketUtils.sendMessageAll(sendMap);
+        catch (Exception ex)
+        {
+            log.error("鎺ㄩ�乸tz寮傚父:"+ex.getMessage());
         }
     }
 }

--
Gitblit v1.9.3