‘liusuyi’
2023-06-28 d7e18fe5f9962b2fc6d8fd7da7692a9aabe50bdf
报警业务增加雷达报警
已添加6个文件
已修改2个文件
615 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/controller/ArdAlarmRadarController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/domain/ArdAlarmRadar.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/mapper/ArdAlarmRadarMapper.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/service/IArdAlarmRadarService.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/service/impl/ArdAlarmRadarServiceImpl.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/controller/ArdAlarmTubeController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/alarm/ArdAlarmRadarMapper.xml 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
@@ -6,6 +6,8 @@
import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition;
import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData;
import com.ruoyi.alarm.globalAlarm.service.IGlobalAlarmService;
import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar;
import com.ruoyi.alarm.radarAlarm.mapper.ArdAlarmRadarMapper;
import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
import com.ruoyi.alarm.stealAlarm.mapper.ArdAlarmStealelecMapper;
import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube;
@@ -35,15 +37,8 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -57,6 +52,8 @@
@Service
@Slf4j(topic = "mqtt")
public class GlobalAlarmServiceImpl implements IGlobalAlarmService {
    @Resource
    ArdAlarmRadarMapper ardAlarmRadarMapper;
    @Resource
    ArdAlarmStealelecMapper ardAlarmStealelecMapper;
    @Resource
@@ -118,6 +115,36 @@
                                    .setLatitude(ardAlarmCamera.getLatitude())
                                    .setCount(ardAlarmCamera.getCount())
                                    .setTotal(ardAlarmCamera.getTotal());
                            return globalAlarmData;
                        })
                        .collect(Collectors.toList());
            case 1003:
                List<ArdAlarmRadar> ardAlarmRadars = ardAlarmRadarMapper.selectListAllByCommand(refreshTime,"运动目标检测");
                return ardAlarmRadars.stream()
                        .map(ardAlarmRadar -> {
                            GlobalAlarmData globalAlarmData = new GlobalAlarmData()
                                    .setId(ardAlarmRadar.getId())
                                    .setName(ardAlarmRadar.getName())
                                    .setAlarmTime(ardAlarmRadar.getAlarmTime())
                                    .setLongitude(ardAlarmRadar.getLongitude())
                                    .setLatitude(ardAlarmRadar.getLatitude())
                                    .setCount(ardAlarmRadar.getCount())
                                    .setTotal(ardAlarmRadar.getTotal());
                            return globalAlarmData;
                        })
                        .collect(Collectors.toList());
            case 1004:
                ardAlarmRadars = ardAlarmRadarMapper.selectListAllByCommand(refreshTime,"热源检测");
                return ardAlarmRadars.stream()
                        .map(ardAlarmRadar -> {
                            GlobalAlarmData globalAlarmData = new GlobalAlarmData()
                                    .setId(ardAlarmRadar.getId())
                                    .setName(ardAlarmRadar.getName())
                                    .setAlarmTime(ardAlarmRadar.getAlarmTime())
                                    .setLongitude(ardAlarmRadar.getLongitude())
                                    .setLatitude(ardAlarmRadar.getLatitude())
                                    .setCount(ardAlarmRadar.getCount())
                                    .setTotal(ardAlarmRadar.getTotal());
                            return globalAlarmData;
                        })
                        .collect(Collectors.toList());
