From 470b596ddce65dcbb8087e78f0a096d8ba1a429e Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期五, 02 八月 2024 08:17:48 +0800
Subject: [PATCH] 电磁锁新增临时电子围栏提交

---
 ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallLockTemporaryMapper.java            |    3 
 ard-work/src/main/java/com/ruoyi/sy/service/IArdTankWallTemporaryService.java             |   69 ++++
 ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java                 |   35 ++
 ard-work/src/main/resources/mapper/sy/ArdTankWallTemporaryMapper.xml                      |  132 +++++++++
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallLockTemporaryServiceImpl.java |    4 
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java     |  263 ++++++++++++++++++
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                           |   11 
 ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java                          |   10 
 ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankWallTemporary.java                      |  213 +++++++++++++++
 ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallTemporaryMapper.java                |   65 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java                     |    2 
 ard-work/src/main/resources/mapper/sy/ArdTankWallLockTemporaryMapper.xml                  |    8 
 12 files changed, 814 insertions(+), 1 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
index ffe9391..1c46df5 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
@@ -59,6 +59,9 @@
     @Autowired
     private IArdTankLockPasswordService ardTankLockPasswordService;
 
+    @Autowired
+    private IArdTankWallTemporaryService ardTankWallTemporaryService;
+
     /**
      * 鏌ヨ鐢电閿佸垪琛�
      */
@@ -382,4 +385,36 @@
         dataTable.setMsg("鏌ヨ鎴愬姛");
         return dataTable;
     }
