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/app/position/service/impl/ArdAppPositionServiceImpl.java |   95 +++++++++++++++++++++++++++++++----------------
 1 files changed, 62 insertions(+), 33 deletions(-)

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;

--
Gitblit v1.9.3