From 811b14aa5cd2bd6d4313b43dc38ce87cd938f3b0 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期二, 23 七月 2024 17:12:42 +0800
Subject: [PATCH] 优化:通道同步任务 增加:根据用户统计未读总数
---
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 2 +
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java | 1
ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java | 8 ++++
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 22 +++++------
ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java | 2 +
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java | 5 ++
ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java | 13 ++++++
ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java | 9 ++++
ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml | 3 +
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java | 5 +-
ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java | 8 +++
ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java | 18 +++-----
12 files changed, 70 insertions(+), 26 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java
index 9f38bea..a0779aa 100644
--- a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java
+++ b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java
@@ -4,6 +4,7 @@
import javax.servlet.http.HttpServletResponse;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ruoyi.call.service.IArdCallUnreadMessagesService;
import com.ruoyi.common.annotation.Anonymous;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -39,6 +40,8 @@
public class ArdCallHistoryController extends BaseController {
@Autowired
private IArdCallHistoryService ardCallHistoryService;
+ @Autowired
+ private IArdCallUnreadMessagesService ardCallUnreadMessagesService;
/**
* 鏌ヨ浼氳瘽娑堟伅鍒楄〃
@@ -85,4 +88,10 @@
public AjaxResult remove(@PathVariable String[] ids) {
return toAjax(ardCallHistoryService.deleteArdCallHistoryByIds(ids));
}
+
+ @ApiOperation("鑾峰彇鏈娑堟伅鎬绘暟")
+ @GetMapping("/getTotalUnreadCount")
+ public AjaxResult getTotalUnreadCount(String userId) {
+ return AjaxResult.success(ardCallUnreadMessagesService.totalUnReadCount(userId));
+ }
}
diff --git a/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java
index 81383ec..0157656 100644
--- a/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java
@@ -65,4 +65,6 @@
int countBySessionIdAnduserId(String sessionId, String userId);
public ArdCallUnreadMessages getUnreadMessage(@Param("sessionId") String sessionId, @Param("targetId")String targetId);
+
+ public int totalUnReadCount(String userId);
}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java
index f891eaa..3ff250d 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java
@@ -67,4 +67,12 @@
* @return 缁撴灉
*/
public int clearUnReadCount(String sessionId,String userId);
+ /**
+ * @Author 鍒樿嫃涔�
+ * @Description 缁熻鏈鎬绘暟
+ * @Date 2024/7/23 16:36
+ * @Param
+ * @return
+ */
+ public int totalUnReadCount(String userId);
}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java
index cde19dc..ed8859c 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java
@@ -68,6 +68,7 @@
@Override
public String insertArdCallGroup(ArdCallGroup ardCallGroup) {
ardCallGroup.setId(IdUtils.simpleUUID());
+ ardCallGroup.setCreateBy(SecurityUtils.getUserId());
ardCallGroup.setCreateTime(DateUtils.getNowDate());
ardCallGroup.getUserIds().stream().forEach(userId -> {
ArdCallGroupUser groupUser = new ArdCallGroupUser();
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java
index 2a6644c..b91c6c8 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java
@@ -105,4 +105,9 @@
}
return 1;
}
+
+ @Override
+ public int totalUnReadCount(String userId) {
+ return ardCallUnreadMessagesMapper.totalUnReadCount(userId);
+ }
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
index 317c818..50321c3 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
@@ -202,4 +202,17 @@
* 閫氶亾
*/
private List<ArdChannel> channelList;
+
+ @Override
+ public int hashCode() {
+ return id.hashCode();
+ }
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof ArdCameras){
+ return id.equals(((ArdCameras)obj).getId());
+ }else {
+ return false;
+ }
+ }
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
index d271176..0209056 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -25,8 +25,10 @@
import com.ruoyi.utils.sdk.common.GlobalVariable;
import com.ruoyi.utils.tools.ArdTool;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
+import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java
index a15d575..c410500 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java
@@ -1,6 +1,10 @@
package com.ruoyi.utils.sdk.common;
+import cn.hutool.core.collection.ConcurrentHashSet;
+import com.ruoyi.device.camera.domain.ArdCameras;
import lombok.Data;
+import org.ehcache.impl.internal.concurrent.ConcurrentHashMap;
+
import java.util.HashMap;
import java.util.Map;
@@ -18,8 +22,10 @@
//鐩告満棰勮瀛楀吀
public static Map<String, Integer> previewMap = new HashMap<>();
//绾跨▼瀛楀吀
- public static Map<String,String>threadMap=new HashMap<>();
+ public static Map<String, String> threadMap = new HashMap<>();
//淇濆瓨鐩告満鐧诲綍淇℃伅(loginId:Camera)
public static Map<Integer, Object> loginCameraMap = new HashMap<>();
+ //鐧诲綍杩囩浉鏈洪泦鍚�
+ public static ConcurrentHashSet<ArdCameras> loginedSet = new ConcurrentHashSet<>();
}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
index 492e5ff..fe9af52 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -7,45 +7,38 @@
import com.ruoyi.common.config.ARDConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.file.MimeTypeUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.device.camera.factory.CameraSDK;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.factory.CameraSDK;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.camera.service.ICameraSdkService;
import com.ruoyi.device.channel.domain.ArdChannel;
import com.ruoyi.device.channel.service.IArdChannelService;
-import com.ruoyi.media.domain.Vtdu;
import com.ruoyi.media.service.IVtduService;
import com.ruoyi.utils.gis.GisUtil;
import com.ruoyi.utils.minio.MinioUtil;
import com.ruoyi.utils.sdk.common.GlobalVariable;
-import com.ruoyi.utils.sdk.common.SdkErrorCodeEnum;
import com.ruoyi.utils.sdk.dhsdk.common.ErrorCode;
import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib;
-import com.ruoyi.utils.sdk.dhsdk.lib.ToolKits;
import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.EM_NEW_CONFIG;
import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
import com.ruoyi.utils.sdk.dhsdk.lib.structure.CFG_INFRARED_INFO;
import com.ruoyi.utils.sdk.dhsdk.lib.structure.CFG_VIDEO_IN_FOCUS;
import com.ruoyi.utils.sdk.dhsdk.lib.structure.DH_OUT_PTZ_VIEW_RANGE_STATUS;
import com.ruoyi.utils.sdk.dhsdk.module.*;
-import com.sun.jna.Native;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.ApplicationEventPublisher;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
import java.io.*;
-import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.DecimalFormat;
@@ -53,7 +46,6 @@
import java.util.concurrent.PriorityBlockingQueue;
import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.*;
-import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_DEVSTATE_PTZ_VIEW_RANGE;
import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL;
import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL;
import static com.ruoyi.utils.sdk.dhsdk.lib.ToolKits.getErrorCodePrint;
@@ -132,6 +124,8 @@
ardCamerasService.updateArdCameras(camera);
//鍒涘缓寮曞闃熷垪
createGuideQueue(camera);
+ //鍔犲叆宸茬櫥褰曡澶囬泦鍚�
+ GlobalVariable.loginedSet.add(camera);
return AjaxResult.success("璁惧鐧诲綍鎴愬姛");
} catch (Exception ex) {
log.error("璁惧鐧诲綍寮傚父:" + ex.getMessage());
@@ -178,6 +172,8 @@
ardCamerasService.updateArdCameras(camera);
//鍒涘缓寮曞闃熷垪
createGuideQueue(camera);
+ //鍔犲叆宸茬櫥褰曡澶囬泦鍚�
+ GlobalVariable.loginedSet.add(camera);
return AjaxResult.success("鐧诲綍鎴愬姛");
} catch (Exception ex) {
log.error("鐧诲綍寮傚父:" + ex.getMessage());
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
index 92a3833..3dc494e 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -9,18 +9,14 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.file.MimeTypeUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.device.camera.service.IArdCamerasService;
-import com.ruoyi.device.camera.factory.CameraSDK;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.factory.CameraSDK;
+import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.camera.service.ICameraSdkService;
import com.ruoyi.device.channel.domain.ArdChannel;
import com.ruoyi.device.channel.service.IArdChannelService;
-import com.ruoyi.device.terrain.domain.ArdTerrainMark;
-import com.ruoyi.device.terrain.service.IArdTerrainMarkService;
-import com.ruoyi.media.domain.Vtdu;
import com.ruoyi.media.service.IVtduService;
import com.ruoyi.utils.gis.GisUtil;
import com.ruoyi.utils.minio.MinioUtil;
@@ -33,11 +29,12 @@
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.nio.ByteBuffer;
@@ -46,10 +43,8 @@
import java.text.DecimalFormat;
import java.util.*;
import java.util.concurrent.PriorityBlockingQueue;
-import java.util.stream.Collectors;
import static com.ruoyi.utils.sdk.hiksdk.lib.HCNetSDK.*;
-import static com.ruoyi.utils.sdk.hiksdk.lib.HCNetSDK.NET_DVR_GET_GISINFO;
/**
* @Description: 娴峰悍sdk绛栫暐
@@ -146,7 +141,7 @@
}
GlobalVariable.loginMap.put(camera.getId(), lUserID);
GlobalVariable.loginCameraMap.put(lUserID, camera);
- camera.setLoginId((long)lUserID);
+ camera.setLoginId((long) lUserID);
camera.setState("1");
int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
int startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1;
@@ -171,6 +166,8 @@
ardCamerasService.updateArdCameras(camera);
//鍒涘缓寮曞闃熷垪
createGuideQueue(camera);
+ //鍔犲叆宸茬櫥褰曡澶囬泦鍚�
+ GlobalVariable.loginedSet.add(camera);
return AjaxResult.success("璁惧鐧诲綍鎴愬姛");
} catch (Exception ex) {
log.error("璁惧鐧诲綍寮傚父", ex);
@@ -254,7 +251,7 @@
GlobalVariable.loginMap.put(camera.getId(), lUserID);
GlobalVariable.loginCameraMap.put(lUserID, camera);
- camera.setLoginId((long)lUserID);
+ camera.setLoginId((long) lUserID);
camera.setState("1");
int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
int startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1;
@@ -279,6 +276,8 @@
ardCamerasService.updateArdCameras(camera);
//鍒涘缓寮曞闃熷垪
createGuideQueue(camera);
+ //鍔犲叆宸茬櫥褰曡澶囬泦鍚�
+ GlobalVariable.loginedSet.add(camera);
return AjaxResult.success("璁惧鐧诲綍鎴愬姛");
} catch (Exception ex) {
log.error("娉ㄥ唽璁惧寮傚父", ex);
@@ -310,7 +309,6 @@
}
}
-
/**
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml
index 8708431..70f8271 100644
--- a/ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml
+++ b/ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml
@@ -71,4 +71,7 @@
where user_id = #{targetId}
and session_id = #{sessionId}
</select>
+ <select id="totalUnReadCount" resultType="Integer">
+ select sum(unread_count) from ard_call_unread_messages where user_id = #{userId }
+ </select>
</mapper>
\ No newline at end of file
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
index 1ee40ff..edd182e 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
@@ -18,6 +18,7 @@
import com.ruoyi.media.service.IVtduService;
import com.ruoyi.rongcloud.service.RongCloudService;
import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.utils.sdk.common.GlobalVariable;
import com.ruoyi.utils.sdk.dhsdk.service.impl.DahuaSDK;
import com.ruoyi.utils.sdk.hiksdk.service.impl.HikvisionSDK;
import lombok.extern.slf4j.Slf4j;
@@ -88,10 +89,10 @@
* @Description 鍚屾閫氶亾鐘舵�佸疄鏃跺悓姝ユ祦濯掍綋
* @Date 2024/7/9 16:01
*/
- public void syncChannelState() {
+ public void syncChannelState(){
log.debug("瀹氭椂鍚屾閫氶亾浠诲姟寮�濮�");
//鑾峰彇鎵�鏈塶vr璁惧
- List<ArdCameras> ardCamerasList = iArdCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
+ List<ArdCameras> ardCamerasList = GlobalVariable.loginedSet.stream().collect(Collectors.toList());
if (ardCamerasList.size() > 0) {
ardCamerasList.stream()
.forEach(ardCameras -> {
--
Gitblit v1.9.3