+
+    @ApiOperation("鏂板涓存椂鐢靛瓙鍥存爮")
+    @PreAuthorize("@ss.hasPermi('sy:lock:insertArdTankWallTemporary')")
+    @PostMapping("/insertArdTankWallTemporary")
+    public AjaxResult insertArdTankWallTemporary(@RequestBody Map<String,Object> para) {
+        String userId = SecurityUtils.getUserId();
+        String userName = SecurityUtils.getUsername();
+        return toAjax(ardTankWallTemporaryService.insertArdTankWallTemporary(userId,userName,para));
+    }
+
+    @ApiOperation("鏇存敼涓存椂鐢靛瓙鍥存爮")
+    @PreAuthorize("@ss.hasPermi('sy:lock:updateArdTankWallTemporary')")
+    @PostMapping("/updateArdTankWallTemporary")
+    public AjaxResult updateArdTankWallTemporary(@RequestBody Map<String,Object> para) {
+        String userId = SecurityUtils.getUserId();
+        String userName = SecurityUtils.getUsername();
+        return toAjax(ardTankWallTemporaryService.updateArdTankWallTemporary(userId,userName,para));
+    }
+
+    @ApiOperation("鏍规嵁涓変竴涓婚敭鏌ヨ涓存椂鐢靛瓙鍥存爮")
+    @PreAuthorize("@ss.hasPermi('sy:lock:getArdTankWallTemporaryByCarId')")
+    @PostMapping("/getArdTankWallTemporaryByCarId")
+    public TableDataInfo getArdTankWallTemporaryByCarId(@RequestBody Map<String,Object> para) {
+        Map<String,Object> result = ardTankWallTemporaryService.getArdTankWallTemporaryByCarId(para);
+
+        TableDataInfo dataTable = new TableDataInfo();
+        dataTable.setRows((List<Map<String,Object>>) result.get("list"));
+        dataTable.setTotal((Long) result.get("total"));
+        dataTable.setCode(200);
+        dataTable.setMsg("鏌ヨ鎴愬姛");
+        return dataTable;
+    }
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankWallTemporary.java b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankWallTemporary.java
new file mode 100644
index 0000000..1c0f783
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdTankWallTemporary.java
@@ -0,0 +1,213 @@
+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_wall_temporary
+ * 
+ * @author ard
+ * @date 2024-08-01
+ */
+public class ArdTankWallTemporary extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭 */
+    private String id;
+
+    /** 鍥存爮鍚嶇О */
+    @Excel(name = "鍥存爮鍚嶇О")
+    private String wallName;
+
+    /** 缁忓害 */
+    @Excel(name = "缁忓害")
+    private Double longitude;
+
+    /** 绾害 */
+    @Excel(name = "绾害")
+    private Double latitude;
+
+    /** 璺濈 */
+    @Excel(name = "璺濈")
+    private Integer distance;
+
+    /** 鏃堕暱 */
+    @Excel(name = "鏃堕暱")
+    private String interval;
+
+    /** 鎿嶄綔鏃堕棿 */
+    @Excel(name = "鎿嶄綔鏃堕棿")
+    private String processTime;
+
+    /** 1涓虹敓鏁堬紝0涓哄け鏁堬紝-1涓哄埌鏈� */
+    @Excel(name = "1涓虹敓鏁堬紝0涓哄け鏁堬紝-1涓哄埌鏈�")
+    private String processMark;
+
+    /** 鐢ㄦ埛涓婚敭 */
+    @Excel(name = "鐢ㄦ埛涓婚敭")
+    private String userId;
+
+    /** 鐢ㄦ埛鍚嶇О */
+    @Excel(name = "鐢ㄦ埛鍚嶇О")
+    private String userName;
+
+    private String processInfo;
+
+    private String cancelTime;
+
+    private String cancelUserName;
+
+    private String cancelUserId;
+
+    private Long mark;
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+    public void setWallName(String wallName) 
+    {
+        this.wallName = wallName;
+    }
+
+    public String getWallName() 
+    {
+        return wallName;
+    }
+    public void setLongitude(Double longitude) 
+    {
+        this.longitude = longitude;
+    }
+
+    public Double getLongitude() 
+    {
+        return longitude;
+    }
+    public void setLatitude(Double latitude) 
+    {
+        this.latitude = latitude;
+    }
+
+    public Double getLatitude() 
+    {
+        return latitude;
+    }
+    public void setDistance(Integer distance) 
+    {
+        this.distance = distance;
+    }
+
+    public Integer getDistance() 
+    {
+        return distance;
+    }
+    public void setInterval(String interval) 
+    {
+        this.interval = interval;
+    }
+
+    public String getInterval() 
+    {
+        return interval;
+    }
+    public void setProcessTime(String processTime) 
+    {
+        this.processTime = processTime;
+    }
+
+    public String getProcessTime() 
+    {
+        return processTime;
+    }
+    public void setProcessMark(String processMark) 
+    {
+        this.processMark = processMark;
+    }
+
+    public String getProcessMark() 
+    {
+        return processMark;
+    }
+    public void setUserId(String userId) 
+    {
+        this.userId = userId;
+    }
+
+    public String getUserId() 
+    {
+        return userId;
+    }
+    public void setUserName(String userName) 
+    {
+        this.userName = userName;
+    }
+
+    public String getUserName() 
+    {
+        return userName;
+    }
+
+    public String getProcessInfo() {
+        return processInfo;
+    }
+
+    public void setProcessInfo(String processInfo) {
+        this.processInfo = processInfo;
+    }
+
+    public String getCancelTime() {
+        return cancelTime;
+    }
+
+    public void setCancelTime(String cancelTime) {
+        this.cancelTime = cancelTime;
+    }
+
+    public Long getMark() {
+        return mark;
+    }
+
+    public void setMark(Long mark) {
+        this.mark = mark;
+    }
+
+    public String getCancelUserName() {
+        return cancelUserName;
+    }
+
+    public void setCancelUserName(String cancelUserName) {
+        this.cancelUserName = cancelUserName;
+    }
+
+    public String getCancelUserId() {
+        return cancelUserId;
+    }
+
+    public void setCancelUserId(String cancelUserId) {
+        this.cancelUserId = cancelUserId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("wallName", getWallName())
+            .append("longitude", getLongitude())
+            .append("latitude", getLatitude())
+            .append("distance", getDistance())
+            .append("interval", getInterval())
+            .append("processTime", getProcessTime())
+            .append("processMark", getProcessMark())
+            .append("userId", getUserId())
+            .append("userName", getUserName())
+            .toString();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java
index 6d39843..f486885 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java
@@ -21,6 +21,8 @@
 
     private static Map<String, Map<String, Map<String,Thread>>> carLockProcessThreadMap = new HashMap();//渚濊溅杈嗭紝鐢电閿侊紝鎿嶄綔绫诲瀷瀛樻斁绾跨▼;lockState:閿佺姸鎬�,lockTime:閿佹牎鏃�,lockPassword:閿佸瘑鐮�(鍖呮嫭璇诲啓),lockRestart:閿佸浣�,lockProcess:閿佹搷浣�
 
+    private static Map<String,Thread> carWallThreadMap = new HashMap();////渚濊溅杈嗗瓨鏀句复鏃剁數瀛愬洿鏍忕嚎绋�
+
     public static Map<String, List<ArdSyCarLock>> getTopicSubscribe() {
         return topicSubscribe;
     }
@@ -79,4 +81,12 @@
     public static synchronized void setCarLockProcessThreadMap(Map<String, Map<String, Map<String, Thread>>> carLockProcessThreadMap) {
         PositionContainer.carLockProcessThreadMap = carLockProcessThreadMap;
     }
+
+    public static synchronized Map<String, Thread> getCarWallThreadMap() {
+        return carWallThreadMap;
+    }
+
+    public static synchronized void setCarWallThreadMap(Map<String, Thread> carWallThreadMap) {
+        PositionContainer.carWallThreadMap = carWallThreadMap;
+    }
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallLockTemporaryMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallLockTemporaryMapper.java
index d8f6194..8adaf4f 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallLockTemporaryMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallLockTemporaryMapper.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 import com.ruoyi.sy.domain.ArdTankWallLockTemporary;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 涓存椂鐢靛瓙鍥存爮鐢电閿丮apper鎺ュ彛
@@ -60,4 +61,6 @@
     public int deleteArdTankWallLockTemporaryByIds(String[] ids);
 
     public int deleteArdTankWallLockTemporaryByLockId(String lockId);
+
+    public int insertArdTankWallLockTemporaryList(@Param("ardTankWallLockTemporaryList") List<ArdTankWallLockTemporary> ardTankWallLockTemporaryList);
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallTemporaryMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallTemporaryMapper.java
new file mode 100644
index 0000000..415bdea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankWallTemporaryMapper.java
@@ -0,0 +1,65 @@
+package com.ruoyi.sy.mapper;
+
+import java.util.List;
+import com.ruoyi.sy.domain.ArdTankWallTemporary;
+
+/**
+ * 鐢电閿佷复鏃剁數瀛愬洿鏍廙apper鎺ュ彛
+ * 
+ * @author ard
+ * @date 2024-08-01
+ */
+public interface ArdTankWallTemporaryMapper 
+{
+    /**
+     * 鏌ヨ鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param id 鐢电閿佷复鏃剁數瀛愬洿鏍忎富閿�
+     * @return 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     */
+    public ArdTankWallTemporary selectArdTankWallTemporaryById(String id);
+
+    /**
+     * 鏌ヨ鐢电閿佷复鏃剁數瀛愬洿鏍忓垪琛�
+     * 
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 鐢电閿佷复鏃剁數瀛愬洿鏍忛泦鍚�
+     */
+    public List<ArdTankWallTemporary> selectArdTankWallTemporaryList(ArdTankWallTemporary ardTankWallTemporary);
+
+    /**
+     * 鏂板鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 缁撴灉
+     */
+    public int insertArdTankWallTemporary(ArdTankWallTemporary ardTankWallTemporary);
+
+    /**
+     * 淇敼鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 缁撴灉
+     */
+    public int updateArdTankWallTemporary(ArdTankWallTemporary ardTankWallTemporary);
+
+    /**
+     * 鍒犻櫎鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param id 鐢电閿佷复鏃剁數瀛愬洿鏍忎富閿�
+     * @return 缁撴灉
+     */
+    public int deleteArdTankWallTemporaryById(String id);
+
+    /**
+     * 鎵归噺鍒犻櫎鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteArdTankWallTemporaryByIds(String[] ids);
+
+    public List<ArdTankWallTemporary> getArdTankWallTemporaryByCarId(String carId);
+
+    public Long selectArdTankWallTemporaryTotalByCarId(String carId);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankWallTemporaryService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankWallTemporaryService.java
new file mode 100644
index 0000000..2f5c6c6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankWallTemporaryService.java
@@ -0,0 +1,69 @@
+package com.ruoyi.sy.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.sy.domain.ArdTankWallTemporary;
+
+/**
+ * 鐢电閿佷复鏃剁數瀛愬洿鏍廠ervice鎺ュ彛
+ * 
+ * @author ard
+ * @date 2024-08-01
+ */
+public interface IArdTankWallTemporaryService 
+{
+    /**
+     * 鏌ヨ鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param id 鐢电閿佷复鏃剁數瀛愬洿鏍忎富閿�
+     * @return 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     */
+    public ArdTankWallTemporary selectArdTankWallTemporaryById(String id);
+
+    /**
+     * 鏌ヨ鐢电閿佷复鏃剁數瀛愬洿鏍忓垪琛�
+     * 
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 鐢电閿佷复鏃剁數瀛愬洿鏍忛泦鍚�
+     */
+    public List<ArdTankWallTemporary> selectArdTankWallTemporaryList(ArdTankWallTemporary ardTankWallTemporary);
+
+    /**
+     * 鏂板鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 缁撴灉
+     */
+    public int insertArdTankWallTemporary(ArdTankWallTemporary ardTankWallTemporary);
+
+    /**
+     * 淇敼鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 缁撴灉
+     */
+    public int updateArdTankWallTemporary(ArdTankWallTemporary ardTankWallTemporary);
+
+    /**
+     * 鎵归噺鍒犻櫎鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鐢电閿佷复鏃剁數瀛愬洿鏍忎富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteArdTankWallTemporaryByIds(String[] ids);
+
+    /**
+     * 鍒犻櫎鐢电閿佷复鏃剁數瀛愬洿鏍忎俊鎭�
+     * 
+     * @param id 鐢电閿佷复鏃剁數瀛愬洿鏍忎富閿�
+     * @return 缁撴灉
+     */
+    public int deleteArdTankWallTemporaryById(String id);
+
+    public int insertArdTankWallTemporary(String userId, String userName, Map<String,Object> para);
+
+    public int updateArdTankWallTemporary(String userId, String userName, Map<String,Object> para);
+
+    public Map<String,Object> getArdTankWallTemporaryByCarId(Map<String,Object> para);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallLockTemporaryServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallLockTemporaryServiceImpl.java
index 300fb96..fff0788 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallLockTemporaryServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallLockTemporaryServiceImpl.java
@@ -12,6 +12,8 @@
 import com.ruoyi.sy.domain.ArdTankWallLockTemporary;
 import com.ruoyi.sy.service.IArdTankWallLockTemporaryService;
 
+import javax.annotation.Resource;
+
 /**
  * 涓存椂鐢靛瓙鍥存爮鐢电閿丼ervice涓氬姟灞傚鐞�
  *
@@ -20,7 +22,7 @@
  */
 @Service
 public class ArdTankWallLockTemporaryServiceImpl implements IArdTankWallLockTemporaryService {
-    @Autowired
+    @Resource
     private ArdTankWallLockTemporaryMapper ardTankWallLockTemporaryMapper;
 
     /**
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java
new file mode 100644
index 0000000..b673448
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java
@@ -0,0 +1,263 @@
+package com.ruoyi.sy.service.impl;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+import com.alibaba.fastjson.JSON;
+import com.github.pagehelper.PageHelper;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.sy.domain.ArdTankLock;
+import com.ruoyi.sy.domain.ArdTankWallLockTemporary;
+import com.ruoyi.sy.gps31.PositionContainer;
+import com.ruoyi.sy.mapper.ArdTankLockMapper;
+import com.ruoyi.sy.mapper.ArdTankWallLockTemporaryMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
+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.ArdTankWallTemporaryMapper;
+import com.ruoyi.sy.domain.ArdTankWallTemporary;
+import com.ruoyi.sy.service.IArdTankWallTemporaryService;
+
+import javax.annotation.Resource;
+
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
+
+/**
+ * 鐢电閿佷复鏃剁數瀛愬洿鏍廠ervice涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-08-01
+ */
+@Service
+public class ArdTankWallTemporaryServiceImpl implements IArdTankWallTemporaryService {
+
+    @Resource
+    private ArdTankWallTemporaryMapper ardTankWallTemporaryMapper;
+
+    @Resource
+    private ArdTankLockMapper ardTankLockMapper;
+
+    @Resource
+    private ArdTankWallLockTemporaryMapper ardTankWallLockTemporaryMapper;
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+
+    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    /**
+     * 鏌ヨ鐢电閿佷复鏃剁數瀛愬洿鏍�
+     *
+     * @param id 鐢电閿佷复鏃剁數瀛愬洿鏍忎富閿�
+     * @return 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     */
+    @Override
+    public ArdTankWallTemporary selectArdTankWallTemporaryById(String id) {
+        return ardTankWallTemporaryMapper.selectArdTankWallTemporaryById(id);
+    }
+
+    /**
+     * 鏌ヨ鐢电閿佷复鏃剁數瀛愬洿鏍忓垪琛�
+     *
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     */
+    @Override
+    public List<ArdTankWallTemporary> selectArdTankWallTemporaryList(ArdTankWallTemporary ardTankWallTemporary) {
+        return ardTankWallTemporaryMapper.selectArdTankWallTemporaryList(ardTankWallTemporary);
+    }
+
+    /**
+     * 鏂板鐢电閿佷复鏃剁數瀛愬洿鏍�
+     *
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertArdTankWallTemporary(ArdTankWallTemporary ardTankWallTemporary) {
+                ardTankWallTemporary.setId(IdUtils.simpleUUID());
+                ardTankWallTemporary.setUserId(SecurityUtils.getUserId());
+            return ardTankWallTemporaryMapper.insertArdTankWallTemporary(ardTankWallTemporary);
+    }
+
+    /**
+     * 淇敼鐢电閿佷复鏃剁數瀛愬洿鏍�
+     *
+     * @param ardTankWallTemporary 鐢电閿佷复鏃剁數瀛愬洿鏍�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateArdTankWallTemporary(ArdTankWallTemporary ardTankWallTemporary) {
+        return ardTankWallTemporaryMapper.updateArdTankWallTemporary(ardTankWallTemporary);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鐢电閿佷复鏃剁數瀛愬洿鏍�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鐢电閿佷复鏃剁數瀛愬洿鏍忎富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteArdTankWallTemporaryByIds(String[] ids) {
+        return ardTankWallTemporaryMapper.deleteArdTankWallTemporaryByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎鐢电閿佷复鏃剁數瀛愬洿鏍忎俊鎭�
+     *
+     * @param id 鐢电閿佷复鏃剁數瀛愬洿鏍忎富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteArdTankWallTemporaryById(String id) {
+        return ardTankWallTemporaryMapper.deleteArdTankWallTemporaryById(id);
+    }
+
+    @Override
+    public int insertArdTankWallTemporary(String userId, String userName, Map<String, Object> para) {
+        ArdTankWallTemporary ardTankWallTemporary = new ArdTankWallTemporary();
+        ardTankWallTemporary.setId(IdUtils.simpleUUID());
+        ardTankWallTemporary.setWallName((String) para.get("wallName"));
+        ardTankWallTemporary.setLongitude((Double) para.get("longitude"));
+        ardTankWallTemporary.setLatitude((Double) para.get("latitude"));
+        ardTankWallTemporary.setDistance((Integer) para.get("distance"));
+        ardTankWallTemporary.setInterval((String) para.get("interval"));
+        ardTankWallTemporary.setProcessTime(sdf.format(new Date()));
+        ardTankWallTemporary.setProcessMark("1");//1涓虹敓鏁�
+        ardTankWallTemporary.setUserId(userId);
+        ardTankWallTemporary.setUserName(userName);
+        int result = ardTankWallTemporaryMapper.insertArdTankWallTemporary(ardTankWallTemporary);
+        try{
+            return result;
+        }finally {
+            ArdTankLock ardTankLock = new ArdTankLock();
+            ardTankLock.setCarId((String) para.get("carId"));
+            List<ArdTankLock> ardTankLockList = ardTankLockMapper.selectArdTankLockList(ardTankLock);
+            List<ArdTankWallLockTemporary> ardTankWallLockTemporaryList = new ArrayList();
+            for(ArdTankLock innerArdTankLock : ardTankLockList){
+                ArdTankWallLockTemporary ardTankWallLockTemporary = new ArdTankWallLockTemporary();
+                ardTankWallLockTemporary.setId(IdUtils.simpleUUID());
+                ardTankWallLockTemporary.setWallId(ardTankWallTemporary.getId());
+                ardTankWallLockTemporary.setLockId(innerArdTankLock.getId());
+                ardTankWallLockTemporary.setProcessType("寮�閿�");
+                ardTankWallLockTemporaryList.add(ardTankWallLockTemporary);
+            }
+            if(!ardTankWallLockTemporaryList.isEmpty()){
+                ardTankWallLockTemporaryMapper.insertArdTankWallLockTemporaryList(ardTankWallLockTemporaryList);
+            }
+            //鍒涘缓瀹氭椂绾跨▼
+            Thread thread = new Thread(){
+                @Override
+                public void run() {
+                    try {
+                        Thread.sleep(60 * 1000 * Long.parseLong((String) para.get("interval")));
+                    } catch (InterruptedException e) {
+                        //e.printStackTrace();
+                        return;
+                    }
+                    List<String> userIdList = sysUserMapper.selectUserIdByCarId((String) para.get("carId"));//鏌ョ湅鍝簺鐢ㄦ埛鏉冮檺涓嬫湁杩欎釜杞�
+
+                    for (String key : ONLINE_USER_SESSIONS.keySet()){
+                        String userId = key.split("_")[0];
+                        if(userIdList.contains(userId)){
+                            Map<String,Object> data = new HashMap();
+                            data.put("40003",(String) para.get("wallName") + "宸插埌鏈�");
+                            WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(data));
+                        }
+                    }
+                    ardTankWallTemporary.setProcessMark("-1");//-1涓哄埌鏈�
+                    ardTankWallTemporaryMapper.updateArdTankWallTemporary(ardTankWallTemporary);
+                    PositionContainer.getCarWallThreadMap().remove((String) para.get("carId"));
+                }
+            };
+            thread.start();
+            PositionContainer.getCarWallThreadMap().put((String) para.get("carId"),thread);
+        }
+    }
+
+    @Override
+    public int updateArdTankWallTemporary(String userId, String userName, Map<String, Object> para) {
+        ArdTankWallTemporary ardTankWallTemporary = new ArdTankWallTemporary();
+        ardTankWallTemporary.setId((String) para.get("id"));
+        ardTankWallTemporary.setProcessTime((String) para.get("processTime") + "/" + this.sdf.format(new Date()));
+        ardTankWallTemporary.setProcessMark("0");
+        ardTankWallTemporary.setUserId(para.get("userId") + "/" + userId);
+        ardTankWallTemporary.setUserName(para.get("userName") + "/" + userName);
+        int result = ardTankWallTemporaryMapper.updateArdTankWallTemporary(ardTankWallTemporary);
+        try{
+            return result;
+        }finally {
+            try{//鍏抽棴绾跨▼
+                PositionContainer.getCarWallThreadMap().get((String) para.get("carId")).interrupt();
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+            List<String> userIdList = sysUserMapper.selectUserIdByCarId((String) para.get("carId"));//鏌ョ湅鍝簺鐢ㄦ埛鏉冮檺涓嬫湁杩欎釜杞�
+            for (String key : ONLINE_USER_SESSIONS.keySet()){
+                String usersId = key.split("_")[0];
+                if(userIdList.contains(usersId)){
+                    Map<String,Object> data = new HashMap();
+                    data.put("40003",(String) para.get("wallName") + "宸茶" + userName + "鎾ら攢");
+                    WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(data));
+                }
+            }
+            PositionContainer.getCarWallThreadMap().remove((String) para.get("carId"));
+        }
+    }
+
+    @Override
+    public Map<String, Object> getArdTankWallTemporaryByCarId(Map<String, Object> para) {
+        //鍒嗛〉灞炴��
+        Integer pageNum = (Integer) para.get("pageNum");
+        Integer pageSize = (Integer) para.get("pageSize");
+
+        PageHelper.startPage(pageNum, pageSize);//鍒嗛〉
+        Map<String,Object> resultMap = new HashMap();
+        List<ArdTankWallTemporary> resultList = ardTankWallTemporaryMapper.getArdTankWallTemporaryByCarId((String) para.get("carId"));
+        for(ArdTankWallTemporary ardTankWallTemporary : resultList){
+            String process = ardTankWallTemporary.getProcessTime();
+            String[] processArray = process.split("/");
+            ardTankWallTemporary.setProcessTime(processArray[0]);
+            try{
+                ardTankWallTemporary.setCancelTime(processArray[1]);
+            }catch (Exception e){
+                ardTankWallTemporary.setCancelTime("");
+            }
+            switch(ardTankWallTemporary.getProcessMark()){
+                case "1" : ardTankWallTemporary.setProcessInfo("鐢熸晥");break;
+                case "0" : ardTankWallTemporary.setProcessInfo("澶辨晥");break;
+                case "-1" : ardTankWallTemporary.setProcessInfo("鍒版湡");break;
+                default : break;
+            }
+            String userName = ardTankWallTemporary.getUserName();
+            String[] userNameArray = userName.split("/");
+            userName = userNameArray[0];
+            ardTankWallTemporary.setUserName(userName);
+            try{
+                ardTankWallTemporary.setCancelUserName(userNameArray[1]);
+            }catch (Exception e){
+                ardTankWallTemporary.setCancelUserName("");
+            }
+
+            String userId = ardTankWallTemporary.getUserId();
+            String[] userIdArray = userId.split("/");
+            userId = userIdArray[0];
+            ardTankWallTemporary.setUserId(userId);
+            try{
+                ardTankWallTemporary.setCancelUserId(userIdArray[1]);
+            }catch (Exception e){
+                ardTankWallTemporary.setCancelUserId("");
+            }
+        }
+
+        Long total =  ardTankWallTemporaryMapper.selectArdTankWallTemporaryTotalByCarId((String) para.get("carId"));
+        resultMap.put("list",resultList);
+        resultMap.put("total",total);
+        return resultMap;
+    }
+
+}
diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankWallLockTemporaryMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankWallLockTemporaryMapper.xml
index ff0bbf4..a36f0bf 100644
--- a/ard-work/src/main/resources/mapper/sy/ArdTankWallLockTemporaryMapper.xml
+++ b/ard-work/src/main/resources/mapper/sy/ArdTankWallLockTemporaryMapper.xml
@@ -69,4 +69,12 @@
     <delete id="deleteArdTankWallLockTemporaryByLockId" parameterType="java.lang.String">
         delete from ard_tank_wall_lock_temporary where lock_id = #{lockId}
     </delete>
+
+    <insert id="insertArdTankWallLockTemporaryList" parameterType="com.ruoyi.sy.domain.ArdTankWallLockTemporary" >
+        insert into ard_tank_wall_lock_temporary (id, wall_id, lock_id, process_type) values
+        <foreach collection ="ardTankWallLockTemporaryList" item="ardTankWallLockTemporary" separator =",">
+            (#{ardTankWallLockTemporary.id},#{ardTankWallLockTemporary.wallId},#{ardTankWallLockTemporary.lockId},
+             #{ardTankWallLockTemporary.processType})
+        </foreach >
+    </insert>
 </mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankWallTemporaryMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankWallTemporaryMapper.xml
new file mode 100644
index 0000000..91ddecb
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/sy/ArdTankWallTemporaryMapper.xml
@@ -0,0 +1,132 @@
+<?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.ArdTankWallTemporaryMapper">
+    
+    <resultMap type="ArdTankWallTemporary" id="ArdTankWallTemporaryResult">
+        <result property="id"    column="id"    />
+        <result property="wallName"    column="wall_name"    />
+        <result property="longitude"    column="longitude"    />
+        <result property="latitude"    column="latitude"    />
+        <result property="distance"    column="distance"    />
+        <result property="interval"    column="interval"    />
+        <result property="processTime"    column="process_time"    />
+        <result property="processMark"    column="process_mark"    />
+        <result property="userId"    column="user_id"    />
+        <result property="userName"    column="user_name"    />
+    </resultMap>
+
+    <resultMap type="ArdTankWallTemporary" id="ArdTankWallTemporaryMarkResult">
+        <result property="id"    column="id"    />
+        <result property="wallName"    column="wall_name"    />
+        <result property="longitude"    column="longitude"    />
+        <result property="latitude"    column="latitude"    />
+        <result property="distance"    column="distance"    />
+        <result property="interval"    column="interval"    />
+        <result property="processTime"    column="process_time"    />
+        <result property="processMark"    column="process_mark"    />
+        <result property="userId"    column="user_id"    />
+        <result property="userName"    column="user_name"    />
+        <result property="mark"    column="mark"    />
+    </resultMap>
+
+    <sql id="selectArdTankWallTemporaryVo">
+        select id, wall_name, longitude, latitude, distance, interval, process_time, process_mark, user_id, user_name from ard_tank_wall_temporary
+    </sql>
+
+    <select id="selectArdTankWallTemporaryList" parameterType="ArdTankWallTemporary" resultMap="ArdTankWallTemporaryResult">
+        <include refid="selectArdTankWallTemporaryVo"/>
+        <where>  
+            <if test="wallName != null  and wallName != ''"> and wall_name like '%'||#{wallName}||'%'</if>
+            <if test="longitude != null "> and longitude = #{longitude}</if>
+            <if test="latitude != null "> and latitude = #{latitude}</if>
+            <if test="distance != null "> and distance = #{distance}</if>
+            <if test="interval != null  and interval != ''"> and interval = #{interval}</if>
+            <if test="processTime != null  and processTime != ''"> and process_time = #{processTime}</if>
+            <if test="processMark != null  and processMark != ''"> and process_mark = #{processMark}</if>
+            <if test="userId != null  and userId != ''"> and user_id = #{userId}</if>
+            <if test="userName != null  and userName != ''"> and user_name like '%'||#{userName}||'%'</if>
+        </where>
+    </select>
+    
+    <select id="selectArdTankWallTemporaryById" parameterType="String" resultMap="ArdTankWallTemporaryResult">
+        <include refid="selectArdTankWallTemporaryVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertArdTankWallTemporary" parameterType="ArdTankWallTemporary">
+        insert into ard_tank_wall_temporary
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="wallName != null">wall_name,</if>
+            <if test="longitude != null">longitude,</if>
+            <if test="latitude != null">latitude,</if>
+            <if test="distance != null">distance,</if>
+            <if test="interval != null">interval,</if>
+            <if test="processTime != null">process_time,</if>
+            <if test="processMark != null">process_mark,</if>
+            <if test="userId != null">user_id,</if>
+            <if test="userName != null">user_name,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="wallName != null">#{wallName},</if>
+            <if test="longitude != null">#{longitude},</if>
+            <if test="latitude != null">#{latitude},</if>
+            <if test="distance != null">#{distance},</if>
+            <if test="interval != null">#{interval},</if>
+            <if test="processTime != null">#{processTime},</if>
+            <if test="processMark != null">#{processMark},</if>
+            <if test="userId != null">#{userId},</if>
+            <if test="userName != null">#{userName},</if>
+         </trim>
+    </insert>
+
+    <update id="updateArdTankWallTemporary" parameterType="ArdTankWallTemporary">
+        update ard_tank_wall_temporary
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="wallName != null">wall_name = #{wallName},</if>
+            <if test="longitude != null">longitude = #{longitude},</if>
+            <if test="latitude != null">latitude = #{latitude},</if>
+            <if test="distance != null">distance = #{distance},</if>
+            <if test="interval != null">interval = #{interval},</if>
+            <if test="processTime != null">process_time = #{processTime},</if>
+            <if test="processMark != null">process_mark = #{processMark},</if>
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="userName != null">user_name = #{userName},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteArdTankWallTemporaryById" parameterType="String">
+        delete from ard_tank_wall_temporary where id = #{id}
+    </delete>
+
+    <delete id="deleteArdTankWallTemporaryByIds" parameterType="String">
+        delete from ard_tank_wall_temporary where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="getArdTankWallTemporaryByCarId" parameterType="java.lang.String" resultMap="ArdTankWallTemporaryMarkResult">
+        select atwt.*,case process_mark
+        when '1'  then 1
+        when '0'  then 2
+        when '-1' then 3
+        end as mark from ard_sy_car "asc"
+        inner join ard_tank_lock atl on "asc".car_id = atl.car_id
+        inner join ard_tank_wall_lock_temporary atwlt on atl."id" = atwlt.lock_id
+        inner join ard_tank_wall_temporary atwt on atwlt.wall_id = atwt."id"
+        where "asc".car_id = #{carId} order by mark asc,process_time desc
+    </select>
+
+    <select id="selectArdTankWallTemporaryTotalByCarId" parameterType="java.lang.String" resultType="java.lang.Long">
+        select count(distinct atwt.*) from ard_sy_car "asc"
+        inner join ard_tank_lock atl on "asc".car_id = atl.car_id
+        inner join ard_tank_wall_lock_temporary atwlt on atl."id" = atwlt.lock_id
+        inner join ard_tank_wall_temporary atwt on atwlt.wall_id = atwt."id"
+        where "asc".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 234e2eb..d890677 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
@@ -150,4 +150,6 @@
     List<SysUser> getOwnAndChildrenSoilderListAll(@Param("deptIdList")List<Long> deptIdList);
 
     List<SysUser> selectUserByDeptIdList(@Param("deptIdList")List<Long> deptIdList);
+
+    List<String> selectUserIdByCarId(String carId);
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 913ec65..e794039 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -379,4 +379,15 @@
         </foreach>
         and su.status = '0'
     </select>
+
+    <select id="selectUserIdByCarId" resultType="java.lang.String">
+        select user_id from sys_user where dept_id in (
+        with recursive rsd as (
+            select * from sys_dept sd where sd.dept_id = (
+                select dept_id from ard_sy_car where car_id = #{carId})
+            union
+            select psd.* from sys_dept psd inner join rsd on rsd.parent_id = psd.dept_id
+        )
+        select rsd.dept_id from rsd)
+    </select>
 </mapper> 
\ No newline at end of file

--
Gitblit v1.9.3