修改websocket包位置
增加单兵端-下发给我的任务详情
增加app位置websocket推送按用户频率
已添加4个文件
已重命名2个文件
已修改13个文件
已删除1个文件
| | |
| | | List<SysUser> offLineList=new ArrayList<>(); |
| | | for(SysUser sysUser:list) |
| | | { |
| | | |
| | | ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId()); |
| | | if(ardAppPosition!=null) { |
| | | Map<String, Object> params =new HashMap<>(); |
| | |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteArdAppPositionById(String id); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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<>();//é»è®¤ä¼è¯åéæ°æ®map |
| | | |
| | | // åå§å®æ¶ä»»å¡ï¼æ ¹æ®ç¨æ·è®¾ç½®çé¢ç宿æ¨é宿¶ä½ç½®ä¿¡æ¯ |
| | | 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); |
| | | } |
| | | } |
| | | //æ¥è¯¢ææappç¨æ·çä½ç½®ä¿¡æ¯ |
| | | public static Map<String,ArdAppPosition> getAppPositionList() |
| | | { |
| | | Map<String,ArdAppPosition> userMap=new HashMap<>(); |
| | | ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class); |
| | | //è·åææappç¨æ· |
| | | 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; |
| | | } |
| | | } |
| | | |
| | |
| | | public int deleteArdAppPositionById(String id) { |
| | | return ardAppPositionMapper.deleteArdAppPositionById(id); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | /** |
| | | * æ¥è¯¢appä»»å¡ç®¡çå表 |
| | | */ |
| | | @ApiOperation("æ¥è¯¢appä»»å¡ç®¡çå表") |
| | | @ApiOperation("ææ¥ç«¯-åå²ä»»å¡æ¥è¯¢") |
| | | @PreAuthorize("@ss.hasPermi('app:task:list')") |
| | | @GetMapping("/list") |
| | | public TableDataInfo list(ArdAppTask ardAppTask) { |
| | |
| | | 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ä»»å¡ç®¡çå表 |
| | |
| | | /** |
| | | * è·åappä»»å¡ç®¡ç详ç»ä¿¡æ¯ |
| | | */ |
| | | @ApiOperation("è·åappä»»å¡ç®¡ç详ç»ä¿¡æ¯") |
| | | @PreAuthorize("@ss.hasPermi('app:task:query')") |
| | | @GetMapping(value = "/{id}") |
| | | public AjaxResult getInfoWithPic(@PathVariable("id") String id) { |
| | |
| | | /** |
| | | * æ°å¢appä»»å¡ç®¡ç |
| | | */ |
| | | @ApiOperation("æ°å¢appä»»å¡ç®¡ç") |
| | | @ApiOperation("ææ¥ç«¯-ä¸åä»»å¡") |
| | | @PreAuthorize("@ss.hasPermi('app:task:add')") |
| | | @Log(title = "appä»»å¡ç®¡ç", businessType = BusinessType.INSERT) |
| | | @PostMapping |
| | |
| | | /** |
| | | * æ´æ°appä»»å¡è¯¦æ
|
| | | */ |
| | | @ApiOperation("æ´æ°appä»»å¡è¯¦æ
(æå¡)") |
| | | @ApiOperation("åå
µç«¯-任塿å¡") |
| | | @PreAuthorize("@ss.hasPermi('app:taskdetail:edit')") |
| | | @Log(title = "æ´æ°appä»»å¡è¯¦æ
", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/detail") |
| | |
| | | /** |
| | | * è·åappä»»å¡è¯¦æ
ç详ç»ä¿¡æ¯ |
| | | */ |
| | | @ApiOperation("è·åappä»»å¡è¯¦æ
ç详ç»ä¿¡æ¯") |
| | | @ApiOperation("åå
µç«¯-ä»»å¡ç¹è¯¦æ
") |
| | | @PreAuthorize("@ss.hasPermi('app:task:query')") |
| | | @GetMapping(value = "/detail/{id}") |
| | | public AjaxResult getTaskDetailInfo(@PathVariable("id") String id) { |
| | |
| | | * @return appä»»å¡ç®¡çéå |
| | | */ |
| | | public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask); |
| | | public List<ArdAppTask> selectArdAppTaskListWithDetailById(ArdAppTask ardAppTask); |
| | | /** |
| | | * æ°å¢appä»»å¡ç®¡ç |
| | | * |
| | |
| | | * @return appä»»å¡è¯¦æ
éå |
| | | */ |
| | | public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask); |
| | | |
| | | public List<ArdAppTask> selectArdAppTaskListWithDetailById(ArdAppTask ardAppTask); |
| | | /** |
| | | * æ°å¢appä»»å¡ç®¡ç |
| | | * |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | |
| | | 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; |
| | |
| | | |
| | | 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ä¸å¡å±å¤ç |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 { |
| | | // æå»ºå¯å¨å½ä»¤ï¼ä½¿ç¨cmd /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(); |
| | | } |
| | | } |
| | | } |
| | | } |
ÎļþÃû´Ó ruoyi-common/src/main/java/com/ruoyi/common/websocket/config/websocketConfig.java ÐÞ¸Ä |
| | |
| | | package com.ruoyi.common.websocket.config; |
| | | package com.ruoyi.utils.websocket.config; |
| | | |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | //æ¯ä¸ªç¨æ·è¿æ¥æ¶ï¼å¯å¨åå§ææappç¨æ·ä½ç½®åé |
| | | 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ï¼å±äºç³è¯·å¼å¯¼ï¼å°appä»é»è®¤mapä¸ç§»é¤ |
| | | allMap.remove(uId); |
| | | AppPositionPush.defaultDataMap.putAll(allMap); |
| | | } |
| | | else { |
| | | //æ¥æ¶å°é¢ççäº0ï¼å±äºéæ¾å¼å¯¼ï¼å°appæ¢å¤å°åå§map |
| | | 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) { |
| | | //å½åçSession ç§»é¤ |
| | | 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()); |
| | | } |
| | | |
| | | } |
ÎļþÃû´Ó ruoyi-common/src/main/java/com/ruoyi/common/websocket/util/WebSocketUtils.java ÐÞ¸Ä |
| | |
| | | package com.ruoyi.common.websocket.util; |
| | | package com.ruoyi.utils.websocket.util; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | 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 |
| | |
| | | } |
| | | } |
| | | } |
| | | 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 |
| | |
| | | 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, |
| | |
| | | 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, |
| | |
| | | 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 |
| | |
| | | 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} |
| | |
| | | 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} |
| | |
| | | </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}) |
| | |
| | | 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, |
| | |
| | | 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 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.quartz.task; |
| | | |
| | | /** |
| | | * @Description: |
| | | * @ClassName: AppTask |
| | | * @Author: åèä¹ |
| | | * @Date: 2023å¹´07æ26æ¥11:57:33 |
| | | * @Version: 1.0 |
| | | **/ |
| | | public class AppTask { |
| | | |
| | | |
| | | } |
| | |
| | | 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: |
| | |
| | | * @return ç¨æ·ä¿¡æ¯éåä¿¡æ¯ |
| | | */ |
| | | public List<SysUser> selectAppUserList(SysUser user); |
| | | |
| | | public List<SysUser> selectAppUserListNoDataScope(SysUser user); |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶å页æ¥è¯¢å·²åé
ç¨æ·è§è²å表 |
| | | * |
| | |
| | | public List<SysUser> selectAppUserList(SysUser user) { |
| | | return userMapper.selectAppUserList(user); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUser> selectAppUserListNoDataScope(SysUser user) { |
| | | return userMapper.selectAppUserList(user); |
| | | } |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶å页æ¥è¯¢å·²åé
ç¨æ·è§è²å表 |
| | | * |