From 7e28149acdcf0c7dd59171c0ec63807759c86c00 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 05 九月 2023 10:41:35 +0800
Subject: [PATCH] 电子围栏报警区分禁入禁出 电子围栏报警查看标记增加毫秒 初始化程序增加启动顺序

---
 ard-work/src/main/java/com/ruoyi/alarm/wall/service/impl/ArdAlarmWallServiceImpl.java     |    1 
 ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java                             |    2 
 ard-work/src/main/resources/mapper/alarmpoints/ArdWallMapper.xml                          |    4 +
 ard-work/src/main/java/com/ruoyi/alarm/wall/domain/ArdAlarmWall.java                      |    1 
 ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java                    |    2 
 ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java    |    3 
 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java                 |   35 ++++++-----
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java |   95 ++++++++++++++++++++-----------
 ard-work/src/main/resources/templates/preview.html                                        |   12 ++-
 9 files changed, 98 insertions(+), 57 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
index cf8633c..0af7c58 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -592,6 +592,7 @@
     @Override
     public Object updateAlarmViewTime(GlobalAlarmCondition condition) {
         SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat fmtms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
         switch (condition.getCommand()) {
             case 1001:
                 ArdAlarmStealelec ardAlarmStealelec = ardAlarmStealelecMapper.selectByPrimaryKey(condition.getId());
@@ -662,7 +663,7 @@
                 ArdAlarmWall ardAlarmWall = ardAlarmWallMapper.selectArdAlarmWallById(condition.getId());
                 if (StringUtils.isNotNull(ardAlarmWall)) {
                     String userId = ardAlarmWall.getUserId();
-                    String alarmTime = fmt.format(ardAlarmWall.getCreateTime());
+                    String alarmTime = fmtms.format(ardAlarmWall.getAlarmTime());
                     ardAlarmWallMapper.updateViewTimeByUserId(userId, alarmTime, DateUtils.getTime());
                     return ardAlarmWall;
                 }
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/wall/domain/ArdAlarmWall.java b/ard-work/src/main/java/com/ruoyi/alarm/wall/domain/ArdAlarmWall.java
index af81600..31aa09d 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/wall/domain/ArdAlarmWall.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/wall/domain/ArdAlarmWall.java
@@ -6,6 +6,7 @@
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * 鐢靛瓙鍥存爮鎶ヨ瀵硅薄 ard_alarm_wall
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/wall/service/impl/ArdAlarmWallServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/wall/service/impl/ArdAlarmWallServiceImpl.java
index b229904..fd52b53 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/wall/service/impl/ArdAlarmWallServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/wall/service/impl/ArdAlarmWallServiceImpl.java
@@ -50,7 +50,6 @@
      */
     @Override
     public int insertArdAlarmWall(ArdAlarmWall ardAlarmWall) {
-
                 ardAlarmWall.setCreateBy(SecurityUtils.getUsername());
                 ardAlarmWall.setCreateTime(DateUtils.getNowDate());
             return ardAlarmWallMapper.insertArdAlarmWall(ardAlarmWall);
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 db67b30..614f958 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
@@ -21,6 +21,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -228,14 +229,15 @@
     ArdWallMapper ardWallMapper;
     @Resource
     IArdAlarmWallService ardAlarmWallService;
-    Map<String, String> userLastAlarm = new HashMap<>();
-
+    Map<String, String> userInLastAlarm = new HashMap<>();
+    Map<String, String> userOutLastAlarm = new HashMap<>();
     /**
      * 瀹炴椂浣嶇疆妫�娴嬪洿鏍忔姤璀�
      * 鍒樿嫃涔�
      * 2023/8/31 8:54:06
      */
     public List<ArdAlarmWall> DetectionWallAlarm(ArdAppPosition ardAppPosition) {
+        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         List<ArdAlarmWall> ardAlarmWalls=new ArrayList<>();
         //鑾峰彇褰撳墠鐢ㄦ埛鐨勯儴闂�
         String userId = ardAppPosition.getUserId();
@@ -248,6 +250,7 @@
         if (ardWalls.size() > 0) {
             for (ArdWall wall : ardWalls) {
                 String wallPoi = wall.getWallPoi();
+                String wallType = wall.getType();
                 //澶勭悊澶氳竟褰㈢殑姣忎釜鐐圭殑缁忕含搴�
                 String[] parts = wallPoi.split(",");
                 List<Point> pointList = new ArrayList<>();
@@ -257,42 +260,68 @@
                     point.setLatitude(Double.valueOf(parts[i + 1]));
                     pointList.add(point);
                 }
-
-                //鍒ゆ柇褰撳墠鐢ㄦ埛浣嶇疆鏄惁鍦ㄥ洿鏍忓唴
-                Point userPoint=new Point();
-                userPoint.setLongitude(ardAppPosition.getLongitude());
-                userPoint.setLatitude(ardAppPosition.getLatitude());
+                Point userPoint=new Point(ardAppPosition.getLongitude(),ardAppPosition.getLatitude());
                 boolean inPolygon = GisUtil.isInPolygon(userPoint, pointList);
-                if (inPolygon) {
-                    String lastAlarmId = userLastAlarm.get(userId);
-                    ArdAlarmWall ardAlarmWall = new ArdAlarmWall();
-                    ardAlarmWall.setWallId(wall.getId());
-                    ardAlarmWall.setWallName(wall.getWallName());
-                    ardAlarmWall.setUserId(userId);
-                    ardAlarmWall.setAlarmTime(new Date());
-                    ardAlarmWall.setAlarmType(wall.getType());
-                    ardAlarmWall.setLongitude(ardAppPosition.getLongitude());
-                    ardAlarmWall.setLatitude(ardAppPosition.getLatitude());
-                    ardAlarmWall.setAltitude(ardAppPosition.getAltitude());
-                    if (lastAlarmId == null) {
-                        String uuid = IdUtils.simpleUUID();
-                        //    褰撳墠鐢ㄦ埛涓婁竴娆$姸鎬佹湭杩涘叆锛岀敓鎴愭姤璀�
-                        ardAlarmWall.setId(uuid);
-                        ardAlarmWallService.insertArdAlarmWall(ardAlarmWall);
-                        //鏇存柊鏈�鍚庢姤璀d
-                        userLastAlarm.put(userId, uuid);
-                    } else {
-                        //    涓婁竴娆$敤鎴风姸鎬佸凡杩涘叆锛屾洿鏂版渶鍚庢姤璀�
-                        ardAlarmWall.setId(lastAlarmId);
-                        ardAlarmWallService.updateArdAlarmWall(ardAlarmWall);
+                ArdAlarmWall ardAlarmWall = new ArdAlarmWall();
+                ardAlarmWall.setWallId(wall.getId());
+                ardAlarmWall.setWallName(wall.getWallName());
+                ardAlarmWall.setUserId(userId);
+                ardAlarmWall.setAlarmTime(DateUtils.getNowDate());
+                ardAlarmWall.setAlarmType(wall.getType());
+                ardAlarmWall.setLongitude(ardAppPosition.getLongitude());
+                ardAlarmWall.setLatitude(ardAppPosition.getLatitude());
+                ardAlarmWall.setAltitude(ardAppPosition.getAltitude());
+                //绂佸叆
+                if("1".equals(wallType)) {
+                    //鍒ゆ柇褰撳墠鐢ㄦ埛浣嶇疆鏄惁鍦ㄥ洿鏍忓唴
+                    if (inPolygon) {
+                        String lastInAlarmId = userInLastAlarm.get(userId);
+                        if (lastInAlarmId == null) {
+                            String uuid = IdUtils.simpleUUID();
+                            //褰撳墠鐢ㄦ埛涓婁竴娆$姸鎬佹湭杩涘叆锛岀敓鎴愭姤璀�
+                            ardAlarmWall.setId(uuid);
+                            ardAlarmWallService.insertArdAlarmWall(ardAlarmWall);
+                            //鏇存柊鏈�鍚庢姤璀d
+                            userInLastAlarm.put(userId, uuid);
+                        } else {
+                            //涓婁竴娆$敤鎴风姸鎬佸凡杩涘叆锛屾洿鏂版渶鍚庢姤璀�
+                            ardAlarmWall.setId(lastInAlarmId);
+                            ardAlarmWallService.updateArdAlarmWall(ardAlarmWall);
+                        }
+                        ardAlarmWalls.add(ardAlarmWall);
                     }
-                    ardAlarmWalls.add(ardAlarmWall);
+                    else
+                    {
+                        //绉婚櫎鏈�鍚庢姤璀d
+                        userInLastAlarm.remove(userId);
+                    }
                 }
-                else
+                else//绂佸嚭
                 {
-                    //绉婚櫎鏈�鍚庢姤璀d
-                    userLastAlarm.remove(userId);
+                    //鍒ゆ柇褰撳墠鐢ㄦ埛浣嶇疆鏄惁鍦ㄥ洿鏍忓
+                    if (!inPolygon) {
+                        String lastAlarmId = userOutLastAlarm.get(userId);
+                        if (lastAlarmId == null) {
+                            String uuid = IdUtils.simpleUUID();
+                            //褰撳墠鐢ㄦ埛涓婁竴娆$姸鎬佹湭杩涘叆锛岀敓鎴愭姤璀�
+                            ardAlarmWall.setId(uuid);
+                            ardAlarmWallService.insertArdAlarmWall(ardAlarmWall);
+                            //鏇存柊鏈�鍚庢姤璀d
+                            userOutLastAlarm.put(userId, uuid);
+                        } else {
+                            //涓婁竴娆$敤鎴风姸鎬佸凡杩涘叆锛屾洿鏂版渶鍚庢姤璀�
+                            ardAlarmWall.setId(lastAlarmId);
+                            ardAlarmWallService.updateArdAlarmWall(ardAlarmWall);
+                        }
+                        ardAlarmWalls.add(ardAlarmWall);
+                    }
+                    else
+                    {
+                        //绉婚櫎鏈�鍚庢姤璀d
+                        userOutLastAlarm.remove(userId);
+                    }
                 }
+
             }
         }
         return ardAlarmWalls;
diff --git a/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java b/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
index e91ca81..411a27f 100644
--- a/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
+++ b/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
@@ -101,7 +101,7 @@
     @ApiOperation("绉婚櫎鎷夋祦")
     @ApiOperationSupport(order =4 )
     @PreAuthorize("@ss.hasPermi('media:stream:remove')")
-    @DeleteMapping("/{id}")
+    @DeleteMapping("/{sessionId}")
     public AjaxResult removePullStreamSession(@PathVariable String sessionId) {
         List<StreamInfo> pullStreamList = mediaService.getPullStreamList();
         StreamInfo streamInfo = pullStreamList.stream()
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
index c7cdcc4..bd0b588 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
@@ -11,6 +11,9 @@
 import com.sun.jna.Platform;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -33,7 +36,8 @@
  **/
 @Service
 @Slf4j(topic = "cmd")
-public class MediaServiceImpl implements IMediaService {
+@Order(1)
+public class MediaServiceImpl implements IMediaService, ApplicationRunner {
     @Resource
     VtduMapper vtduMapper;
     @Resource
@@ -47,12 +51,24 @@
 
     String processName = "mediamtx.exe";
 
-    static{
 
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        log.info("寮�濮嬪姞杞芥祦濯掍綋鍒楄〃");
+        List<StreamInfo> paths = paths();
+        for(StreamInfo path:paths)
+        {
+            mediaClient.removePath(path.getName());
+        }
+        List<Vtdu> vtduList = vtduMapper.selectVtduList(new Vtdu());
+        for (Vtdu v : vtduList) {
+            addPath(v.getName(), v.getRtspUrl(), v.getCodeType(), v.getIsCode());
+        }
     }
     @PostConstruct
     public void initMediaMtx() {
         if (mediamtxEnabled) {
+            log.info("鍒濆鍖栧惎鍔╩ediaMTX");
             if (Platform.isWindows()) {
                 String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.exe";
                 String ymlPath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.yml";
@@ -70,20 +86,6 @@
 //            String[] command = {"cmd","/c","start",exePath,ymlPath};
 //            CmdUtils.commandStart(command);
             }
-        }
-        try {
-            Thread.sleep(2000); // 绛夊緟5绉�
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-        List<StreamInfo> paths = paths();
-        for(StreamInfo path:paths)
-        {
-            mediaClient.removePath(path.getName());
-        }
-        List<Vtdu> vtduList = vtduMapper.selectVtduList(new Vtdu());
-        for (Vtdu v : vtduList) {
-            addPath(v.getName(), v.getRtspUrl(), v.getCodeType(), v.getIsCode());
         }
     }
 
@@ -456,4 +458,5 @@
             return false;
         }
     }
+
 }
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java
index 00f5496..80d69ed 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java
@@ -6,6 +6,7 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 import java.io.UnsupportedEncodingException;
 /**
@@ -17,6 +18,7 @@
  **/
 @Component
 @Slf4j(topic = "mqtt")
+@Order(2)
 public class MqttConsumer implements ApplicationRunner {
 
     @Value("${mqtt.enabled}")
diff --git a/ard-work/src/main/resources/mapper/alarmpoints/ArdWallMapper.xml b/ard-work/src/main/resources/mapper/alarmpoints/ArdWallMapper.xml
index da756a4..813c2d8 100644
--- a/ard-work/src/main/resources/mapper/alarmpoints/ArdWallMapper.xml
+++ b/ard-work/src/main/resources/mapper/alarmpoints/ArdWallMapper.xml
@@ -42,8 +42,10 @@
             <if test="wallPoi != null  and wallPoi != ''"> and wall_poi = #{wallPoi}</if>
             <if test="type != null  and type != ''"> and type = #{type}</if>
             <if test="color != null  and color != ''"> and color = #{color}</if>
-            <if test="deptId != null "> and dept_id = #{deptId}</if>
             <if test="userId != null  and userId != ''"> and user_id = #{userId}</if>
+            <if test="deptId != null ">and (dept_id = #{deptId} OR dept_id IN ( SELECT t.dept_id FROM sys_dept t
+                WHERE cast(#{deptId} as varchar) = any(string_to_array(ancestors,',')) ))
+            </if>
         </where>
     </select>
     
diff --git a/ard-work/src/main/resources/templates/preview.html b/ard-work/src/main/resources/templates/preview.html
index 381edb7..9845351 100644
--- a/ard-work/src/main/resources/templates/preview.html
+++ b/ard-work/src/main/resources/templates/preview.html
@@ -151,11 +151,15 @@
     var chanMap = new Map();
     window.onload = function () {
         changeGrid(2, 2);
-        chanMap.set("video1", "http://127.0.0.1:8889/245/");
-        chanMap.set("video2", "http://127.0.0.1:8889/164/");
-        chanMap.set("video3", "http://127.0.0.1:8889/164/");
-        chanMap.set("video4", "http://127.0.0.1:8889/165/");
+        chanMap.set("video1", "http://127.0.0.1:8889/164/");
+        chanMap.set("video2", "http://127.0.0.1:8889/165/");
+        chanMap.set("video3", "http://127.0.0.1:8889/245/");
+        chanMap.set("video4", "http://127.0.0.1:8889/164/");
         chanMap.set("video5", "http://127.0.0.1:8889/165/");
+        chanMap.set("video6", "http://127.0.0.1:8889/245/");
+        chanMap.set("video7", "http://127.0.0.1:8889/164/");
+        chanMap.set("video8", "http://127.0.0.1:8889/165/");
+        chanMap.set("video9", "http://127.0.0.1:8889/245/");
         console.log(chanMap);
     }
     const linkToIceServers = (links) => (

--
Gitblit v1.9.3