@@ -284,6 +311,16 @@
                    }
                    //endregion
                    break;
                case "radar":
                    //region å¤„理雷达报警
                    ArdAlarmRadar ardAlarmRadar = JSONObject.parseObject(message, ArdAlarmRadar.class);
                    ardAlarmRadar.setId(simpleUUID);
                    int aar = ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
                    if (aar > 0) {
                        log.debug("radar入库成功:" + ardAlarmRadar);
                    }
                    //endregion
                    break;
            }
        } catch (Exception ex) {
            log.error("接收报警异常:" + ex.getMessage());
@@ -373,6 +410,10 @@
        countMap.put("1001", count1001);
        int count1002 = ardAlarmCameraMapper.selectCountByAlarmTime(refreshTime);
        countMap.put("1002", count1002);
        int count1003 = ardAlarmRadarMapper.selectCountByAlarmTime(refreshTime,"运动目标检测");
        countMap.put("1003", count1003);
        int count1004 = ardAlarmRadarMapper.selectCountByAlarmTime(refreshTime,"热源检测");
        countMap.put("1004", count1004);
        int count1014 = ardAlarmTubeMapper.selectCountByAlarmTime(refreshTime);
        countMap.put("1014", count1014);
        map.put("20000", countMap);
@@ -399,6 +440,22 @@
                aac.setPageSize(pageSize);
                List<ArdAlarmCamera> ardAlarmCameras = ardAlarmCameraMapper.selectArdAlarmCameraList(aac);
                return ardAlarmCameras;
            case 1003:
                ArdAlarmRadar aar = new ArdAlarmRadar();
                aar.setParams(params);
                aar.setPageNum(pageNum);
                aar.setPageSize(pageSize);
                aar.setAlarmType("运动目标检测");
                List<ArdAlarmRadar> ardAlarmRadar = ardAlarmRadarMapper.selectArdAlarmRadarList(aar);
                return ardAlarmRadar;
            case 1004:
                ArdAlarmRadar aarr = new ArdAlarmRadar();
                aarr.setParams(params);
                aarr.setPageNum(pageNum);
                aarr.setPageSize(pageSize);
                aarr.setAlarmType("热源检测");
                List<ArdAlarmRadar> ardAlarmRadarr = ardAlarmRadarMapper.selectArdAlarmRadarList(aarr);
                return ardAlarmRadarr;
            case 1014:
                ArdAlarmTube aat = new ArdAlarmTube();
                aat.setParams(params);
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/controller/ArdAlarmRadarController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.ruoyi.alarm.radarAlarm.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar;
import com.ruoyi.alarm.radarAlarm.service.IArdAlarmRadarService;
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-06-28
 */
@RestController
@RequestMapping("/alarm/radar")
public class ArdAlarmRadarController extends BaseController
{
    @Autowired
    private IArdAlarmRadarService ardAlarmRadarService;
    /**
     * æŸ¥è¯¢é›·è¾¾æŠ¥è­¦åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('alarm:radar:list')")
    @GetMapping("/list")
    public TableDataInfo list(ArdAlarmRadar ardAlarmRadar)
    {
        startPage();
        List<ArdAlarmRadar> list = ardAlarmRadarService.selectArdAlarmRadarList(ardAlarmRadar);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºé›·è¾¾æŠ¥è­¦åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('alarm:radar:export')")
    @Log(title = "雷达报警", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ArdAlarmRadar ardAlarmRadar)
    {
        List<ArdAlarmRadar> list = ardAlarmRadarService.selectArdAlarmRadarList(ardAlarmRadar);
        ExcelUtil<ArdAlarmRadar> util = new ExcelUtil<ArdAlarmRadar>(ArdAlarmRadar.class);
        util.exportExcel(response, list, "雷达报警数据");
    }
    /**
     * èŽ·å–é›·è¾¾æŠ¥è­¦è¯¦ç»†ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('alarm:radar:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") String id)
    {
        return success(ardAlarmRadarService.selectArdAlarmRadarById(id));
    }
    /**
     * æ–°å¢žé›·è¾¾æŠ¥è­¦
     */
    @PreAuthorize("@ss.hasPermi('alarm:radar:add')")
    @Log(title = "雷达报警", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ArdAlarmRadar ardAlarmRadar)
    {
        return toAjax(ardAlarmRadarService.insertArdAlarmRadar(ardAlarmRadar));
    }
    /**
     * ä¿®æ”¹é›·è¾¾æŠ¥è­¦
     */
    @PreAuthorize("@ss.hasPermi('alarm:radar:edit')")
    @Log(title = "雷达报警", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ArdAlarmRadar ardAlarmRadar)
    {
        return toAjax(ardAlarmRadarService.updateArdAlarmRadar(ardAlarmRadar));
    }
    /**
     * åˆ é™¤é›·è¾¾æŠ¥è­¦
     */
    @PreAuthorize("@ss.hasPermi('alarm:radar:remove')")
    @Log(title = "雷达报警", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids)
    {
        return toAjax(ardAlarmRadarService.deleteArdAlarmRadarByIds(ids));
    }
}
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/domain/ArdAlarmRadar.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.ruoyi.alarm.radarAlarm.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_radar
 *
 * @author ard
 * @date 2023-06-28
 */
@Data
public class ArdAlarmRadar extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ç”¨æˆ·ID */
    @Excel(name = "用户ID")
    private String userId;
    /** éƒ¨é—¨ID */
    @Excel(name = "部门ID")
    private Integer deptId;
    /** è®°å½•ID */
    private String id;
    /** å…´è¶£ç‚¹åç§° */
    @Excel(name = "兴趣点名称")
    private String name;
    /** ç›®æ ‡ID */
    @Excel(name = "目标ID")
    private String targetId;
    /** æŠ¥è­¦ç±»åž‹ */
    @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 Double longitude;
    /** çº¬åº¦ */
    @Excel(name = "纬度")
    private Double latitude;
    /** æŸ¥çœ‹æ—¶é—´ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "查看时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date viewTime;
    /**
     * æŠ¥è­¦æ€»æ•°
     */
    private Integer total;
    /**
     * æœªè¯»æŠ¥è­¦æ•°é‡
     */
    private Integer count;
}
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/mapper/ArdAlarmRadarMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.ruoyi.alarm.radarAlarm.mapper;
import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * é›·è¾¾æŠ¥è­¦Mapper接口
 *
 * @author ard
 * @date 2023-06-28
 */
