From 4cc19e25b2a210ba4b5af46f30f28dbe4ca289fe Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 27 七月 2023 08:56:22 +0800
Subject: [PATCH] 修改websocket包位置 增加单兵端-下发给我的任务详情 增加app位置websocket推送按用户频率
---
ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java | 96 ++++++++++
ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java | 1
ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml | 118 +++++++++----
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java | 4
ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java | 86 +++++++++
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java | 8
ard-work/src/main/java/com/ruoyi/utils/webrtcService.java | 37 ++++
ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java | 22 ++
ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java | 31 +--
/dev/null | 70 -------
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AppTask.java | 13 +
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 5
ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java | 1
ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java | 2
ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java | 1
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java | 2
ard-work/src/main/java/com/ruoyi/utils/websocket/config/websocketConfig.java | 2
ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java | 18 +
ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java | 2
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 5
20 files changed, 373 insertions(+), 151 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
index 465b865..94e936d 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
@@ -166,7 +166,6 @@
List<SysUser> offLineList=new ArrayList<>();
for(SysUser sysUser:list)
{
-
ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId());
if(ardAppPosition!=null) {
Map<String, Object> params =new HashMap<>();
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java b/ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java
index 05640d8..5cb7f8c 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java
@@ -65,4 +65,5 @@
* @return 缁撴灉
*/
public int deleteArdAppPositionById(String id);
+
}
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
new file mode 100644
index 0000000..a3c2f72
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
@@ -0,0 +1,86 @@
+package com.ruoyi.app.position.service.impl;
+
+import com.ruoyi.app.position.domain.ArdAppPosition;
+import com.ruoyi.app.position.service.IArdAppPositionService;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
+import com.ruoyi.system.service.ISysUserService;
+
+import javax.websocket.Session;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @Description: app浣嶇疆鎺ㄩ��
+ * @ClassName: AppPositionPush
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�07鏈�25鏃�16:07:04
+ * @Version: 1.0
+ **/
+public class AppPositionPush {
+
+ //app浣嶇疆涓婁紶
+ public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(20);
+ public static final Map<Session, ScheduledFuture<?>> taskMap = new HashMap<>();
+ public static final Map<Session, Map> defaultDataMap = new HashMap<>();//榛樿浼氳瘽鍙戦�佹暟鎹甿ap
+
+ // 鍒濆瀹氭椂浠诲姟锛屾牴鎹敤鎴疯缃殑棰戠巼瀹氭湡鎺ㄩ�佸疄鏃朵綅缃俊鎭�
+ public static void initPushTask(Session session, int pushFrequency) {
+ // 鍚姩鏂扮殑瀹氭椂浠诲姟
+ if (pushFrequency > 0) {
+ scheduler.scheduleAtFixedRate(() -> {
+ Map map = defaultDataMap.get(session);
+ WebSocketUtils.sendMessage(session, map);
+ }, 0, pushFrequency, TimeUnit.MILLISECONDS);
+ }
+ }
+ // 鏂扮殑瀹氭椂浠诲姟锛屾牴鎹敤鎴疯缃殑棰戠巼瀹氭湡鎺ㄩ�佸疄鏃朵綅缃俊鎭�
+ public static void startLocationPushTask(String userId, Session session, int pushFrequency) {
+ // 鍙栨秷涔嬪墠璁剧疆鐨勫畾鏃朵换鍔�
+ stopLocationPushTask(session);
+
+ // 鍚姩鏂扮殑瀹氭椂浠诲姟
+ if (pushFrequency > 0) {
+ ScheduledFuture<?> task = ScheduledFutureTask(session, userId, pushFrequency);
+ taskMap.put(session, task); // 瀛樺偍鏂扮殑瀹氭椂浠诲姟
+ }
+ }
+ public static ScheduledFuture<?> ScheduledFutureTask(Session session, String userId, Integer pushFrequency) {
+ return scheduler.scheduleAtFixedRate(() -> {
+ ArdAppPosition ardAppPosition = getAppPositionList().get(userId);
+ Map<String, ArdAppPosition> DataMap = new HashMap<>();
+ DataMap.put(userId,ardAppPosition);
+ WebSocketUtils.sendMessage(session, DataMap);
+ }, 0, pushFrequency, TimeUnit.MILLISECONDS);
+ }
+ //鍙栨秷瀹氭椂浠诲姟
+ public static void stopLocationPushTask(Session session) {
+ ScheduledFuture<?> scheduledTask = taskMap.get(session);
+ if (scheduledTask != null) {
+ scheduledTask.cancel(false);
+ }
+ }
+ //鏌ヨ鎵�鏈塧pp鐢ㄦ埛鐨勪綅缃俊鎭�
+ public static Map<String,ArdAppPosition> getAppPositionList()
+ {
+ Map<String,ArdAppPosition> userMap=new HashMap<>();
+ ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
+ //鑾峰彇鎵�鏈塧pp鐢ㄦ埛
+ List<SysUser> list = sysUserService.selectAppUserListNoDataScope(new SysUser());
+ for(SysUser sysUser:list)
+ {
+ IArdAppPositionService ardAppPositionService = SpringUtils.getBean(IArdAppPositionService.class);
+ ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId());
+ userMap.put(sysUser.getUserId(),ardAppPosition);
+ }
+
+ return userMap;
+ }
+}
+
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
index 2214737..18e068d 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
@@ -98,4 +98,6 @@
public int deleteArdAppPositionById(String id) {
return ardAppPositionMapper.deleteArdAppPositionById(id);
}
+
+
}
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
index 195c448..9b86968 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
@@ -39,7 +39,7 @@
/**
* 鏌ヨapp浠诲姟绠$悊鍒楄〃
*/
- @ApiOperation("鏌ヨapp浠诲姟绠$悊鍒楄〃")
+ @ApiOperation("鎸囨尌绔�-鍘嗗彶浠诲姟鏌ヨ")
@PreAuthorize("@ss.hasPermi('app:task:list')")
@GetMapping("/list")
public TableDataInfo list(ArdAppTask ardAppTask) {
@@ -47,12 +47,19 @@
List<ArdAppTask> list = ardAppTaskService.selectArdAppTaskList(ardAppTask);
return getDataTable(list);
}
- @ApiOperation("鏌ヨapp浠诲姟绠$悊鍒楄〃(璇︽儏)")
+ @ApiOperation("鍗曞叺绔� - 涓嬪彂缁欐垜鐨勪换鍔″垪琛�")
@PreAuthorize("@ss.hasPermi('app:task:list')")
@GetMapping("/listWithDetail")
public TableDataInfo userlist(ArdAppTask ardAppTask) {
List<ArdAppTask> ardAppTasks = ardAppTaskService.selectArdAppTaskListWithDetail(ardAppTask);
return getDataTable(ardAppTasks);
+ }
+ @ApiOperation("鍗曞叺绔� - 涓嬪彂缁欐垜鐨勪换鍔¤鎯�")
+ @PreAuthorize("@ss.hasPermi('app:task:list')")
+ @GetMapping("/userDetailById")
+ public AjaxResult userDetail(ArdAppTask ardAppTask) {
+ List<ArdAppTask> ardAppTasks = ardAppTaskService.selectArdAppTaskListWithDetailById(ardAppTask);
+ return AjaxResult.success(ardAppTasks);
}
/**
* 瀵煎嚭app浠诲姟绠$悊鍒楄〃
@@ -69,7 +76,6 @@
/**
* 鑾峰彇app浠诲姟绠$悊璇︾粏淇℃伅
*/
- @ApiOperation("鑾峰彇app浠诲姟绠$悊璇︾粏淇℃伅")
@PreAuthorize("@ss.hasPermi('app:task:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfoWithPic(@PathVariable("id") String id) {
@@ -79,7 +85,7 @@
/**
* 鏂板app浠诲姟绠$悊
*/
- @ApiOperation("鏂板app浠诲姟绠$悊")
+ @ApiOperation("鎸囨尌绔�-涓嬪彂浠诲姟")
@PreAuthorize("@ss.hasPermi('app:task:add')")
@Log(title = "app浠诲姟绠$悊", businessType = BusinessType.INSERT)
@PostMapping
@@ -110,7 +116,7 @@
/**
* 鏇存柊app浠诲姟璇︽儏
*/
- @ApiOperation("鏇存柊app浠诲姟璇︽儏(鎵撳崱)")
+ @ApiOperation("鍗曞叺绔�-浠诲姟鎵撳崱")
@PreAuthorize("@ss.hasPermi('app:taskdetail:edit')")
@Log(title = "鏇存柊app浠诲姟璇︽儏", businessType = BusinessType.UPDATE)
@PutMapping("/detail")
@@ -120,7 +126,7 @@
/**
* 鑾峰彇app浠诲姟璇︽儏鐨勮缁嗕俊鎭�
*/
- @ApiOperation("鑾峰彇app浠诲姟璇︽儏鐨勮缁嗕俊鎭�")
+ @ApiOperation("鍗曞叺绔�-浠诲姟鐐硅鎯�")
@PreAuthorize("@ss.hasPermi('app:task:query')")
@GetMapping(value = "/detail/{id}")
public AjaxResult getTaskDetailInfo(@PathVariable("id") String id) {
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java b/ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java
index dc6def6..b8ef70f 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java
@@ -38,6 +38,7 @@
* @return app浠诲姟绠$悊闆嗗悎
*/
public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask);
+ public List<ArdAppTask> selectArdAppTaskListWithDetailById(ArdAppTask ardAppTask);
/**
* 鏂板app浠诲姟绠$悊
*
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java b/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java
index dabba9d..8d18b1e 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java
@@ -41,7 +41,7 @@
* @return app浠诲姟璇︽儏闆嗗悎
*/
public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask);
-
+ public List<ArdAppTask> selectArdAppTaskListWithDetailById(ArdAppTask ardAppTask);
/**
* 鏂板app浠诲姟绠$悊
*
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
index ea832a0..ca958c8 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
@@ -89,27 +89,16 @@
List<ArdAppTask> list = new ArrayList<>();
list.addAll(list1);
return list;
-// boolean flag=false;
-// List<ArdAppTask> ardAppTasks = ardAppTaskMapper.selectArdAppTaskList(ardAppTask);
-// ardAppTask.setUserId(SecurityUtils.getUserId());
-// List<ArdAppTask> ardAppTasksNew=new ArrayList<>();
-// for (ArdAppTask appTask : ardAppTasks) {
-// ArdAppTask task = ardAppTaskMapper.selectArdAppTaskById(appTask.getId());
-// List<ArdAppTaskDetail> ardAppTaskDetailListNew = new ArrayList<>();
-// List<ArdAppTaskDetail> ardAppTaskDetailList = task.getArdAppTaskDetailList();
-// for (ArdAppTaskDetail appTaskDetail : ardAppTaskDetailList) {
-// if (appTaskDetail.getUserId().equals(ardAppTask.getUserId())) {
-// ardAppTaskDetailListNew.add(appTaskDetail);
-// flag=true;
-// }
-// }
-// if(flag) {
-// appTask.setArdAppTaskDetailList(ardAppTaskDetailListNew);
-// ardAppTasksNew.add(appTask);
-// }
-// flag=false;
-// }
-// return ardAppTasksNew;
+
+ }
+
+ @Override
+ public List<ArdAppTask> selectArdAppTaskListWithDetailById(ArdAppTask ardAppTask) {
+ ardAppTask.setUserId(SecurityUtils.getUserId());
+ List<ArdAppTask> list1 = ardAppTaskMapper.selectArdAppTaskListWithDetailById(ardAppTask);
+ List<ArdAppTask> list = new ArrayList<>();
+ list.addAll(list1);
+ return list;
}
/**
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
index d4aadf0..99cf40a 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
@@ -11,9 +11,8 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.common.websocket.util.WebSocketUtils;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
import com.ruoyi.sy.domain.ArdSyUser;
@@ -39,7 +38,7 @@
import javax.annotation.Resource;
-import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
/**
* 涓変竴杞﹁締Service涓氬姟灞傚鐞�
diff --git a/ard-work/src/main/java/com/ruoyi/utils/webrtcService.java b/ard-work/src/main/java/com/ruoyi/utils/webrtcService.java
new file mode 100644
index 0000000..d2b809c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/webrtcService.java
@@ -0,0 +1,37 @@
+package com.ruoyi.utils;
+
+import com.sun.jna.Platform;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * @Description:
+ * @ClassName: webrtcService
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�07鏈�26鏃�13:43:07
+ * @Version: 1.0
+ **/
+@Component
+public class webrtcService {
+ @PostConstruct
+ public void init() {
+ if (Platform.isWindows()) {
+ String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + "webrtc-streamer.exe";
+
+ try {
+ // 鏋勫缓鍚姩鍛戒护锛屼娇鐢╟md /c start鍛戒护鏉ュ惎鍔ㄥ彲鎵ц绋嬪簭骞舵樉绀哄懡浠ゆ彁绀虹绐楀彛
+ String[] cmd = {"cmd", "/c", "start", exePath,"-o"};
+ ProcessBuilder processBuilder = new ProcessBuilder(cmd);
+ processBuilder.redirectErrorStream(true); // 灏嗛敊璇緭鍑洪噸瀹氬悜鍒版爣鍑嗚緭鍑�
+ Process process = processBuilder.start();
+ // 濡傛灉浣犳兂绛夊緟绋嬪簭瀹屾垚
+ int exitCode = process.waitFor();
+ } catch (IOException | InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/websocket/config/websocketConfig.java b/ard-work/src/main/java/com/ruoyi/utils/websocket/config/websocketConfig.java
similarity index 91%
rename from ruoyi-common/src/main/java/com/ruoyi/common/websocket/config/websocketConfig.java
rename to ard-work/src/main/java/com/ruoyi/utils/websocket/config/websocketConfig.java
index c8af08e..5aa35fc 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/websocket/config/websocketConfig.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/websocket/config/websocketConfig.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.websocket.config;
+package com.ruoyi.utils.websocket.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
diff --git a/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java b/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
new file mode 100644
index 0000000..31aaffd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
@@ -0,0 +1,96 @@
+package com.ruoyi.utils.websocket.service;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.app.position.domain.ArdAppPosition;
+import com.ruoyi.app.position.service.impl.AppPositionPush;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @ClassName ChatServerEndpoint
+ * @Description:
+ * @Author 鍒樿嫃涔�
+ * @Date 2023/1/27 7:42
+ * @Version 1.0
+ */
+
+@Component
+@Slf4j(topic = "websocket")
+@ServerEndpoint("/websocket/{userId}")
+public class ChatServerEndpoint {
+
+ @OnOpen
+ public void openSession(@PathParam("userId") String userId, Session session) {
+ WebSocketUtils.ONLINE_USER_SESSIONS.put(userId, session);
+ String message = "鐢ㄦ埛[" + userId + "] 鎴愬姛杩炴帴锛�";
+ log.info("鐢ㄦ埛鐧诲綍锛�" + message);
+ WebSocketUtils.sendMessage(session, message);
+ //姣忎釜鐢ㄦ埛杩炴帴鏃讹紝鍚姩鍒濆鎵�鏈塧pp鐢ㄦ埛浣嶇疆鍙戦��
+ Map<String, ArdAppPosition> appPositionMap = AppPositionPush.getAppPositionList();
+ AppPositionPush.defaultDataMap.put(session,appPositionMap);
+ AppPositionPush.initPushTask(session,3000);
+ }
+
+ @OnMessage
+ public void onMessage(@PathParam("userId") String userId, String message) {
+ log.info("鏀跺埌娑堟伅锛�" + message);
+ Session session = WebSocketUtils.ONLINE_USER_SESSIONS.get(userId);
+ // WebSocketUtils.sendMessage(session, message);
+// sendMessageAll("鐢ㄦ埛[" + userid + "] : " + message);
+ // 鏍规嵁鐢ㄦ埛鏂扮殑棰戠巼閲嶆柊璋冩暣瀹氭椂浠诲姟
+ Map<String,Object> map = JSONObject.parseObject(message, Map.class);
+ if(map.size()>0) {
+ Integer frequency = (Integer)map.get("frequency");
+ String uId = (String) map.get("userId");
+ Map allMap = AppPositionPush.defaultDataMap.get(session);//鑾峰彇褰撳墠session鐨勯粯璁ゅ彂閫佺殑鏁版嵁map
+ if(frequency>0)
+ {
+ //鎺ユ敹鍒伴鐜囧ぇ浜�0锛屽睘浜庣敵璇峰紩瀵硷紝灏哸pp浠庨粯璁ap涓Щ闄�
+ allMap.remove(uId);
+ AppPositionPush.defaultDataMap.putAll(allMap);
+ }
+ else {
+ //鎺ユ敹鍒伴鐜囩瓑浜�0锛屽睘浜庨噴鏀惧紩瀵硷紝灏哸pp鎭㈠鍒板垵濮媘ap
+ Map<String, ArdAppPosition> appPositionList = AppPositionPush.getAppPositionList();
+ allMap.put(uId,appPositionList.get(uId));
+ AppPositionPush.defaultDataMap.putAll(allMap);
+ }
+ AppPositionPush.startLocationPushTask(uId, session, frequency);
+ }
+ }
+
+ @OnClose
+ public void onClose(@PathParam("userId") String userId, Session session) {
+ //褰撳墠鐨凷ession 绉婚櫎
+ WebSocketUtils.ONLINE_USER_SESSIONS.remove(userId);
+// //骞朵笖閫氱煡鍏朵粬浜哄綋鍓嶇敤鎴峰凡缁忕寮�鑱婂ぉ瀹や簡
+ String message="鐢ㄦ埛[" + userId + "] 鏂紑杩炴帴锛�";
+// sendMessage(session,message);
+ log.info("娑堟伅锛�"+message);
+ try {
+ session.close();
+ AppPositionPush.stopLocationPushTask(session);
+ } catch (IOException e) {
+ log.error("onClose error", e);
+ }
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+ try {
+ session.close();
+ } catch (IOException e) {
+ log.error("onError excepiton", e);
+ }
+ log.info("Throwable msg " + throwable.getMessage());
+ }
+
+}
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/websocket/util/WebSocketUtils.java b/ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java
similarity index 77%
rename from ruoyi-common/src/main/java/com/ruoyi/common/websocket/util/WebSocketUtils.java
rename to ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java
index 91a7730..5d35ed4 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/websocket/util/WebSocketUtils.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.websocket.util;
+package com.ruoyi.utils.websocket.util;
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
@@ -6,8 +6,10 @@
import javax.websocket.RemoteEndpoint;
import javax.websocket.Session;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.*;
/**
* @ClassName WebSocketUtils
@@ -63,6 +65,22 @@
}
}
}
+ public static void sendMessage(Session session, List message) {
+ if (session == null) {
+ return;
+ }
+ final RemoteEndpoint.Basic basic = session.getBasicRemote();
+ if (basic == null) {
+ return;
+ }
+ synchronized(session) {
+ try {
+ session.getBasicRemote().sendText( String.join(", ", message));
+ } catch (IOException e) {
+ log.error("sendMessage IOException ",e);
+ }
+ }
+ }
/**
* 鎺ㄩ�佹秷鎭埌鍏朵粬瀹㈡埛绔�
* @param message
diff --git a/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml b/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml
index b12a14b..b5ea1d1 100644
--- a/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml
+++ b/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml
@@ -93,13 +93,13 @@
a.create_time,
a.update_by,
a.update_time,
- b.id as sub2_id,
+ b.id as sub2_id,
b.task_id as sub2_task_id,
b.pic_url as sub2_pic_url,
- c.id as sub1_id,
+ c.id as sub1_id,
c.name as sub1_name,
c.longitude as sub1_longitude,
- c.latitude as sub1_latitde,
+ c.latitude as sub1_latitude,
c.altitude as sub1_altitude,
c.user_id as sub1_user_id,
c.text as sub1_text,
@@ -109,13 +109,59 @@
from ard_app_task a
left join ard_app_task_pic b on b.task_id = a.id
left join ard_app_task_detail c on c.task_id = a.id
- where c.user_id = #{userId}
- <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
- and a.create_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss')
- </if>
- <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
- and a.create_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss')
- </if>
+ <where>
+ <if test="userId != null and userId != ''">
+ and c.user_id = #{userId}
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ and a.create_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ and a.create_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss')
+ </if>
+ </where>
+ </select>
+ <select id="selectArdAppTaskListWithDetailById" parameterType="ArdAppTask" resultMap="ArdAppTaskSubResult">
+ select a.id,
+ a.name,
+ a.text,
+ a.voice,
+ a.dept_id,
+ a.user_id,
+ a.create_by,
+ a.create_time,
+ a.update_by,
+ a.update_time,
+ b.id as sub2_id,
+ b.task_id as sub2_task_id,
+ b.pic_url as sub2_pic_url,
+ c.id as sub1_id,
+ c.name as sub1_name,
+ c.longitude as sub1_longitude,
+ c.latitude as sub1_latitude,
+ c.altitude as sub1_altitude,
+ c.user_id as sub1_user_id,
+ c.text as sub1_text,
+ c.voice as sub1_voice,
+ c.status as sub1_status,
+ c.clock_in_pic_url as sub1_clock_in_pic_url
+ from ard_app_task a
+ left join ard_app_task_pic b on b.task_id = a.id
+ left join ard_app_task_detail c on c.task_id = a.id
+ <where>
+ <if test="userId != null and userId != ''">
+ and c.user_id = #{userId}
+ </if>
+ <if test="id != null and id != ''">
+ and c.id = #{id}
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ and a.create_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+ and a.create_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss')
+ </if>
+ </where>
</select>
<select id="selectArdAppTaskById" parameterType="String" resultMap="ArdAppTaskSubResult">
select a.id,
@@ -128,17 +174,17 @@
a.create_time,
a.update_by,
a.update_time,
- b.id as sub2_id,
- b.task_id as sub2_task_id,
- b.pic_url as sub2_pic_url,
- c.id as sub1_id,
- c.name as sub1_name,
+ b.id as sub2_id,
+ b.task_id as sub2_task_id,
+ b.pic_url as sub2_pic_url,
+ c.id as sub1_id,
+ c.name as sub1_name,
c.longitude as sub1_longitude,
- c.latitude as sub1_latitde,
- c.altitude as sub1_altitude,
- c.user_id as sub1_user_id,
- c.text as sub1_text,
- c.voice as sub1_voice
+ c.latitude as sub1_latitude,
+ c.altitude as sub1_altitude,
+ c.user_id as sub1_user_id,
+ c.text as sub1_text,
+ c.voice as sub1_voice
from ard_app_task a
left join ard_app_task_pic b on b.task_id = a.id
left join ard_app_task_detail c on c.task_id = a.id
@@ -155,9 +201,9 @@
a.create_time,
a.update_by,
a.update_time,
- b.id as sub_id,
- b.task_id as sub_task_id,
- b.pic_url as sub_pic_url
+ b.id as sub2_id,
+ b.task_id as sub2_task_id,
+ b.pic_url as sub2_pic_url
from ard_app_task a
left join ard_app_task_pic b on b.task_id = a.id
where a.id = #{id}
@@ -173,16 +219,16 @@
a.create_time,
a.update_by,
a.update_time,
- c.id as sub_id,
- c.name as sub_name,
- c.longitude as sub_longitude,
- c.latitude as sub_latitde,
- c.altitude as sub_altitude,
- c.user_id as sub_user_id,
- c.text as sub_text,
- c.voice as sub_voice,
- c.status as sub_status,
- c.clock_in_pic_url as sub_clock_in_pic_url
+ c.id as sub1_id,
+ c.name as sub1_name,
+ c.longitude as sub1_longitude,
+ c.latitude as sub1_latitude,
+ c.altitude as sub1_altitude,
+ c.user_id as sub1_user_id,
+ c.text as sub1_text,
+ c.voice as sub1_voice,
+ c.status as sub1_status,
+ c.clock_in_pic_url as sub1_clock_in_pic_url
from ard_app_task a
left join ard_app_task_detail c on c.task_id = a.id
where a.id = #{id}
@@ -279,7 +325,8 @@
</delete>
<insert id="batchArdAppTaskDetail">
- insert into ard_app_task_detail( id, name, longitude, latitude, altitude, user_id, text, voice, task_id,status,clock_in_pic_url) values
+ insert into ard_app_task_detail( id, name, longitude, latitude, altitude, user_id, text, voice,
+ task_id,status,clock_in_pic_url) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.name}, #{item.longitude}, #{item.latitude}, #{item.altitude}, #{item.userId},
#{item.text}, #{item.voice}, #{item.taskId}, #{item.status}, #{item.clockInPicUrl})
@@ -308,8 +355,7 @@
where task_detail_id = #{taskDetailId}
</delete>
<select id="selectArdAppTaskDetailById" parameterType="String" resultType="ArdAppTaskDetail">
- select
- c.id,
+ select c.id,
c.name,
c.longitude,
c.latitude,
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/websocket/service/ChatServerEndpoint.java b/ruoyi-common/src/main/java/com/ruoyi/common/websocket/service/ChatServerEndpoint.java
deleted file mode 100644
index 5e7303d..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/websocket/service/ChatServerEndpoint.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.ruoyi.common.websocket.service;
-
-import com.ruoyi.common.utils.SecurityUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import javax.websocket.*;
-import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
-import java.io.IOException;
-
-import static com.ruoyi.common.websocket.util.WebSocketUtils.*;
-
-
-/**
- * @ClassName ChatServerEndpoint
- * @Description:
- * @Author 鍒樿嫃涔�
- * @Date 2023/1/27 7:42
- * @Version 1.0
- */
-
-@Component
-@Slf4j(topic = "websocket")
-@ServerEndpoint("/websocket/{userId}")
-public class ChatServerEndpoint {
-
- @OnOpen
- public void openSession( @PathParam("userId")String userId, Session session) {
-
- ONLINE_USER_SESSIONS.put(userId, session);
- String message = "鐢ㄦ埛[" + userId + "] 鎴愬姛杩炴帴锛�";
- log.info("鐢ㄦ埛鐧诲綍锛�"+message);
- sendMessage(session,message);
- }
-
- @OnMessage
- public void onMessage(@PathParam("userId")String userId, String message) {
- log.info("鏀跺埌娑堟伅锛�"+message);
- Session session = ONLINE_USER_SESSIONS.get(userId);
- sendMessage(session,message);
-// sendMessageAll("鐢ㄦ埛[" + userid + "] : " + message);
- }
-
- @OnClose
- public void onClose( @PathParam("userId")String userId,Session session) {
- //褰撳墠鐨凷ession 绉婚櫎
- ONLINE_USER_SESSIONS.remove(userId);
-// //骞朵笖閫氱煡鍏朵粬浜哄綋鍓嶇敤鎴峰凡缁忕寮�鑱婂ぉ瀹や簡
-// String message="鐢ㄦ埛[" + userId + "] 鏂紑杩炴帴锛�";
-// sendMessage(session,message);
-// log.info("鍙戦�佹秷鎭細"+message);
- try {
- session.close();
- } catch (IOException e) {
- log.error("onClose error",e);
- }
- }
-
- @OnError
- public void onError(Session session, Throwable throwable) {
- try {
- session.close();
- } catch (IOException e) {
- log.error("onError excepiton",e);
- }
- log.info("Throwable msg "+throwable.getMessage());
- }
-}
\ No newline at end of file
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
index a082abe..1eea459 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
@@ -4,14 +4,14 @@
import com.ruoyi.alarm.global.domain.GuideTask;
import com.ruoyi.alarm.global.service.IGlobalAlarmService;
import com.ruoyi.common.utils.spring.SpringUtils;
-import com.ruoyi.common.websocket.util.WebSocketUtils;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.concurrent.PriorityBlockingQueue;
-import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
/**
* @ClassName: AlarmTask
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AppTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AppTask.java
new file mode 100644
index 0000000..f2b8ecd
--- /dev/null
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AppTask.java
@@ -0,0 +1,13 @@
+package com.ruoyi.quartz.task;
+
+/**
+ * @Description:
+ * @ClassName: AppTask
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�07鏈�26鏃�11:57:33
+ * @Version: 1.0
+ **/
+public class AppTask {
+
+
+}
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 388b551..f844f56 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
@@ -6,20 +6,16 @@
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.utils.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.*;
-import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
/**
* @Description:
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index 897852b..6249b54 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -26,7 +26,7 @@
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
public List<SysUser> selectAppUserList(SysUser user);
-
+ public List<SysUser> selectAppUserListNoDataScope(SysUser user);
/**
* 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
*
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index c74bca5..8100fa0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -141,7 +141,10 @@
public List<SysUser> selectAppUserList(SysUser user) {
return userMapper.selectAppUserList(user);
}
-
+ @Override
+ public List<SysUser> selectAppUserListNoDataScope(SysUser user) {
+ return userMapper.selectAppUserList(user);
+ }
/**
* 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
*
--
Gitblit v1.9.3