From b4b41579891db69a4240d422c8f4dae68cc267aa Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期一, 08 七月 2024 15:29:04 +0800
Subject: [PATCH] 罐车异常停车报警提交

---
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                           |    8 
 ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml                  |   97 ++++++++
 ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml                               |    7 
 ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java                    |    7 
 ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java                     |    8 
 ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java         |   60 +++++
 ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankAbnormalParkAlarmMapper.java            |   67 ++++++
 ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml                                  |    5 
 ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java                            |    2 
 ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankAbnormalParkAlarm.java                  |  121 +++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java                     |    2 
 ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallMapper.java                         |    4 
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java |  219 +++++++++++++++++++
 13 files changed, 607 insertions(+), 0 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
index beb7e1a..d7644e2 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -14,6 +14,7 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.sy.param.ArdSyCarParam;
+import com.ruoyi.sy.service.IArdTankAbnormalParkAlarmService;
 import com.ruoyi.sy.vo.ArdSyCarVo;
 import com.ruoyi.sy.domain.ArdSyUser;
 import com.ruoyi.sy.gps31.PositionContainer;
@@ -71,6 +72,9 @@
     @Autowired
     private ISysDeptService sysDeptService;
 
+    @Autowired
+    private IArdTankAbnormalParkAlarmService ardTankAbnormalParkAlarmService;
+
     @Resource
     private SYClient sYClient;
 
@@ -126,6 +130,9 @@
         PushClientImplAlarm pushClientImplAlarm = new PushClientImplAlarm(ip,userId,password);
         Thread pushClientImplAlarmThread = new Thread(pushClientImplAlarm);
         pushClientImplAlarmThread.start();
+
+        //鍒犻櫎缁撴潫鏃堕棿涓簄ull鐨勮褰�
+        int result = ardTankAbnormalParkAlarmService.deleteArdTankAbnormalParkAlarmByEndTime();
     }
 
     /**
diff --git a/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankAbnormalParkAlarm.java b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankAbnormalParkAlarm.java
new file mode 100644
index 0000000..02ffc91
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankAbnormalParkAlarm.java
@@ -0,0 +1,121 @@
+package com.ruoyi.sy.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍瀵硅薄 ard_tank_abnormal_park_alarm
+ * 
+ * @author ard
+ * @date 2024-07-08
+ */
+public class ArdTankAbnormalParkAlarm extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭 */
+    private String id;
+
+    /** 涓変竴杞﹁締涓婚敭 */
+    @Excel(name = "涓変竴杞﹁締涓婚敭")
+    private String carId;
+
+    /** 涓変竴杞﹁締鍚嶇О */
+    @Excel(name = "涓変竴杞﹁締鍚嶇О")
+    private String carName;
+
+    /** 缁忓害 */
+    @Excel(name = "缁忓害")
+    private String longitude;
+
+    /** 绾害 */
+    @Excel(name = "绾害")
+    private String latitude;
+
+    /** 寮�濮嬫椂闂� */
+    @Excel(name = "寮�濮嬫椂闂�")
+    private String beginTime;
+
+    /** 缁撴潫鏃堕棿 */
+    @Excel(name = "缁撴潫鏃堕棿")
+    private String endTime;
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+    public void setCarId(String carId) 
+    {
+        this.carId = carId;
+    }
+
+    public String getCarId() 
+    {
+        return carId;
+    }
+    public void setCarName(String carName) 
+    {
+        this.carName = carName;
+    }
+
+    public String getCarName() 
+    {
+        return carName;
+    }
+    public void setLongitude(String longitude) 
+    {
+        this.longitude = longitude;
+    }
+
+    public String getLongitude() 
+    {
+        return longitude;
+    }
+    public void setLatitude(String latitude) 
+    {
+        this.latitude = latitude;
+    }
+
+    public String getLatitude() 
+    {
+        return latitude;
+    }
+    public void setBeginTime(String beginTime) 
+    {
+        this.beginTime = beginTime;
+    }
+
+    public String getBeginTime() 
+    {
+        return beginTime;
+    }
+    public void setEndTime(String endTime) 
+    {
+        this.endTime = endTime;
+    }
+
+    public String getEndTime() 
+    {
+        return endTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("carId", getCarId())
+            .append("carName", getCarName())
+            .append("longitude", getLongitude())
+            .append("latitude", getLatitude())
+            .append("beginTime", getBeginTime())
+            .append("endTime", getEndTime())
+            .toString();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
index 881433c..d970b18 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -376,6 +376,14 @@
 
                 }*/
 