public interface ArdAlarmRadarMapper
{
    /**
     * æŸ¥è¯¢é›·è¾¾æŠ¥è­¦
     *
     * @param id é›·è¾¾æŠ¥è­¦ä¸»é”®
     * @return é›·è¾¾æŠ¥è­¦
     */
    public ArdAlarmRadar selectArdAlarmRadarById(String id);
    /**
     * æŸ¥è¯¢é›·è¾¾æŠ¥è­¦åˆ—表
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return é›·è¾¾æŠ¥è­¦é›†åˆ
     */
    public List<ArdAlarmRadar> selectArdAlarmRadarList(ArdAlarmRadar ardAlarmRadar);
    /**
     * æ–°å¢žé›·è¾¾æŠ¥è­¦
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int insertArdAlarmRadar(ArdAlarmRadar ardAlarmRadar);
    /**
     * ä¿®æ”¹é›·è¾¾æŠ¥è­¦
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int updateArdAlarmRadar(ArdAlarmRadar ardAlarmRadar);
    /**
     * åˆ é™¤é›·è¾¾æŠ¥è­¦
     *
     * @param id é›·è¾¾æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdAlarmRadarById(String id);
    /**
     * æ‰¹é‡åˆ é™¤é›·è¾¾æŠ¥è­¦
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteArdAlarmRadarByIds(String[] ids);
    public List<ArdAlarmRadar> selectListAllByCommand(@Param("refreshTime")String refreshTime,@Param("alarmType")String alarmType);
    int selectCountByAlarmTime(@Param("refreshTime")String refreshTime,@Param("alarmType")String alarmType);
}
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/service/IArdAlarmRadarService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.alarm.radarAlarm.service;
import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar;
import java.util.List;
/**
 * é›·è¾¾æŠ¥è­¦Service接口
 *
 * @author ard
 * @date 2023-06-28
 */
public interface IArdAlarmRadarService
{
    /**
     * æŸ¥è¯¢é›·è¾¾æŠ¥è­¦
     *
     * @param id é›·è¾¾æŠ¥è­¦ä¸»é”®
     * @return é›·è¾¾æŠ¥è­¦
     */
    public ArdAlarmRadar selectArdAlarmRadarById(String id);
    /**
     * æŸ¥è¯¢é›·è¾¾æŠ¥è­¦åˆ—表
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return é›·è¾¾æŠ¥è­¦é›†åˆ
     */
    public List<ArdAlarmRadar> selectArdAlarmRadarList(ArdAlarmRadar ardAlarmRadar);
    /**
     * æ–°å¢žé›·è¾¾æŠ¥è­¦
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int insertArdAlarmRadar(ArdAlarmRadar ardAlarmRadar);
    /**
     * ä¿®æ”¹é›·è¾¾æŠ¥è­¦
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int updateArdAlarmRadar(ArdAlarmRadar ardAlarmRadar);
    /**
     * æ‰¹é‡åˆ é™¤é›·è¾¾æŠ¥è­¦
     *
     * @param ids éœ€è¦åˆ é™¤çš„雷达报警主键集合
     * @return ç»“æžœ
     */
    public int deleteArdAlarmRadarByIds(String[] ids);
    /**
     * åˆ é™¤é›·è¾¾æŠ¥è­¦ä¿¡æ¯
     *
     * @param id é›·è¾¾æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdAlarmRadarById(String id);
}
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/service/impl/ArdAlarmRadarServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.ruoyi.alarm.radarAlarm.service.impl;
import java.util.List;
import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar;
import com.ruoyi.alarm.radarAlarm.mapper.ArdAlarmRadarMapper;
import com.ruoyi.alarm.radarAlarm.service.IArdAlarmRadarService;
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-06-28
 */
@Service
public class ArdAlarmRadarServiceImpl implements IArdAlarmRadarService {
    @Autowired
    private ArdAlarmRadarMapper ardAlarmRadarMapper;
    /**
     * æŸ¥è¯¢é›·è¾¾æŠ¥è­¦
     *
     * @param id é›·è¾¾æŠ¥è­¦ä¸»é”®
     * @return é›·è¾¾æŠ¥è­¦
     */
    @Override
    public ArdAlarmRadar selectArdAlarmRadarById(String id) {
        return ardAlarmRadarMapper.selectArdAlarmRadarById(id);
    }
    /**
     * æŸ¥è¯¢é›·è¾¾æŠ¥è­¦åˆ—表
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return é›·è¾¾æŠ¥è­¦
     */
    @Override
    public List<ArdAlarmRadar> selectArdAlarmRadarList(ArdAlarmRadar ardAlarmRadar) {
        return ardAlarmRadarMapper.selectArdAlarmRadarList(ardAlarmRadar);
    }
    /**
     * æ–°å¢žé›·è¾¾æŠ¥è­¦
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return ç»“æžœ
     */
    @Override
    public int insertArdAlarmRadar(ArdAlarmRadar ardAlarmRadar) {
                ardAlarmRadar.setCreateBy(SecurityUtils.getUsername());
                ardAlarmRadar.setCreateTime(DateUtils.getNowDate());
                ardAlarmRadar.setUserId(SecurityUtils.getUserId());
            return ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
    }
    /**
     * ä¿®æ”¹é›·è¾¾æŠ¥è­¦
     *
     * @param ardAlarmRadar é›·è¾¾æŠ¥è­¦
     * @return ç»“æžœ
     */
    @Override
    public int updateArdAlarmRadar(ArdAlarmRadar ardAlarmRadar) {
        return ardAlarmRadarMapper.updateArdAlarmRadar(ardAlarmRadar);
    }
    /**
     * æ‰¹é‡åˆ é™¤é›·è¾¾æŠ¥è­¦
     *
     * @param ids éœ€è¦åˆ é™¤çš„雷达报警主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdAlarmRadarByIds(String[] ids) {
        return ardAlarmRadarMapper.deleteArdAlarmRadarByIds(ids);
    }
    /**
     * åˆ é™¤é›·è¾¾æŠ¥è­¦ä¿¡æ¯
     *
     * @param id é›·è¾¾æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdAlarmRadarById(String id) {
        return ardAlarmRadarMapper.deleteArdAlarmRadarById(id);
    }
}
ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/controller/ArdAlarmTubeController.java
@@ -41,7 +41,6 @@
     */
    @PreAuthorize("@ss.hasPermi('alarm:tubeAlarm:list')")
    @GetMapping("/list")
    @ApiOperation("查询管线泄露报警列表")
    public TableDataInfo list(ArdAlarmTube ardAlarmTube)
    {
        startPage();
ard-work/src/main/resources/mapper/alarm/ArdAlarmRadarMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,143 @@
<?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.radarAlarm.mapper.ArdAlarmRadarMapper">
    <resultMap type="ArdAlarmRadar" id="ArdAlarmRadarResult">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="targetId" column="target_id"/>
        <result property="alarmType" column="alarm_type"/>
        <result property="alarmTime" column="alarm_time"/>
        <result property="longitude" column="longitude"/>
        <result property="latitude" column="latitude"/>
        <result property="viewTime" column="view_time"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="userId" column="user_id"/>
        <result property="deptId" column="dept_id"/>
    </resultMap>
    <sql id="selectArdAlarmRadarVo">
        select id,
               name,
               target_id,
               alarm_type,
               alarm_time,
               longitude,
               latitude,
               view_time,
               create_by,
               create_time,
               user_id,
               dept_id
        from ard_alarm_radar
    </sql>
    <select id="selectArdAlarmRadarList" parameterType="ArdAlarmRadar" resultMap="ArdAlarmRadarResult">
        <include refid="selectArdAlarmRadarVo"/>
        <where>
            <if test="name != null  and name != ''">and name like '%'||#{name}||'%'</if>
            <if test="alarmType != null  and alarmType != ''">and alarm_type = #{alarmType}</if>
            <if test="deptId != null ">and dept_id = #{deptId}</if>
        </where>
    </select>
    <select id="selectArdAlarmRadarById" parameterType="String" resultMap="ArdAlarmRadarResult">
        <include refid="selectArdAlarmRadarVo"/>
        where id = #{id}
    </select>
    <insert id="insertArdAlarmRadar" parameterType="ArdAlarmRadar">
        insert into ard_alarm_radar
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="name != null">name,</if>
            <if test="targetId != null">target_id,</if>
            <if test="alarmType != null">alarm_type,</if>
            <if test="alarmTime != null">alarm_time,</if>
            <if test="longitude != null">longitude,</if>
            <if test="latitude != null">latitude,</if>
            <if test="viewTime != null">view_time,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="userId != null">user_id,</if>
            <if test="deptId != null">dept_id,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="name != null">#{name},</if>
            <if test="targetId != null">#{targetId},</if>
            <if test="alarmType != null">#{alarmType},</if>
            <if test="alarmTime != null">#{alarmTime},</if>
            <if test="longitude != null">#{longitude},</if>
            <if test="latitude != null">#{latitude},</if>
            <if test="viewTime != null">#{viewTime},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="userId != null">#{userId},</if>
            <if test="deptId != null">#{deptId},</if>
        </trim>
    </insert>
    <update id="updateArdAlarmRadar" parameterType="ArdAlarmRadar">
        update ard_alarm_radar
        <trim prefix="SET" suffixOverrides=",">
            <if test="name != null">name = #{name},</if>
            <if test="targetId != null">target_id = #{targetId},</if>
            <if test="alarmType != null">alarm_type = #{alarmType},</if>
            <if test="alarmTime != null">alarm_time = #{alarmTime},</if>
            <if test="longitude != null">longitude = #{longitude},</if>
            <if test="latitude != null">latitude = #{latitude},</if>
            <if test="viewTime != null">view_time = #{viewTime},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="userId != null">user_id = #{userId},</if>
            <if test="deptId != null">dept_id = #{deptId},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteArdAlarmRadarById" parameterType="String">
        delete
        from ard_alarm_radar
        where id = #{id}
    </delete>
    <delete id="deleteArdAlarmRadarByIds" parameterType="String">
        delete from ard_alarm_radar where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
    <select id="selectListAllByCommand" resultMap="ArdAlarmRadarResult">
        SELECT T
                   .*
        FROM (
                 SELECT aar.ID,
                        aar.target_id,
                        aar.NAME,
                        aar.alarm_type,
                        aar.alarm_time,
                        aar.longitude,
                        aar.latitude,
                        ROW_NUMBER() OVER ( PARTITION BY aar.NAME ORDER BY aar.alarm_time DESC ) AS rn, COUNT(CASE WHEN aar.view_time IS NULL THEN 1 END) OVER ( PARTITION BY aar.NAME ) AS COUNT,
        COUNT ( aar.alarm_time ) OVER ( PARTITION BY aar.NAME ) AS total
                 FROM
                     ard_alarm_radar aar
                 WHERE
                     aar.alarm_time >= ( CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE )
                   AND aar.alarm_type = #{alarmType}
                 ORDER BY
                     aar.alarm_time DESC
             ) T
        WHERE T.rn = 1
    </select>
    <select id="selectCountByAlarmTime" resultType="Integer">
        SELECT COUNT(DISTINCT aar.name)
        FROM ard_alarm_radar aar
        WHERE aar.alarm_time >= CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE
          and aar.alarm_type = #{alarmType}
    </select>
</mapper>