From 55c5941807a52bd1eb4fc08803d2402dd72e60a6 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期一, 10 七月 2023 16:45:48 +0800
Subject: [PATCH] 增加门禁报警数据接收入库和引导就近光电 增加门禁报警业务功能

---
 ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/service/IArdAlarmAccessService.java         |   62 +++++
 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java    |   75 +++++
 ard-work/src/main/resources/mapper/alarm/ArdAlarmAccessMapper.xml                              |  165 +++++++++++++
 ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml                                |    1 
 ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/domain/ArdAlarmAccess.java                  |   96 ++++++++
 ard-work/src/main/java/com/ruoyi/constant/CamPriority.java                                     |    1 
 ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/controller/ArdAlarmAccessController.java    |  104 ++++++++
 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java         |   11 
 ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/mapper/ArdAlarmAccessMapper.java            |   70 +++++
 ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/service/impl/ArdAlarmAccessServiceImpl.java |   93 +++++++
 10 files changed, 673 insertions(+), 5 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/controller/ArdAlarmAccessController.java b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/controller/ArdAlarmAccessController.java
new file mode 100644
index 0000000..35294c0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/controller/ArdAlarmAccessController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.alarm.accessAlarm.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import com.ruoyi.alarm.accessAlarm.domain.ArdAlarmAccess;
+import com.ruoyi.alarm.accessAlarm.service.IArdAlarmAccessService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 闂ㄧ鎶ヨController
+ * 
+ * @author ard
+ * @date 2023-07-10
+ */
+@RestController
+@RequestMapping("/alarm/access")
+public class ArdAlarmAccessController extends BaseController
+{
+    @Autowired
+    private IArdAlarmAccessService ardAlarmAccessService;
+
+    /**
+     * 鏌ヨ闂ㄧ鎶ヨ鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('alarm:access:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ArdAlarmAccess ardAlarmAccess)
+    {
+        startPage();
+        List<ArdAlarmAccess> list = ardAlarmAccessService.selectArdAlarmAccessList(ardAlarmAccess);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭闂ㄧ鎶ヨ鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('alarm:access:export')")
+    @Log(title = "闂ㄧ鎶ヨ", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ArdAlarmAccess ardAlarmAccess)
+    {
+        List<ArdAlarmAccess> list = ardAlarmAccessService.selectArdAlarmAccessList(ardAlarmAccess);
+        ExcelUtil<ArdAlarmAccess> util = new ExcelUtil<ArdAlarmAccess>(ArdAlarmAccess.class);
+        util.exportExcel(response, list, "闂ㄧ鎶ヨ鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇闂ㄧ鎶ヨ璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('alarm:access:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(ardAlarmAccessService.selectArdAlarmAccessById(id));
+    }
+
+    /**
+     * 鏂板闂ㄧ鎶ヨ
+     */
+    @PreAuthorize("@ss.hasPermi('alarm:access:add')")
+    @Log(title = "闂ㄧ鎶ヨ", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ArdAlarmAccess ardAlarmAccess)
+    {
+        return toAjax(ardAlarmAccessService.insertArdAlarmAccess(ardAlarmAccess));
+    }
+
+    /**
+     * 淇敼闂ㄧ鎶ヨ
+     */
+    @PreAuthorize("@ss.hasPermi('alarm:access:edit')")
+    @Log(title = "闂ㄧ鎶ヨ", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ArdAlarmAccess ardAlarmAccess)
+    {
+        return toAjax(ardAlarmAccessService.updateArdAlarmAccess(ardAlarmAccess));
+    }
+
+    /**
+     * 鍒犻櫎闂ㄧ鎶ヨ
+     */
+    @PreAuthorize("@ss.hasPermi('alarm:access:remove')")
+    @Log(title = "闂ㄧ鎶ヨ", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(ardAlarmAccessService.deleteArdAlarmAccessByIds(ids));
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/domain/ArdAlarmAccess.java b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/domain/ArdAlarmAccess.java
new file mode 100644
index 0000000..42dd10a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/domain/ArdAlarmAccess.java
@@ -0,0 +1,96 @@
+package com.ruoyi.alarm.accessAlarm.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+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_alarm_access
+ * 
+ * @author ard
+ * @date 2023-07-10
+ */
+@Data
+public class ArdAlarmAccess extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private String id;
+
+    /** 浜嬩欢娴佹按鍙� */
+    @Excel(name = "浜嬩欢娴佹按鍙�")
+    private String serialNo;
+
+    /** 闂ㄧ涓绘満ID */
+    @Excel(name = "闂ㄧ涓绘満ID")
+    private String acsId;
+
+    /** 闂ㄧ涓绘満鍚嶇О */
+    @Excel(name = "闂ㄧ涓绘満鍚嶇О")
+    private String acsName;
+
+    /** 闃插尯绫诲瀷 */
+    @Excel(name = "闃插尯绫诲瀷")
+    private String defenseType;
+
+    /** 鎶ヨ绫诲埆 */
+    @Excel(name = "鎶ヨ绫诲埆")
+    private String alarmType;
+
+    /** 鎶ヨ鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鎶ヨ鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date alarmTime;
+
+    /** 闂ㄧ紪鍙� */
+    @Excel(name = "闂ㄧ紪鍙�")
+    private Integer doorNo;
+
+    /** 闂ㄧ涓绘満缁忓害 */
+    @Excel(name = "闂ㄧ涓绘満缁忓害")
+    private Double longitude;
+
+    /** 闂ㄧ涓绘満绾害 */
+    @Excel(name = "闂ㄧ涓绘満绾害")
+    private Double latitude;
+
+    /** 闂ㄧ涓绘満楂樺眰 */
+    @Excel(name = "闂ㄧ涓绘満楂樺眰")
+    private Double altitude;
+
+    /** 浜嬩欢鍥剧墖url */
+    @Excel(name = "浜嬩欢鍥剧墖url")
+    private String picUrl;
+
+    /** 寮曞褰曞儚url */
+    @Excel(name = "寮曞褰曞儚url")
+    private String recordUrl;
+
+    /** 鏌ョ湅鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鏌ョ湅鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date viewTime;
+
+    /** 閮ㄩ棬ID */
+    @Excel(name = "閮ㄩ棬ID")
+    private Integer deptId;
+
+    /** 鐢ㄦ埛ID */
+    @Excel(name = "鐢ㄦ埛ID")
+    private String userId;
+
+    /**
+     * 鎶ヨ鎬绘暟
+     */
+    private Integer total;
+    /**
+     * 鏈鎶ヨ鏁伴噺
+     */
+    private Integer count;
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/mapper/ArdAlarmAccessMapper.java b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/mapper/ArdAlarmAccessMapper.java
new file mode 100644
index 0000000..d65aaa9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/mapper/ArdAlarmAccessMapper.java
@@ -0,0 +1,70 @@
+package com.ruoyi.alarm.accessAlarm.mapper;
+
+import java.util.List;
+import com.ruoyi.alarm.accessAlarm.domain.ArdAlarmAccess;
+import com.ruoyi.alarm.externalAlarm.domain.ArdAlarmExternal;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * 闂ㄧ鎶ヨMapper鎺ュ彛
+ * 
+ * @author ard
+ * @date 2023-07-10
+ */
+public interface ArdAlarmAccessMapper 
+{
+    /**
+     * 鏌ヨ闂ㄧ鎶ヨ
+     * 
+     * @param id 闂ㄧ鎶ヨ涓婚敭
+     * @return 闂ㄧ鎶ヨ
+     */
+    public ArdAlarmAccess selectArdAlarmAccessById(String id);
+
+    /**
+     * 鏌ヨ闂ㄧ鎶ヨ鍒楄〃
+     * 
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 闂ㄧ鎶ヨ闆嗗悎
+     */
+    public List<ArdAlarmAccess> selectArdAlarmAccessList(ArdAlarmAccess ardAlarmAccess);
+
+    /**
+     * 鏂板闂ㄧ鎶ヨ
+     * 
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 缁撴灉
+     */
+    public int insertArdAlarmAccess(ArdAlarmAccess ardAlarmAccess);
+
+    /**
+     * 淇敼闂ㄧ鎶ヨ
+     * 
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 缁撴灉
+     */
+    public int updateArdAlarmAccess(ArdAlarmAccess ardAlarmAccess);
+
+    /**
+     * 鍒犻櫎闂ㄧ鎶ヨ
+     * 
+     * @param id 闂ㄧ鎶ヨ涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteArdAlarmAccessById(String id);
+
+    /**
+     * 鎵归噺鍒犻櫎闂ㄧ鎶ヨ
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteArdAlarmAccessByIds(String[] ids);
+
+    int selectCountByAlarmTime(@Param("refreshTime") String refreshTime);
+
+    public List<ArdAlarmAccess> selectListAllByCommand(@Param("refreshTime") String refreshTime);
+
+    public int updateViewTimeByAcsId(@Param("acsId")String acsId,@Param("alarmTime") String alarmTime,@Param("viewTime") String viewTime);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/service/IArdAlarmAccessService.java b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/service/IArdAlarmAccessService.java
new file mode 100644
index 0000000..597bf97
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/service/IArdAlarmAccessService.java
@@ -0,0 +1,62 @@
+package com.ruoyi.alarm.accessAlarm.service;
+
+import java.util.List;
+import com.ruoyi.alarm.accessAlarm.domain.ArdAlarmAccess;
+
+
+/**
+ * 闂ㄧ鎶ヨService鎺ュ彛
+ * 
+ * @author ard
+ * @date 2023-07-10
+ */
+public interface IArdAlarmAccessService 
+{
+    /**
+     * 鏌ヨ闂ㄧ鎶ヨ
+     * 
+     * @param id 闂ㄧ鎶ヨ涓婚敭
+     * @return 闂ㄧ鎶ヨ
+     */
+    public ArdAlarmAccess selectArdAlarmAccessById(String id);
+
+    /**
+     * 鏌ヨ闂ㄧ鎶ヨ鍒楄〃
+     * 
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 闂ㄧ鎶ヨ闆嗗悎
+     */
+    public List<ArdAlarmAccess> selectArdAlarmAccessList(ArdAlarmAccess ardAlarmAccess);
+
+    /**
+     * 鏂板闂ㄧ鎶ヨ
+     * 
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 缁撴灉
+     */
+    public int insertArdAlarmAccess(ArdAlarmAccess ardAlarmAccess);
+
+    /**
+     * 淇敼闂ㄧ鎶ヨ
+     * 
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 缁撴灉
+     */
+    public int updateArdAlarmAccess(ArdAlarmAccess ardAlarmAccess);
+
+    /**
+     * 鎵归噺鍒犻櫎闂ㄧ鎶ヨ
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑闂ㄧ鎶ヨ涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteArdAlarmAccessByIds(String[] ids);
+
+    /**
+     * 鍒犻櫎闂ㄧ鎶ヨ淇℃伅
+     * 
+     * @param id 闂ㄧ鎶ヨ涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteArdAlarmAccessById(String id);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/service/impl/ArdAlarmAccessServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/service/impl/ArdAlarmAccessServiceImpl.java
new file mode 100644
index 0000000..a71c2ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/accessAlarm/service/impl/ArdAlarmAccessServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.alarm.accessAlarm.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.alarm.accessAlarm.domain.ArdAlarmAccess;
+import com.ruoyi.alarm.accessAlarm.mapper.ArdAlarmAccessMapper;
+import com.ruoyi.alarm.accessAlarm.service.IArdAlarmAccessService;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 闂ㄧ鎶ヨService涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2023-07-10
+ */
+@Service
+public class ArdAlarmAccessServiceImpl implements IArdAlarmAccessService {
+    @Autowired
+    private ArdAlarmAccessMapper ardAlarmAccessMapper;
+
+    /**
+     * 鏌ヨ闂ㄧ鎶ヨ
+     *
+     * @param id 闂ㄧ鎶ヨ涓婚敭
+     * @return 闂ㄧ鎶ヨ
+     */
+    @Override
+    public ArdAlarmAccess selectArdAlarmAccessById(String id) {
+        return ardAlarmAccessMapper.selectArdAlarmAccessById(id);
+    }
+
+    /**
+     * 鏌ヨ闂ㄧ鎶ヨ鍒楄〃
+     *
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 闂ㄧ鎶ヨ
+     */
+    @Override
+    public List<ArdAlarmAccess> selectArdAlarmAccessList(ArdAlarmAccess ardAlarmAccess) {
+        return ardAlarmAccessMapper.selectArdAlarmAccessList(ardAlarmAccess);
+    }
+
+    /**
+     * 鏂板闂ㄧ鎶ヨ
+     *
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertArdAlarmAccess(ArdAlarmAccess ardAlarmAccess) {
+                ardAlarmAccess.setUserId(SecurityUtils.getUserId());
+                ardAlarmAccess.setCreateBy(SecurityUtils.getUsername());
+                ardAlarmAccess.setCreateTime(DateUtils.getNowDate());
+            return ardAlarmAccessMapper.insertArdAlarmAccess(ardAlarmAccess);
+    }
+
+    /**
+     * 淇敼闂ㄧ鎶ヨ
+     *
+     * @param ardAlarmAccess 闂ㄧ鎶ヨ
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateArdAlarmAccess(ArdAlarmAccess ardAlarmAccess) {
+        return ardAlarmAccessMapper.updateArdAlarmAccess(ardAlarmAccess);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎闂ㄧ鎶ヨ
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑闂ㄧ鎶ヨ涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteArdAlarmAccessByIds(String[] ids) {
+        return ardAlarmAccessMapper.deleteArdAlarmAccessByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎闂ㄧ鎶ヨ淇℃伅
+     *
+     * @param id 闂ㄧ鎶ヨ涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteArdAlarmAccessById(String id) {
+        return ardAlarmAccessMapper.deleteArdAlarmAccessById(id);
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
index 9ac6470..b54a8a4 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
@@ -1,6 +1,8 @@
 package com.ruoyi.alarm.globalAlarm.service.impl;
 
 import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.alarm.accessAlarm.domain.ArdAlarmAccess;
+import com.ruoyi.alarm.accessAlarm.mapper.ArdAlarmAccessMapper;
 import com.ruoyi.alarm.cameraAlarm.domain.ArdAlarmCamera;
 import com.ruoyi.alarm.cameraAlarm.mapper.ArdAlarmCameraMapper;
 import com.ruoyi.alarm.externalAlarm.domain.ArdAlarmExternal;
@@ -28,6 +30,8 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.constant.CamPriority;
+import com.ruoyi.device.external.domain.ArdEquipExternal;
+import com.ruoyi.device.external.mapper.ArdEquipExternalMapper;
 import com.ruoyi.utils.tools.ArdTool;
 import com.ruoyi.utils.tools.GisTool;
 import com.ruoyi.common.utils.uuid.IdUtils;
@@ -59,6 +63,10 @@
 @Slf4j(topic = "mqtt")
 public class GlobalAlarmServiceImpl implements IGlobalAlarmService {
     //region 渚濊禆娉ㄥ叆
+    @Resource
+    private ArdEquipExternalMapper ardEquipExternalMapper;
+    @Resource
+    private ArdAlarmAccessMapper ardAlarmAccessMapper;
     @Resource
     private ArdAlarmExternalMapper ardAlarmExternalMapper;
     @Resource
@@ -110,6 +118,8 @@
         countMap.put("1007", count1007);
         int count1005 = ardAlarmExternalMapper.selectCountByAlarmTime(refreshTime, "闃插尯鎶ヨ");
         countMap.put("1005", count1005);
+        int count1006 = ardAlarmAccessMapper.selectCountByAlarmTime(refreshTime);
+        countMap.put("1006", count1006);
         int count1014 = ardAlarmTubeMapper.selectCountByAlarmTime(refreshTime);
         countMap.put("1014", count1014);
         map.put("20000", countMap);
@@ -197,6 +207,20 @@
                                     .setLatitude(ardAlarmExternal.getLatitude())
                                     .setCount(ardAlarmExternal.getCount())
                                     .setTotal(ardAlarmExternal.getTotal());
+                            return globalAlarmData;
+                        }).collect(Collectors.toList());
+            case 1006:
+                List<ArdAlarmAccess> ardAlarmAccesses = ardAlarmAccessMapper.selectListAllByCommand(refreshTime);
+                return ardAlarmAccesses.stream()
+                        .map(ardAlarmAccess -> {
+                            GlobalAlarmData globalAlarmData = new GlobalAlarmData()
+                                    .setId(ardAlarmAccess.getId())
+                                    .setName(ardAlarmAccess.getAcsName())
+                                    .setAlarmTime(ardAlarmAccess.getAlarmTime())
+                                    .setLongitude(ardAlarmAccess.getLongitude())
+                                    .setLatitude(ardAlarmAccess.getLatitude())
+                                    .setCount(ardAlarmAccess.getCount())
+                                    .setTotal(ardAlarmAccess.getTotal());
                             return globalAlarmData;
                         }).collect(Collectors.toList());
             case 1007:
@@ -287,6 +311,13 @@
                 aae.setPageSize(pageSize);
                 aae.setAlarmType("闃插尯鎶ヨ");
                 return ardAlarmExternalMapper.selectArdAlarmExternalList(aae);
+            case 1006:
+                ArdAlarmAccess aaa = new ArdAlarmAccess();
+                aaa.setParams(params);
+                aaa.setPageNum(pageNum);
+                aaa.setPageSize(pageSize);
+                aaa.setAlarmType("闃插尯鎶ヨ");
+                return ardAlarmAccessMapper.selectArdAlarmAccessList(aaa);
             case 1014:
                 ArdAlarmTube aat = new ArdAlarmTube();
                 aat.setParams(params);
@@ -336,6 +367,14 @@
                     String alarmTime = fmt.format(ardAlarmExternal.getAlarmTime());
                     ardAlarmRadarMapper.updateViewTimeByCondition(defenseName, alarmType, alarmTime, DateUtils.getTime());
                     return ardAlarmExternal;
+                }
+            case 1006:
+                ArdAlarmAccess ardAlarmAccess = ardAlarmAccessMapper.selectArdAlarmAccessById(condition.getId());
+                if (StringUtils.isNotNull(ardAlarmAccess)) {
+                    String acsId = ardAlarmAccess.getAcsId();
+                    String alarmTime = fmt.format(ardAlarmAccess.getAlarmTime());
+                    ardAlarmAccessMapper.updateViewTimeByAcsId(acsId, alarmTime, DateUtils.getTime());
+                    return ardAlarmAccess;
                 }
             case 1014:
                 ArdAlarmTube ardAlarmTube = ardAlarmTubeMapper.selectArdAlarmTubeById(condition.getId());
@@ -536,10 +575,7 @@
                             return;
                         }
                         double[] guideCoordinate = new double[]{ardAlarmExternal.getLongitude(), ardAlarmExternal.getLatitude()};//寮曞鍧愭爣
-                        if (StringUtils.isNull(ardAlarmExternal.getLongitude()) || StringUtils.isNull(ardAlarmExternal.getLatitude())) {
-                            return;
-                        }
-                        String nearbyCameraId = getNearbyCamera(new double[]{ardAlarmExternal.getLongitude(), ardAlarmExternal.getLatitude()});//鏈�杩戠浉鏈篒D
+                        String nearbyCameraId = getNearbyCamera(guideCoordinate);//鏈�杩戠浉鏈篒D
                         if (StringUtils.isNotEmpty(nearbyCameraId)) {
                             messagesEnqueued(nearbyCameraId, ardAlarmExternal.getId(), "sys_external", ardAlarmExternal.getCreateTime(), 1, 1, guideCoordinate);
                         }
@@ -547,6 +583,37 @@
                     }
                     //endregion
                     break;
+                case "accessControl":
+                    //region 澶勭悊闂ㄧ鎶ヨ
+                    ArdAlarmAccess ardAlarmAccess = JSONObject.parseObject(message, ArdAlarmAccess.class);
+                    ardAlarmAccess.setId(IdUtils.simpleUUID());
+                    ardAlarmAccess.setCreateTime(new Date());//鎺ユ敹鏃堕棿
+                    //鏌ョ鐞嗙殑闂ㄧ涓绘満淇℃伅
+                    String acsId = ardAlarmAccess.getAcsId();
+                    ArdEquipExternal ardEquipExternal = ardEquipExternalMapper.selectArdEquipExternalById(acsId);
+                    if (StringUtils.isNotNull(ardEquipExternal)) {
+                        ardAlarmAccess.setLongitude(ardEquipExternal.getLongitude());
+                        ardAlarmAccess.setLatitude(ardEquipExternal.getLatitude());
+                        ardAlarmAccess.setAltitude(ardEquipExternal.getAltitude());
+                        ardAlarmAccess.setAcsId(ardEquipExternal.getId());
+                        ardAlarmAccess.setAcsName(ardEquipExternal.getName());
+                    }
+                    int aaa = ardAlarmAccessMapper.insertArdAlarmAccess(ardAlarmAccess);
+                    if (aaa > 0) {
+                        log.debug("external鍏ュ簱鎴愬姛锛�" + ardAlarmAccess);
+                        //region 寮曞褰曞儚
+                        if (StringUtils.isNull(ardAlarmAccess.getLongitude()) || StringUtils.isNull(ardAlarmAccess.getLatitude())) {
+                            return;
+                        }
+                        double[] guideCoordinate = new double[]{ardAlarmAccess.getLongitude(), ardAlarmAccess.getLatitude()};//寮曞鍧愭爣
+                        String nearbyCameraId = getNearbyCamera(guideCoordinate);//鏈�杩戠浉鏈篒D
+                        if (StringUtils.isNotEmpty(nearbyCameraId)) {
+                            messagesEnqueued(nearbyCameraId, ardAlarmAccess.getId(), "sys_access_control", ardAlarmAccess.getCreateTime(), 1, 1, guideCoordinate);
+                        }
+                        //endregion
+                    }
+                    //endregion
+                    break;
             }
         } catch (Exception ex) {
             log.error("鎺ユ敹鎶ヨ寮傚父:" + ex.getMessage());
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
index 2dc815f..48469a8 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
@@ -1,5 +1,7 @@
 package com.ruoyi.alarm.globalAlarm.service.impl;
 
+import com.ruoyi.alarm.accessAlarm.domain.ArdAlarmAccess;
+import com.ruoyi.alarm.accessAlarm.service.IArdAlarmAccessService;
 import com.ruoyi.alarm.externalAlarm.domain.ArdAlarmExternal;
 import com.ruoyi.alarm.externalAlarm.service.IArdAlarmExternalService;
 import com.ruoyi.alarm.globalAlarm.domain.GuideTask;
@@ -34,7 +36,8 @@
     IArdAlarmRadarService ardAlarmRadarService;
     @Resource
     IArdAlarmExternalService ardAlarmExternalService;
-
+    @Resource
+    IArdAlarmAccessService ardAlarmAccessService;
     public void processTask(GuideTask guideTask) {
         try {
             CameraCmd cmd = new CameraCmd();
@@ -83,6 +86,12 @@
                             ardAlarmExternal.setRecordUrl(url);
                             ardAlarmExternalService.updateArdAlarmExternal(ardAlarmExternal);
                             break;
+                        case "sys_access_control":
+                            ArdAlarmAccess ardAlarmAccess = new ArdAlarmAccess();
+                            ardAlarmAccess.setId(guideTask.getAlarmId());
+                            ardAlarmAccess.setRecordUrl(url);
+                            ardAlarmAccessService.updateArdAlarmAccess(ardAlarmAccess);
+                            break;
                     }
                 }
             }
diff --git a/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java b/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
index ab0638c..33ee6cc 100644
--- a/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
+++ b/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
@@ -22,6 +22,7 @@
         priorityMap.put("sys_tube_leak", 800);//绠$嚎娉勯湶鎶ヨ
         priorityMap.put("sys_radar_pumpshutdown", 800);//闆疯揪鎶芥补鏈哄仠鏈�
         priorityMap.put("sys_external", 700);//澶栬仈鎶ヨ
+        priorityMap.put("sys_access_control", 600);//闂ㄧ鎶ヨ
         priorityMap.put("sys_patrol_inspect", 1);//宸℃
     }
 }
diff --git a/ard-work/src/main/resources/mapper/alarm/ArdAlarmAccessMapper.xml b/ard-work/src/main/resources/mapper/alarm/ArdAlarmAccessMapper.xml
new file mode 100644
index 0000000..6a56c37
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/alarm/ArdAlarmAccessMapper.xml
@@ -0,0 +1,165 @@
+<?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.alarm.accessAlarm.mapper.ArdAlarmAccessMapper">
+    
+    <resultMap type="ArdAlarmAccess" id="ArdAlarmAccessResult">
+        <result property="id"    column="id"    />
+        <result property="serialNo"    column="serial_no"    />
+        <result property="acsId"    column="acs_id"    />
+        <result property="acsName"    column="acs_name"    />
+        <result property="defenseType"    column="defense_type"    />
+        <result property="alarmType"    column="alarm_type"    />
+        <result property="alarmTime"    column="alarm_time"    />
+        <result property="doorNo"    column="door_no"    />
+        <result property="longitude"    column="longitude"    />
+        <result property="latitude"    column="latitude"    />
+        <result property="altitude"    column="altitude"    />
+        <result property="picUrl"    column="pic_url"    />
+        <result property="recordUrl"    column="record_url"    />
+        <result property="viewTime"    column="view_time"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+    </resultMap>
+
+    <sql id="selectArdAlarmAccessVo">
+        select id, serial_no, acs_id, acs_name, defense_type, alarm_type, alarm_time, door_no, longitude, latitude, altitude, pic_url, record_url, view_time, dept_id, user_id, create_by, create_time from ard_alarm_access
+    </sql>
+
+    <select id="selectArdAlarmAccessList" parameterType="ArdAlarmAccess" resultMap="ArdAlarmAccessResult">
+        <include refid="selectArdAlarmAccessVo"/>
+        <where>  
+        </where>
+    </select>
+    
+    <select id="selectArdAlarmAccessById" parameterType="String" resultMap="ArdAlarmAccessResult">
+        <include refid="selectArdAlarmAccessVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertArdAlarmAccess" parameterType="ArdAlarmAccess">
+        insert into ard_alarm_access
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="serialNo != null">serial_no,</if>
+            <if test="acsId != null">acs_id,</if>
+            <if test="acsName != null">acs_name,</if>
+            <if test="defenseType != null">defense_type,</if>
+            <if test="alarmType != null">alarm_type,</if>
+            <if test="alarmTime != null">alarm_time,</if>
+            <if test="doorNo != null">door_no,</if>
+            <if test="longitude != null">longitude,</if>
+            <if test="latitude != null">latitude,</if>
+            <if test="altitude != null">altitude,</if>
+            <if test="picUrl != null">pic_url,</if>
+            <if test="recordUrl != null">record_url,</if>
+            <if test="viewTime != null">view_time,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="userId != null">user_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="serialNo != null">#{serialNo},</if>
+            <if test="acsId != null">#{acsId},</if>
+            <if test="acsName != null">#{acsName},</if>
+            <if test="defenseType != null">#{defenseType},</if>
+            <if test="alarmType != null">#{alarmType},</if>
+            <if test="alarmTime != null">#{alarmTime},</if>
+            <if test="doorNo != null">#{doorNo},</if>
+            <if test="longitude != null">#{longitude},</if>
+            <if test="latitude != null">#{latitude},</if>
+            <if test="altitude != null">#{altitude},</if>
+            <if test="picUrl != null">#{picUrl},</if>
+            <if test="recordUrl != null">#{recordUrl},</if>
+            <if test="viewTime != null">#{viewTime},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="userId != null">#{userId},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateArdAlarmAccess" parameterType="ArdAlarmAccess">
+        update ard_alarm_access
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="serialNo != null">serial_no = #{serialNo},</if>
+            <if test="acsId != null">acs_id = #{acsId},</if>
+            <if test="acsName != null">acs_name = #{acsName},</if>
+            <if test="defenseType != null">defense_type = #{defenseType},</if>
+            <if test="alarmType != null">alarm_type = #{alarmType},</if>
+            <if test="alarmTime != null">alarm_time = #{alarmTime},</if>
+            <if test="doorNo != null">door_no = #{doorNo},</if>
+            <if test="longitude != null">longitude = #{longitude},</if>
+            <if test="latitude != null">latitude = #{latitude},</if>
+            <if test="altitude != null">altitude = #{altitude},</if>
+            <if test="picUrl != null">pic_url = #{picUrl},</if>
+            <if test="recordUrl != null">record_url = #{recordUrl},</if>
+            <if test="viewTime != null">view_time = #{viewTime},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteArdAlarmAccessById" parameterType="String">
+        delete from ard_alarm_access where id = #{id}
+    </delete>
+
+    <delete id="deleteArdAlarmAccessByIds" parameterType="String">
+        delete from ard_alarm_access where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <select id="selectCountByAlarmTime" resultType="Integer">
+        SELECT COUNT(DISTINCT aaa.acs_id)
+        FROM ard_alarm_access aaa
+        WHERE aaa.alarm_time >= CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE
+          and aaa.view_time is null
+    </select>
+    <select id="selectListAllByCommand" resultMap="ArdAlarmAccessResult">
+        SELECT T.*
+        FROM
+            (
+                SELECT
+                    aaa.ID,
+                    aaa.acs_id,
+                    aaa.acs_name,
+                    aaa.serial_no,
+                    aaa.defense_type,
+                    aaa.door_no,
+                    aaa.alarm_type,
+                    aaa.alarm_time,
+                    aaa.longitude,
+                    aaa.latitude,
+                    aaa.altitude,
+                    aaa.pic_url,
+                    aaa.record_url,
+                    ROW_NUMBER () OVER ( PARTITION BY aaa.acs_name ORDER BY aaa.alarm_time DESC ) AS rn,
+                        COUNT ( CASE WHEN aaa.view_time IS NULL THEN 1 END ) OVER ( PARTITION BY aaa.acs_name ) AS COUNT,
+		COUNT ( aaa.alarm_time ) OVER ( PARTITION BY aaa.acs_name ) AS total
+                FROM
+                    ard_alarm_access aaa
+                WHERE
+                    aaa.alarm_time >= ( CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE )
+                ORDER BY
+                    aaa.alarm_time DESC
+            ) T
+        WHERE
+            T.rn = 1
+    </select>
+    <update id="updateViewTimeByAcsId" parameterType="String">
+        update ard_alarm_access
+        set view_time=#{viewTime}
+        where acs_id = #{acsId}
+          and alarm_time &lt;= #{alarmTime}
+          and view_time is null
+    </update>
+</mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml b/ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml
index d963e3d..88c4ad4 100644
--- a/ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml
+++ b/ard-work/src/main/resources/mapper/alarm/ArdAlarmTubeMapper.xml
@@ -195,4 +195,5 @@
           and alarm_time &lt;= #{alarmTime}
           and view_time is null
     </update>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3