+                Thread tankCarParkingAlarmThread = new Thread(){//鍒涘缓绾跨▼鍒ゆ柇缃愯溅寮傚父鍋滆溅鎶ヨ
+                    @Override
+                    public void run() {
+                        ((ArdTankAbnormalParkAlarmServiceImpl)SpringUtils.getBean("ardTankAbnormalParkAlarmServiceImpl")).insertArdTankAbnormalParkAlarm(gpsMap);
+                    }
+                };
+                tankCarParkingAlarmThread.start();
+
                 gpsMap.putAll(result);
                 String ancestors = (String) gpsMap.get("ancestors");//鑾峰彇鐖剁骇閮ㄩ棬
                 String[] ancestorsArray = ancestors.split(",");
diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java
index c70b53e..22ae2e4 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java
@@ -86,4 +86,6 @@
     public Map<String, Object> getArdSyCarAndDeptByCarId(String carId);
 
     public List<String> selectArdSyCarByDeptIds(@Param("deptIdList") List<Long> deptIdList);
+
+    public ArdSyCar getArdSyTankCarByCarId(String carId);
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankAbnormalParkAlarmMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankAbnormalParkAlarmMapper.java
new file mode 100644
index 0000000..c3ffaf2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankAbnormalParkAlarmMapper.java
@@ -0,0 +1,67 @@
+package com.ruoyi.sy.mapper;
+
+import java.util.List;
+import com.ruoyi.sy.domain.ArdTankAbnormalParkAlarm;
+
+/**
+ * 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍Mapper鎺ュ彛
+ * 
+ * @author ard
+ * @date 2024-07-08
+ */
+public interface ArdTankAbnormalParkAlarmMapper 
+{
+    /**
+     * 鏌ヨ缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * 
+     * @param id 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍涓婚敭
+     * @return 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     */
+    public ArdTankAbnormalParkAlarm selectArdTankAbnormalParkAlarmById(String id);
+
+    /**
+     * 鏌ヨ缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍鍒楄〃
+     * 
+     * @param ardTankAbnormalParkAlarm 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * @return 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍闆嗗悎
+     */
+    public List<ArdTankAbnormalParkAlarm> selectArdTankAbnormalParkAlarmList(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm);
+
+    /**
+     * 鏂板缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * 
+     * @param ardTankAbnormalParkAlarm 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * @return 缁撴灉
+     */
+    public int insertArdTankAbnormalParkAlarm(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm);
+
+    /**
+     * 淇敼缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * 
+     * @param ardTankAbnormalParkAlarm 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * @return 缁撴灉
+     */
+    public int updateArdTankAbnormalParkAlarm(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm);
+
+    /**
+     * 鍒犻櫎缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * 
+     * @param id 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteArdTankAbnormalParkAlarmById(String id);
+
+    /**
+     * 鎵归噺鍒犻櫎缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteArdTankAbnormalParkAlarmByIds(String[] ids);
+
+    public ArdTankAbnormalParkAlarm selectArdTankAbnormalParkAlarmByCarIdAndEndTimeIsNull(String carId);
+
+    public int deleteArdTankAbnormalParkAlarmByCarId(String carId);
+
+    public int deleteArdTankAbnormalParkAlarmByEndTime();
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallMapper.java
index 444ee50..f6ffff2 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallMapper.java
@@ -66,4 +66,8 @@
     public List<Map<String,String>> getArdTankWallByLockId(String id);
 
     public Long selectArdTankWallTotal(String wallName);
+
+    public List<ArdTankWall> getDistinctArdTankWallByCarId(String carId);
+
+    public int deleteArdTankAbnormalParkAlarmByCarId(String carId);
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java
new file mode 100644
index 0000000..b2a5403
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankAbnormalParkAlarmService.java
@@ -0,0 +1,60 @@
+package com.ruoyi.sy.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.sy.domain.ArdTankAbnormalParkAlarm;
+
+/**
+ * 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍Service鎺ュ彛
+ * 
+ * @author ard
+ * @date 2024-07-08
+ */
+public interface IArdTankAbnormalParkAlarmService 
+{
+    /**
+     * 鏌ヨ缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * 
+     * @param id 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍涓婚敭
+     * @return 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     */
+    public ArdTankAbnormalParkAlarm selectArdTankAbnormalParkAlarmById(String id);
+
+    /**
+     * 鏌ヨ缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍鍒楄〃
+     * 
+     * @param ardTankAbnormalParkAlarm 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * @return 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍闆嗗悎
+     */
+    public List<ArdTankAbnormalParkAlarm> selectArdTankAbnormalParkAlarmList(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm);
+
+    //public int insertArdTankAbnormalParkAlarm(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm);
+    public int insertArdTankAbnormalParkAlarm(Map<String,Object> gpsMap);
+
+    /**
+     * 淇敼缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * 
+     * @param ardTankAbnormalParkAlarm 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * @return 缁撴灉
+     */
+    public int updateArdTankAbnormalParkAlarm(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm);
+
+    /**
+     * 鎵归噺鍒犻櫎缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteArdTankAbnormalParkAlarmByIds(String[] ids);
+
+    /**
+     * 鍒犻櫎缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍淇℃伅
+     * 
+     * @param id 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteArdTankAbnormalParkAlarmById(String id);
+
+    public int deleteArdTankAbnormalParkAlarmByEndTime();
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java
new file mode 100644
index 0000000..c30caca
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankAbnormalParkAlarmServiceImpl.java
@@ -0,0 +1,219 @@
+package com.ruoyi.sy.service.impl;
+
+import java.awt.geom.Point2D;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.core.domain.entity.SysConfig;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.sy.domain.ArdSyCar;
+import com.ruoyi.sy.domain.ArdTankWall;
+import com.ruoyi.sy.mapper.ArdSyCarMapper;
+import com.ruoyi.sy.mapper.ArdTankWallMapper;
+import com.ruoyi.system.mapper.SysConfigMapper;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.utils.gps.GeoTools;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.sy.mapper.ArdTankAbnormalParkAlarmMapper;
+import com.ruoyi.sy.domain.ArdTankAbnormalParkAlarm;
+import com.ruoyi.sy.service.IArdTankAbnormalParkAlarmService;
+
+import javax.annotation.Resource;
+
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
+
+/**
+ * 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍Service涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-07-08
+ */
+@Service
+public class ArdTankAbnormalParkAlarmServiceImpl implements IArdTankAbnormalParkAlarmService {
+    @Resource
+    private ArdTankAbnormalParkAlarmMapper ardTankAbnormalParkAlarmMapper;
+
+    @Resource
+    private ArdSyCarMapper ardSyCarMapper;
+
+    @Resource
+    private ArdTankWallMapper ardTankWallMapper;
+
+    @Resource
+    private SysConfigMapper sysConfigMapper;
+
+    @Resource
+    private SysDeptMapper sysDeptMapper;
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+
+    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    /**
+     * 鏌ヨ缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     *
+     * @param id 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍涓婚敭
+     * @return 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     */
+    @Override
+    public ArdTankAbnormalParkAlarm selectArdTankAbnormalParkAlarmById(String id) {
+        return ardTankAbnormalParkAlarmMapper.selectArdTankAbnormalParkAlarmById(id);
+    }
+
+    /**
+     * 鏌ヨ缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍鍒楄〃
+     *
+     * @param ardTankAbnormalParkAlarm 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * @return 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     */
+    @Override
+    public List<ArdTankAbnormalParkAlarm> selectArdTankAbnormalParkAlarmList(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm) {
+        return ardTankAbnormalParkAlarmMapper.selectArdTankAbnormalParkAlarmList(ardTankAbnormalParkAlarm);
+    }
+
+
+    /*@Override
+    public int insertArdTankAbnormalParkAlarm(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm) {
+                ardTankAbnormalParkAlarm.setId(IdUtils.simpleUUID());
+            return ardTankAbnormalParkAlarmMapper.insertArdTankAbnormalParkAlarm(ardTankAbnormalParkAlarm);
+    }*/
+    @Override
+    public int insertArdTankAbnormalParkAlarm(Map<String,Object> gpsMap) {
+        if(((Number)gpsMap.get("speed")).intValue() != 0){//閫熷害涓嶄负0锛屼笉鏄紓甯稿仠杞�
+            int result = ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByCarId((String)gpsMap.get("carId"));
+            return result;
+        }else {
+            ArdSyCar ardSyCarResult = ardSyCarMapper.getArdSyTankCarByCarId((String)gpsMap.get("carId"));
+            if(ardSyCarResult == null){//娌℃湁鍒嗛厤鏉冮檺鎴栨病鏈夋寕鎺ョ數纾侀攣锛屼笉鏄綈杞�
+                return 0;
+            }else{
+                Boolean alarmFlag = true;//鎶ヨ鏍囪,true涓鸿褰�,false涓哄拷鐣�
+
+                List<ArdTankWall> ardTankWallResult = ardTankWallMapper.getDistinctArdTankWallByCarId((String)gpsMap.get("carId"));//鍘婚噸鏌ヨ杞﹁締鎸傛帴鐨勭數纾侀攣鎸傛帴鐨勭數瀛愬洿鏍�
+                Point2D.Double point = new Point2D.Double(Double.parseDouble(String.valueOf((Number)gpsMap.get("lng"))), Double.parseDouble(String.valueOf((Number)gpsMap.get("lat"))));//杞﹁締褰撳墠浣嶇疆
+                List<Point2D.Double> pts = new ArrayList<Point2D.Double>();
+
+                for(ArdTankWall ardTankWall : ardTankWallResult){
+                    pts.clear();
+                    String[] wallpoiArro = ardTankWall.getWallPoi().split(",");
+                    for (int j = 0; j < wallpoiArro.length; j = j + 3) {//鏋勫缓澶氳竟褰�
+                        pts.add(new Point2D.Double(Double.parseDouble(wallpoiArro[j]), Double.parseDouble(wallpoiArro[j+1])));
+                    }
+                    if(GeoTools.IsPtInPoly(point, pts)){//鍦ㄤ换鎰忕數瀛愬洿鏍忓唴锛屼笉鎶ヨ
+                        int result = ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByCarId((String)gpsMap.get("carId"));
+                        alarmFlag = false;
+                        return result;
+                    }
+                }
+                if(alarmFlag){
+                    ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarmResult = ardTankAbnormalParkAlarmMapper.selectArdTankAbnormalParkAlarmByCarIdAndEndTimeIsNull((String)gpsMap.get("carId"));
+                    if(ardTankAbnormalParkAlarmResult == null){//鏈夎褰曠粨鏉熸椂闂达紝鍋氭柊澧炴搷浣�
+                        ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm = new ArdTankAbnormalParkAlarm();
+                        ardTankAbnormalParkAlarm.setId(IdUtils.simpleUUID());
+                        ardTankAbnormalParkAlarm.setCarId((String)gpsMap.get("carId"));
+                        ardTankAbnormalParkAlarm.setCarName((String)gpsMap.get("carName"));
+                        ardTankAbnormalParkAlarm.setLongitude(String.valueOf((Number)gpsMap.get("lng")));
+                        ardTankAbnormalParkAlarm.setLatitude(String.valueOf((Number)gpsMap.get("lat")));
+                        ardTankAbnormalParkAlarm.setBeginTime(sdf.format(new Date()));
+                        return ardTankAbnormalParkAlarmMapper.insertArdTankAbnormalParkAlarm(ardTankAbnormalParkAlarm);
+                    }else{//鏈夎褰曠粨鏉熸椂闂达紝鍋氫慨鏀规搷浣�
+                        Integer abnormalParkingInterval = 5;//榛樿鏃堕棿涓�5min
+                        SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("abnormalParkingInterval");//鏌ヨ鏃堕棿闂撮殧
+                        if(sysConfig != null){
+                            abnormalParkingInterval = Integer.parseInt(sysConfig.getConfigValue());
+                        }
+                        Date beginDate = null;
+                        try {
+                            beginDate = this.sdf.parse(ardTankAbnormalParkAlarmResult.getBeginTime());
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                            return 0;
+                        }
+                        Date endDate = new Date();
+                        if(endDate.getTime() - beginDate.getTime() >= abnormalParkingInterval * 60 * 1000){//褰撳墠鏃堕棿瓒呰繃寮�鍚椂闂磋瀹氶槇鍊�
+                            ardTankAbnormalParkAlarmResult.setEndTime(sdf.format(endDate));
+                            //鏍规嵁鏉冮檺鍋氭姤璀ebsocket鎺ㄩ��
+                            List<SysDept> sysDeptList = sysDeptMapper.getParentsDeptListByDeptId(Long.parseLong(ardSyCarResult.getDeptId()));
+                            List<Long> deptIdList = new ArrayList();
+                            for(SysDept sysDept : sysDeptList){
+                                deptIdList.add(sysDept.getDeptId());
+                            }
+                            List<SysUser> sysUserList = sysUserMapper.selectUserByDeptIdList(deptIdList);
+                            for(SysUser sysUser : sysUserList){
+                                Map<String,Object> map = new HashMap();
+                                map.put("carId",ardTankAbnormalParkAlarmResult.getCarId());
+                                map.put("carName",ardTankAbnormalParkAlarmResult.getCarName());
+                                map.put("alarmTime",ardTankAbnormalParkAlarmResult.getEndTime());
+                                map.put("longitude",ardTankAbnormalParkAlarmResult.getLongitude());
+                                map.put("latitude",ardTankAbnormalParkAlarmResult.getLatitude());
+                                map.put("alarmInfo","寮傚父鍋滆溅");
+                                Map<String,Map<String,Object>> data = new HashMap();
+                                data.put("40001",map);
+                                for (String key : ONLINE_USER_SESSIONS.keySet()) {
+                                    if(key.startsWith(sysUser.getUserId() + "_")){
+                                        WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(data));
+                                    }
+                                }
+                            }
+                            return ardTankAbnormalParkAlarmMapper.updateArdTankAbnormalParkAlarm(ardTankAbnormalParkAlarmResult);
+                        }else{
+                            return 0;
+                        }
+                    }
+                }else{
+                    return 0;
+                }
+            }
+        }
+    }
+
+    /**
+     * 淇敼缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     *
+     * @param ardTankAbnormalParkAlarm 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateArdTankAbnormalParkAlarm(ArdTankAbnormalParkAlarm ardTankAbnormalParkAlarm) {
+        return ardTankAbnormalParkAlarmMapper.updateArdTankAbnormalParkAlarm(ardTankAbnormalParkAlarm);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteArdTankAbnormalParkAlarmByIds(String[] ids) {
+        return ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍淇℃伅
+     *
+     * @param id 缃愯溅寮傚父鍋滆溅鎶ヨ璁板綍涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteArdTankAbnormalParkAlarmById(String id) {
+        return ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmById(id);
+    }
+
+    @Override
+    public int deleteArdTankAbnormalParkAlarmByEndTime() {
+        int result = ardTankAbnormalParkAlarmMapper.deleteArdTankAbnormalParkAlarmByEndTime();
+        return result;
+    }
+}
diff --git a/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml
index b5e728a..b1e3574 100644
--- a/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml
+++ b/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml
@@ -121,4 +121,9 @@
             #{deptId}
         </foreach>
     </select>
+    <select id="getArdSyTankCarByCarId" parameterType="java.lang.String" resultMap="ArdSyCarResult">
+        select distinct "asc".* from ard_sy_car "asc"
+        inner join ard_tank_lock atl on "asc".car_id = atl.car_id
+        where "asc".car_id = #{carId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml
new file mode 100644
index 0000000..f8fa69f
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/sy/ArdTankAbnormalParkAlarmMapper.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sy.mapper.ArdTankAbnormalParkAlarmMapper">
+    
+    <resultMap type="ArdTankAbnormalParkAlarm" id="ArdTankAbnormalParkAlarmResult">
+        <result property="id"    column="id"    />
+        <result property="carId"    column="car_id"    />
+        <result property="carName"    column="car_name"    />
+        <result property="longitude"    column="longitude"    />
+        <result property="latitude"    column="latitude"    />
+        <result property="beginTime"    column="begin_time"    />
+        <result property="endTime"    column="end_time"    />
+    </resultMap>
+
+    <sql id="selectArdTankAbnormalParkAlarmVo">
+        select id, car_id, car_name, longitude, latitude, begin_time, end_time from ard_tank_abnormal_park_alarm
+    </sql>
+
+    <select id="selectArdTankAbnormalParkAlarmList" parameterType="ArdTankAbnormalParkAlarm" resultMap="ArdTankAbnormalParkAlarmResult">
+        <include refid="selectArdTankAbnormalParkAlarmVo"/>
+        <where>  
+            <if test="carId != null  and carId != ''"> and car_id = #{carId}</if>
+            <if test="carName != null  and carName != ''"> and car_name like '%'||#{carName}||'%'</if>
+            <if test="longitude != null  and longitude != ''"> and longitude = #{longitude}</if>
+            <if test="latitude != null  and latitude != ''"> and latitude = #{latitude}</if>
+            <if test="beginTime != null  and beginTime != ''"> and begin_time = #{beginTime}</if>
+            <if test="endTime != null  and endTime != ''"> and end_time = #{endTime}</if>
+        </where>
+    </select>
+    
+    <select id="selectArdTankAbnormalParkAlarmById" parameterType="String" resultMap="ArdTankAbnormalParkAlarmResult">
+        <include refid="selectArdTankAbnormalParkAlarmVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertArdTankAbnormalParkAlarm" parameterType="ArdTankAbnormalParkAlarm">
+        insert into ard_tank_abnormal_park_alarm
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="carId != null">car_id,</if>
+            <if test="carName != null">car_name,</if>
+            <if test="longitude != null">longitude,</if>
+            <if test="latitude != null">latitude,</if>
+            <if test="beginTime != null">begin_time,</if>
+            <if test="endTime != null">end_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="carId != null">#{carId},</if>
+            <if test="carName != null">#{carName},</if>
+            <if test="longitude != null">#{longitude},</if>
+            <if test="latitude != null">#{latitude},</if>
+            <if test="beginTime != null">#{beginTime},</if>
+            <if test="endTime != null">#{endTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateArdTankAbnormalParkAlarm" parameterType="ArdTankAbnormalParkAlarm">
+        update ard_tank_abnormal_park_alarm
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="carId != null">car_id = #{carId},</if>
+            <if test="carName != null">car_name = #{carName},</if>
+            <if test="longitude != null">longitude = #{longitude},</if>
+            <if test="latitude != null">latitude = #{latitude},</if>
+            <if test="beginTime != null">begin_time = #{beginTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteArdTankAbnormalParkAlarmById" parameterType="String">
+        delete from ard_tank_abnormal_park_alarm where id = #{id}
+    </delete>
+
+    <delete id="deleteArdTankAbnormalParkAlarmByIds" parameterType="String">
+        delete from ard_tank_abnormal_park_alarm where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="selectArdTankAbnormalParkAlarmByCarIdAndEndTimeIsNull" parameterType="java.lang.String" resultMap="ArdTankAbnormalParkAlarmResult">
+        select * from ard_tank_abnormal_park_alarm atapa
+        where atapa.car_id = #{carId} and atapa.end_time is null
+    </select>
+
+    <delete id="deleteArdTankAbnormalParkAlarmByCarId" parameterType="java.lang.String">
+        delete from ard_tank_abnormal_park_alarm atapa
+        where atapa.car_id = #{carId} and atapa.end_time is null
+    </delete>
+
+    <delete id="deleteArdTankAbnormalParkAlarmByEndTime" >
+        delete from ard_tank_abnormal_park_alarm atapa where atapa.end_time is null
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml
index 73dbb28..94fe588 100644
--- a/ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml
+++ b/ard-work/src/main/resources/mapper/sy/ArdTankWallMapper.xml
@@ -81,4 +81,11 @@
             <if test="wallName != null  and wallName != ''"> and wall_name like '%'||#{wallName}||'%'</if>
         </where>
     </select>
+
+    <select id="getDistinctArdTankWallByCarId" resultMap="ArdTankWallResult" parameterType="java.lang.String">
+       select distinct atw.* from ard_tank_lock atl
+       inner join ard_tank_wall_lock atwl on atl.id = atwl.lock_id
+       inner join ard_tank_wall atw on atwl.wall_id = atw.id
+       where atl.car_id = #{carId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index f132a51..234e2eb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -148,4 +148,6 @@
     List<SysUser> getOwnAndChildrenOnlineSoilderList(@Param("deptIdList")List<Long> deptIdList);
 
     List<SysUser> getOwnAndChildrenSoilderListAll(@Param("deptIdList")List<Long> deptIdList);
+
+    List<SysUser> selectUserByDeptIdList(@Param("deptIdList")List<Long> deptIdList);
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index a014700..913ec65 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -371,4 +371,12 @@
         and su.status = '0' and su.del_flag = '0'
         order by su.dept_id asc
     </select>
+
+    <select id="selectUserByDeptIdList" resultMap="SysUserOnlyResult">
+        select * from sys_user su where su.dept_id in
+        <foreach collection="deptIdList" item="deptId" open="(" close=")" separator=",">
+            #{deptId}
+        </foreach>
+        and su.status = '0'
+    </select>
 </mapper> 
\ No newline at end of file

--
Gitblit v1.9.3