‘liusuyi’
2023-08-31 1f7e0b769fdf0308818b12523752675bd41eeff6
增加电子围栏根据app位置上报实时检测
已添加6个文件
已重命名6个文件
已修改7个文件
878 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/alarm/wall/controller/ArdAlarmWallController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/wall/domain/ArdAlarmWall.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/wall/mapper/ArdAlarmWallMapper.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/wall/service/IArdAlarmWallService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/wall/service/impl/ArdAlarmWallServiceImpl.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarmpoints/tube/controller/ArdTubesController.java 146 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/controller/ArdWallController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/domain/ArdWall.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/domain/ArdWallUser.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/mapper/ArdWallMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/service/IArdWallService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/service/impl/ArdWallServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/gis/Point.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/alarm/ArdAlarmWallMapper.xml 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/alarmpoints/ArdWallMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/wall/controller/ArdAlarmWallController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.ruoyi.alarm.wall.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
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.alarm.wall.domain.ArdAlarmWall;
import com.ruoyi.alarm.wall.service.IArdAlarmWallService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
 * ç”µå­å›´æ æŠ¥è­¦Controller
 *
 * @author ard
 * @date 2023-08-31
 */
@RestController
@RequestMapping("/alarm/wall")
public class ArdAlarmWallController extends BaseController
{
    @Autowired
    private IArdAlarmWallService ardAlarmWallService;
    /**
     * æŸ¥è¯¢ç”µå­å›´æ æŠ¥è­¦åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('alarm:wall:list')")
    @GetMapping("/list")
    public TableDataInfo list(ArdAlarmWall ardAlarmWall)
    {
        startPage();
        List<ArdAlarmWall> list = ardAlarmWallService.selectArdAlarmWallList(ardAlarmWall);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºç”µå­å›´æ æŠ¥è­¦åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('alarm:wall:export')")
    @Log(title = "电子围栏报警", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ArdAlarmWall ardAlarmWall)
    {
        List<ArdAlarmWall> list = ardAlarmWallService.selectArdAlarmWallList(ardAlarmWall);
        ExcelUtil<ArdAlarmWall> util = new ExcelUtil<ArdAlarmWall>(ArdAlarmWall.class);
        util.exportExcel(response, list, "电子围栏报警数据");
    }
    /**
     * èŽ·å–ç”µå­å›´æ æŠ¥è­¦è¯¦ç»†ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('alarm:wall:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") String id)
    {
        return success(ardAlarmWallService.selectArdAlarmWallById(id));
    }
    /**
     * æ–°å¢žç”µå­å›´æ æŠ¥è­¦
     */
    @PreAuthorize("@ss.hasPermi('alarm:wall:add')")
    @Log(title = "电子围栏报警", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ArdAlarmWall ardAlarmWall)
    {
        return toAjax(ardAlarmWallService.insertArdAlarmWall(ardAlarmWall));
    }
    /**
     * ä¿®æ”¹ç”µå­å›´æ æŠ¥è­¦
     */
    @PreAuthorize("@ss.hasPermi('alarm:wall:edit')")
    @Log(title = "电子围栏报警", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ArdAlarmWall ardAlarmWall)
    {
        return toAjax(ardAlarmWallService.updateArdAlarmWall(ardAlarmWall));
    }
    /**
     * åˆ é™¤ç”µå­å›´æ æŠ¥è­¦
     */
    @PreAuthorize("@ss.hasPermi('alarm:wall:remove')")
    @Log(title = "电子围栏报警", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids)
    {
        return toAjax(ardAlarmWallService.deleteArdAlarmWallByIds(ids));
    }
}
ard-work/src/main/java/com/ruoyi/alarm/wall/domain/ArdAlarmWall.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package com.ruoyi.alarm.wall.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
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_wall
 *
 * @author ard
 * @date 2023-08-31
 */
public class ArdAlarmWall extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** æŠ¥è­¦ä¸»é”® */
    private String id;
    /** å›´æ ID */
    @Excel(name = "围栏ID")
    private String wallId;
    /** å›´æ åç§° */
    @Excel(name = "围栏名称")
    private String wallName;
    /** æŠ¥è­¦ç”¨æˆ·id */
    @Excel(name = "报警用户id")
    private String userId;
    /** æŠ¥è­¦ç±»åž‹ */
    @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;
    /** é«˜å±‚ */
    @Excel(name = "高层")
    private Double altitude;
    public void setId(String id)
    {
        this.id = id;
    }
    public String getId()
    {
        return id;
    }
    public void setUserId(String userId)
    {
        this.userId = userId;
    }
    public String getUserId()
    {
        return userId;
    }
    public void setAlarmType(String alarmType)
    {
        this.alarmType = alarmType;
    }
    public String getAlarmType()
    {
        return alarmType;
    }
    public void setAlarmTime(Date alarmTime)
    {
        this.alarmTime = alarmTime;
    }
    public Date getAlarmTime()
    {
        return alarmTime;
    }
    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 setAltitude(Double altitude)
    {
        this.altitude = altitude;
    }
    public Double getAltitude()
    {
        return altitude;
    }
    public String getWallId() {
        return wallId;
    }
    public void setWallId(String wallId) {
        this.wallId = wallId;
    }
    public String getWallName() {
        return wallName;
    }
    public void setWallName(String wallName) {
        this.wallName = wallName;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("alarmType", getAlarmType())
            .append("alarmTime", getAlarmTime())
            .append("longitude", getLongitude())
            .append("latitude", getLatitude())
            .append("altitude", getAltitude())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
ard-work/src/main/java/com/ruoyi/alarm/wall/mapper/ArdAlarmWallMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.alarm.wall.mapper;
import java.util.List;
import com.ruoyi.alarm.wall.domain.ArdAlarmWall;
/**
 * ç”µå­å›´æ æŠ¥è­¦Mapper接口
 *
 * @author ard
 * @date 2023-08-31
 */
public interface ArdAlarmWallMapper
{
    /**
     * æŸ¥è¯¢ç”µå­å›´æ æŠ¥è­¦
     *
     * @param id ç”µå­å›´æ æŠ¥è­¦ä¸»é”®
     * @return ç”µå­å›´æ æŠ¥è­¦
     */
    public ArdAlarmWall selectArdAlarmWallById(String id);
    /**
     * æŸ¥è¯¢ç”µå­å›´æ æŠ¥è­¦åˆ—表
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç”µå­å›´æ æŠ¥è­¦é›†åˆ
     */
    public List<ArdAlarmWall> selectArdAlarmWallList(ArdAlarmWall ardAlarmWall);
    /**
     * æ–°å¢žç”µå­å›´æ æŠ¥è­¦
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int insertArdAlarmWall(ArdAlarmWall ardAlarmWall);
    /**
     * ä¿®æ”¹ç”µå­å›´æ æŠ¥è­¦
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int updateArdAlarmWall(ArdAlarmWall ardAlarmWall);
    /**
     * åˆ é™¤ç”µå­å›´æ æŠ¥è­¦
     *
     * @param id ç”µå­å›´æ æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdAlarmWallById(String id);
    /**
     * æ‰¹é‡åˆ é™¤ç”µå­å›´æ æŠ¥è­¦
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteArdAlarmWallByIds(String[] ids);
}
ard-work/src/main/java/com/ruoyi/alarm/wall/service/IArdAlarmWallService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.alarm.wall.service;
import java.util.List;
import com.ruoyi.alarm.wall.domain.ArdAlarmWall;
/**
 * ç”µå­å›´æ æŠ¥è­¦Service接口
 *
 * @author ard
 * @date 2023-08-31
 */
public interface IArdAlarmWallService
{
    /**
     * æŸ¥è¯¢ç”µå­å›´æ æŠ¥è­¦
     *
     * @param id ç”µå­å›´æ æŠ¥è­¦ä¸»é”®
     * @return ç”µå­å›´æ æŠ¥è­¦
     */
    public ArdAlarmWall selectArdAlarmWallById(String id);
    /**
     * æŸ¥è¯¢ç”µå­å›´æ æŠ¥è­¦åˆ—表
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç”µå­å›´æ æŠ¥è­¦é›†åˆ
     */
    public List<ArdAlarmWall> selectArdAlarmWallList(ArdAlarmWall ardAlarmWall);
    /**
     * æ–°å¢žç”µå­å›´æ æŠ¥è­¦
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int insertArdAlarmWall(ArdAlarmWall ardAlarmWall);
    /**
     * ä¿®æ”¹ç”µå­å›´æ æŠ¥è­¦
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç»“æžœ
     */
    public int updateArdAlarmWall(ArdAlarmWall ardAlarmWall);
    /**
     * æ‰¹é‡åˆ é™¤ç”µå­å›´æ æŠ¥è­¦
     *
     * @param ids éœ€è¦åˆ é™¤çš„电子围栏报警主键集合
     * @return ç»“æžœ
     */
    public int deleteArdAlarmWallByIds(String[] ids);
    /**
     * åˆ é™¤ç”µå­å›´æ æŠ¥è­¦ä¿¡æ¯
     *
     * @param id ç”µå­å›´æ æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdAlarmWallById(String id);
}
ard-work/src/main/java/com/ruoyi/alarm/wall/service/impl/ArdAlarmWallServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.ruoyi.alarm.wall.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.stereotype.Service;
import com.ruoyi.alarm.wall.mapper.ArdAlarmWallMapper;
import com.ruoyi.alarm.wall.domain.ArdAlarmWall;
import com.ruoyi.alarm.wall.service.IArdAlarmWallService;
import javax.annotation.Resource;
/**
 * ç”µå­å›´æ æŠ¥è­¦Service业务层处理
 *
 * @author ard
 * @date 2023-08-31
 */
@Service
public class ArdAlarmWallServiceImpl implements IArdAlarmWallService {
    @Resource
    private ArdAlarmWallMapper ardAlarmWallMapper;
    /**
     * æŸ¥è¯¢ç”µå­å›´æ æŠ¥è­¦
     *
     * @param id ç”µå­å›´æ æŠ¥è­¦ä¸»é”®
     * @return ç”µå­å›´æ æŠ¥è­¦
     */
    @Override
    public ArdAlarmWall selectArdAlarmWallById(String id) {
        return ardAlarmWallMapper.selectArdAlarmWallById(id);
    }
    /**
     * æŸ¥è¯¢ç”µå­å›´æ æŠ¥è­¦åˆ—表
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç”µå­å›´æ æŠ¥è­¦
     */
    @Override
    public List<ArdAlarmWall> selectArdAlarmWallList(ArdAlarmWall ardAlarmWall) {
        return ardAlarmWallMapper.selectArdAlarmWallList(ardAlarmWall);
    }
    /**
     * æ–°å¢žç”µå­å›´æ æŠ¥è­¦
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç»“æžœ
     */
    @Override
    public int insertArdAlarmWall(ArdAlarmWall ardAlarmWall) {
                ardAlarmWall.setCreateBy(SecurityUtils.getUsername());
                ardAlarmWall.setCreateTime(DateUtils.getNowDate());
            return ardAlarmWallMapper.insertArdAlarmWall(ardAlarmWall);
    }
    /**
     * ä¿®æ”¹ç”µå­å›´æ æŠ¥è­¦
     *
     * @param ardAlarmWall ç”µå­å›´æ æŠ¥è­¦
     * @return ç»“æžœ
     */
    @Override
    public int updateArdAlarmWall(ArdAlarmWall ardAlarmWall) {
                ardAlarmWall.setUpdateBy(SecurityUtils.getUsername());
                ardAlarmWall.setUpdateTime(DateUtils.getNowDate());
        return ardAlarmWallMapper.updateArdAlarmWall(ardAlarmWall);
    }
    /**
     * æ‰¹é‡åˆ é™¤ç”µå­å›´æ æŠ¥è­¦
     *
     * @param ids éœ€è¦åˆ é™¤çš„电子围栏报警主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdAlarmWallByIds(String[] ids) {
        return ardAlarmWallMapper.deleteArdAlarmWallByIds(ids);
    }
    /**
     * åˆ é™¤ç”µå­å›´æ æŠ¥è­¦ä¿¡æ¯
     *
     * @param id ç”µå­å›´æ æŠ¥è­¦ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdAlarmWallById(String id) {
        return ardAlarmWallMapper.deleteArdAlarmWallById(id);
    }
}
ard-work/src/main/java/com/ruoyi/alarmpoints/tube/controller/ArdTubesController.java
@@ -53,79 +53,79 @@
    @Autowired
    private ISysDeptService sysDeptService;
//    /**
//     * æŸ¥è¯¢ç®¡çº¿ç®¡ç†åˆ—表
//     */
//    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:list')")
//    @GetMapping("/list")
//    @ApiOperation("查询管线管理列表")
//    public TableDataInfo list(ArdTubes ardTubes)
//    {
//        startPage();
//        List<ArdTubes> list = ardTubesService.selectArdTubesList(ardTubes);
//        return getDataTable(list);
//    }
//
//    /**
//     * å¯¼å‡ºç®¡çº¿ç®¡ç†åˆ—表
//     */
//    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:export')")
//    @Log(title = "管线管理", businessType = BusinessType.EXPORT)
//    @PostMapping("/export")
//    @ApiOperation("导出管线管理列表")
//    public void export(HttpServletResponse response, ArdTubes ardTubes)
//    {
//        List<ArdTubes> list = ardTubesService.selectArdTubesList(ardTubes);
//        ExcelUtil<ArdTubes> util = new ExcelUtil<ArdTubes>(ArdTubes.class);
//        util.exportExcel(response, list, "管线管理数据");
//    }
//
//    /**
//     * èŽ·å–ç®¡çº¿ç®¡ç†è¯¦ç»†ä¿¡æ¯
//     */
//    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:query')")
//    @GetMapping(value = "/{id}")
//    @ApiOperation("通过ID获取管线管理详细信息")
//    public AjaxResult getInfo(@PathVariable("id") String id)
//    {
//        return success(ardTubesService.selectArdTubesById(id));
//    }
//
//    /**
//     * æ–°å¢žç®¡çº¿ç®¡ç†
//     */
//    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:add')")
//    @Log(title = "管线管理", businessType = BusinessType.INSERT)
//    @PostMapping
//    @ApiOperation("新增管线管理")
//    public AjaxResult add(@RequestBody ArdTubes ardTubes)
//    {
//        return toAjax(ardTubesService.insertArdTubes(ardTubes));
//    }
//
//    /**
//     * ä¿®æ”¹ç®¡çº¿ç®¡ç†
//     */
//    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:edit')")
//    @Log(title = "管线管理", businessType = BusinessType.UPDATE)
//    @PutMapping
//    @ApiOperation("修改管线管理")
//    public AjaxResult edit(@RequestBody ArdTubes ardTubes)
//    {
//        return toAjax(ardTubesService.updateArdTubes(ardTubes));
//    }
//
//    /**
//     * åˆ é™¤ç®¡çº¿ç®¡ç†
//     */
//    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:remove')")
//    @Log(title = "管线管理", businessType = BusinessType.DELETE)
//    @DeleteMapping("/{ids}")
//    @ApiOperation("删除管线管理")
//    public AjaxResult remove(@PathVariable String[] ids)
//    {
//        return toAjax(ardTubesService.deleteArdTubesByIds(ids));
//    }
    /**
     * æŸ¥è¯¢ç®¡çº¿ç®¡ç†åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:list')")
    @GetMapping("/list")
    @ApiOperation("查询管线管理列表")
    public TableDataInfo list(ArdTubes ardTubes)
    {
        startPage();
        List<ArdTubes> list = ardTubesService.selectArdTubesList(ardTubes);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºç®¡çº¿ç®¡ç†åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:export')")
    @Log(title = "管线管理", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    @ApiOperation("导出管线管理列表")
    public void export(HttpServletResponse response, ArdTubes ardTubes)
    {
        List<ArdTubes> list = ardTubesService.selectArdTubesList(ardTubes);
        ExcelUtil<ArdTubes> util = new ExcelUtil<ArdTubes>(ArdTubes.class);
        util.exportExcel(response, list, "管线管理数据");
    }
    /**
     * èŽ·å–ç®¡çº¿ç®¡ç†è¯¦ç»†ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:query')")
    @GetMapping(value = "/{id}")
    @ApiOperation("通过ID获取管线管理详细信息")
    public AjaxResult getInfo(@PathVariable("id") String id)
    {
        return success(ardTubesService.selectArdTubesById(id));
    }
    /**
     * æ–°å¢žç®¡çº¿ç®¡ç†
     */
    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:add')")
    @Log(title = "管线管理", businessType = BusinessType.INSERT)
    @PostMapping
    @ApiOperation("新增管线管理")
    public AjaxResult add(@RequestBody ArdTubes ardTubes)
    {
        return toAjax(ardTubesService.insertArdTubes(ardTubes));
    }
    /**
     * ä¿®æ”¹ç®¡çº¿ç®¡ç†
     */
    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:edit')")
    @Log(title = "管线管理", businessType = BusinessType.UPDATE)
    @PutMapping
    @ApiOperation("修改管线管理")
    public AjaxResult edit(@RequestBody ArdTubes ardTubes)
    {
        return toAjax(ardTubesService.updateArdTubes(ardTubes));
    }
    /**
     * åˆ é™¤ç®¡çº¿ç®¡ç†
     */
    @PreAuthorize("@ss.hasPermi('alarmpoints:tubes:remove')")
    @Log(title = "管线管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    @ApiOperation("删除管线管理")
    public AjaxResult remove(@PathVariable String[] ids)
    {
        return toAjax(ardTubesService.deleteArdTubesByIds(ids));
    }
    /**
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/controller/ArdWallController.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/alarmpoints/elecwall/controller/ArdWallController.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ruoyi.alarmpoints.elecwall.controller;
package com.ruoyi.alarmpoints.wall.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
@@ -19,8 +19,8 @@
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.alarmpoints.elecwall.domain.ArdWall;
import com.ruoyi.alarmpoints.elecwall.service.IArdWallService;
import com.ruoyi.alarmpoints.wall.domain.ArdWall;
import com.ruoyi.alarmpoints.wall.service.IArdWallService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/domain/ArdWall.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/alarmpoints/elecwall/domain/ArdWall.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ruoyi.alarmpoints.elecwall.domain;
package com.ruoyi.alarmpoints.wall.domain;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -39,7 +39,7 @@
    /** æ‰€å±žéƒ¨é—¨ */
    @Excel(name = "所属部门")
    private Integer deptId;
    private Long deptId;
    /** æ‰€å±žç”¨æˆ· */
    @Excel(name = "所属用户")
@@ -101,12 +101,12 @@
    {
        return color;
    }
    public void setDeptId(Integer deptId)
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }
    public Integer getDeptId()
    public Long getDeptId()
    {
        return deptId;
    }
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/domain/ArdWallUser.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/alarmpoints/elecwall/domain/ArdWallUser.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.ruoyi.alarmpoints.elecwall.domain;
package com.ruoyi.alarmpoints.wall.domain;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/mapper/ArdWallMapper.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/alarmpoints/elecwall/mapper/ArdWallMapper.java ÐÞ¸Ä
@@ -1,9 +1,8 @@
package com.ruoyi.alarmpoints.elecwall.mapper;
package com.ruoyi.alarmpoints.wall.mapper;
import java.util.List;
import com.ruoyi.alarmpoints.elecwall.domain.ArdWall;
import com.ruoyi.alarmpoints.elecwall.domain.ArdWallUser;
import com.ruoyi.dispatch.domain.ArdDispatchPoliceUser;
import com.ruoyi.alarmpoints.wall.domain.ArdWall;
import com.ruoyi.alarmpoints.wall.domain.ArdWallUser;
/**
 * ç”µå­å›´æ ç®¡ç†Mapper接口
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/service/IArdWallService.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/alarmpoints/elecwall/service/IArdWallService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package com.ruoyi.alarmpoints.elecwall.service;
package com.ruoyi.alarmpoints.wall.service;
import java.util.List;
import com.ruoyi.alarmpoints.elecwall.domain.ArdWall;
import com.ruoyi.alarmpoints.wall.domain.ArdWall;
/**
 * ç”µå­å›´æ ç®¡ç†Service接口
ard-work/src/main/java/com/ruoyi/alarmpoints/wall/service/impl/ArdWallServiceImpl.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/alarmpoints/elecwall/service/impl/ArdWallServiceImpl.java ÐÞ¸Ä
@@ -1,20 +1,18 @@
package com.ruoyi.alarmpoints.elecwall.service.impl;
package com.ruoyi.alarmpoints.wall.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.alarmpoints.elecwall.domain.ArdWallUser;
import com.ruoyi.alarmpoints.wall.domain.ArdWallUser;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.dispatch.domain.ArdDispatchPolice;
import com.ruoyi.dispatch.domain.ArdDispatchPoliceUser;
import org.springframework.stereotype.Service;
import com.ruoyi.alarmpoints.elecwall.mapper.ArdWallMapper;
import com.ruoyi.alarmpoints.elecwall.domain.ArdWall;
import com.ruoyi.alarmpoints.elecwall.service.IArdWallService;
import com.ruoyi.alarmpoints.wall.mapper.ArdWallMapper;
import com.ruoyi.alarmpoints.wall.domain.ArdWall;
import com.ruoyi.alarmpoints.wall.service.IArdWallService;
import javax.annotation.Resource;
ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
@@ -93,7 +93,7 @@
    @PostMapping
    public AjaxResult add(@RequestBody ArdAppPosition ardAppPosition)
    {
        return toAjax(ardAppPositionService.insertArdAppPosition(ardAppPosition));
        return AjaxResult.success(ardAppPositionService.insertArdAppPosition(ardAppPosition));
    }
    /**
ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java
@@ -1,6 +1,8 @@
package com.ruoyi.app.position.service;
import java.util.List;
import com.ruoyi.alarm.wall.domain.ArdAlarmWall;
import com.ruoyi.app.position.domain.ArdAppPosition;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.scheduling.domian.SchedulingParam;
@@ -42,7 +44,7 @@
     * @param ardAppPosition app位置
     * @return ç»“æžœ
     */
    public int insertArdAppPosition(ArdAppPosition ardAppPosition);
    public List<ArdAlarmWall> insertArdAppPosition(ArdAppPosition ardAppPosition);
    /**
     * ä¿®æ”¹app位置
ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
@@ -1,9 +1,15 @@
package com.ruoyi.app.position.service.impl;
import com.ruoyi.alarm.wall.domain.ArdAlarmWall;
import com.ruoyi.alarm.wall.mapper.ArdAlarmWallMapper;
import com.ruoyi.alarm.wall.service.IArdAlarmWallService;
import com.ruoyi.alarmpoints.wall.domain.ArdWall;
import com.ruoyi.alarmpoints.wall.mapper.ArdWallMapper;
import com.ruoyi.app.position.domain.ArdAppPosition;
import com.ruoyi.app.position.mapper.ArdAppPositionMapper;
import com.ruoyi.app.position.service.IArdAppPositionService;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
@@ -15,10 +21,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@@ -76,10 +79,11 @@
     * @return ç»“æžœ
     */
    @Override
    public int insertArdAppPosition(ArdAppPosition ardAppPosition) {
    public List<ArdAlarmWall> insertArdAppPosition(ArdAppPosition ardAppPosition) {
        ardAppPosition.setId(IdUtils.simpleUUID());
        ardAppPosition.setCreateTime(DateUtils.getNowDate());
        return ardAppPositionMapper.insertArdAppPosition(ardAppPosition);
        ardAppPositionMapper.insertArdAppPosition(ardAppPosition);
        return DetectionWallAlarm(ardAppPosition);
    }
    /**
@@ -170,6 +174,7 @@
        }
        return filteredList;
    }
    /**
     * èŽ·å–å°æŽ§åœˆå†…æ‰€æœ‰åœ¨çº¿app用户(多边形)
     * åˆ˜è‹ä¹‰
@@ -199,7 +204,7 @@
                    if (lon == null || lat == null) {
                        continue;
                    }
                    Point point2D=new Point(lon,lat);
                    Point point2D = new Point(lon, lat);
                    boolean inPolygon = GisUtil.isInPolygon(point2D, partitionLocation);
                    if (inPolygon) {
                        Map<String, Object> params = new HashMap<>();
@@ -215,4 +220,81 @@
        }
        return filteredList;
    }
    @Resource
    RedisCache redisCache;
    @Resource
    ArdWallMapper ardWallMapper;
    @Resource
    IArdAlarmWallService ardAlarmWallService;
    Map<String, String> userLastAlarm = new HashMap<>();
    /**
     * å®žæ—¶ä½ç½®æ£€æµ‹å›´æ æŠ¥è­¦
     * åˆ˜è‹ä¹‰
     * 2023/8/31 8:54:06
     */
    public List<ArdAlarmWall> DetectionWallAlarm(ArdAppPosition ardAppPosition) {
        List<ArdAlarmWall> ardAlarmWalls=new ArrayList<>();
        //获取当前用户的部门
        String userId = ardAppPosition.getUserId();
        SysUser sysUser = redisCache.getCacheObject("user_list:" + userId);
        Long deptId = sysUser.getDeptId();
        //获取部门下的所有电子围栏
        ArdWall ardWall = new ArdWall();
        ardWall.setDeptId(deptId);
        List<ArdWall> ardWalls = ardWallMapper.selectArdWallList(ardWall);
        if (ardWalls.size() > 0) {
            for (ArdWall wall : ardWalls) {
                String wallPoi = wall.getWallPoi();
                //处理多边形的每个点的经纬度
                String[] parts = wallPoi.split(",");
                List<Point> pointList = new ArrayList<>();
                for (int i = 0; i < parts.length; i += 3) {
                    Point point = new Point();
                    point.setLongitude(Double.valueOf(parts[i]));
                    point.setLatitude(Double.valueOf(parts[i + 1]));
                    pointList.add(point);
                }
                //判断当前用户位置是否在围栏内
                Point userPoint=new Point();
                userPoint.setLongitude(ardAppPosition.getLongitude());
                userPoint.setLatitude(ardAppPosition.getLatitude());
                boolean inPolygon = GisUtil.isInPolygon(userPoint, pointList);
                if (inPolygon) {
                    String lastAlarmId = userLastAlarm.get(userId);
                    ArdAlarmWall ardAlarmWall = new ArdAlarmWall();
                    ardAlarmWall.setWallId(wall.getId());
                    ardAlarmWall.setWallName(wall.getWallName());
                    ardAlarmWall.setUserId(userId);
                    ardAlarmWall.setAlarmTime(new Date());
                    ardAlarmWall.setAlarmType(wall.getType());
                    ardAlarmWall.setLongitude(ardAppPosition.getLongitude());
                    ardAlarmWall.setLatitude(ardAppPosition.getLatitude());
                    ardAlarmWall.setAltitude(ardAppPosition.getAltitude());
                    if (lastAlarmId == null) {
                        String uuid = IdUtils.simpleUUID();
                        //    å½“前用户上一次状态未进入,生成报警
                        ardAlarmWall.setId(uuid);
                        ardAlarmWallService.insertArdAlarmWall(ardAlarmWall);
                        //更新最后报警id
                        userLastAlarm.put(userId, uuid);
                    } else {
                        //    ä¸Šä¸€æ¬¡ç”¨æˆ·çŠ¶æ€å·²è¿›å…¥ï¼Œæ›´æ–°æœ€åŽæŠ¥è­¦
                        ardAlarmWall.setId(lastAlarmId);
                        ardAlarmWallService.updateArdAlarmWall(ardAlarmWall);
                    }
                    ardAlarmWalls.add(ardAlarmWall);
                }
                else
                {
                    //移除最后报警id
                    userLastAlarm.remove(userId);
                }
            }
        }
        return ardAlarmWalls;
    }
}
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
@@ -48,6 +48,9 @@
    String processName = "mediamtx.exe";
    static{
    }
    @PostConstruct
    public void initMediaMtx() {
        if (mediamtxEnabled) {
@@ -69,6 +72,11 @@
//            CmdUtils.commandStart(command);
            }
        }
        try {
            Thread.sleep(2000); // ç­‰å¾…5秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        List<StreamInfo> paths = paths();
        for(StreamInfo path:paths)
        {
ard-work/src/main/java/com/ruoyi/utils/gis/Point.java
@@ -19,7 +19,7 @@
    private static final long serialVersionUID = 1L;
    private Double longitude;
    private Double latitude;
    private Double altitude;
    @JsonCreator
    public Point(@JsonProperty("longitude") Double longitude,@JsonProperty("latitude")Double latitude) {
        this.longitude = longitude;
ard-work/src/main/resources/mapper/alarm/ArdAlarmWallMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
<?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.wall.mapper.ArdAlarmWallMapper">
    <resultMap type="ArdAlarmWall" id="ArdAlarmWallResult">
        <result property="id"    column="id"    />
        <result property="wallId"    column="wall_id"    />
        <result property="wallName"    column="wall_name"    />
        <result property="userId"    column="user_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="altitude"    column="altitude"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
    </resultMap>
    <sql id="selectArdAlarmWallVo">
        select id,wall_id,wall_name, user_id, alarm_type, alarm_time, longitude, latitude, altitude, create_by, create_time, update_by, update_time from ard_alarm_wall
    </sql>
    <select id="selectArdAlarmWallList" parameterType="ArdAlarmWall" resultMap="ArdAlarmWallResult">
        <include refid="selectArdAlarmWallVo"/>
        <where>
            <if test="wallId != null  and wallId != ''"> and wall_id = #{wallId}</if>
            <if test="wallName != null  and wallName != ''"> and wall_name = #{wallName}</if>
            <if test="userId != null  and userId != ''"> and user_id = #{userId}</if>
            <if test="alarmType != null  and alarmType != ''"> and alarm_type = #{alarmType}</if>
            <if test="alarmTime != null "> and alarm_time = #{alarmTime}</if>
            <if test="longitude != null "> and longitude = #{longitude}</if>
            <if test="latitude != null "> and latitude = #{latitude}</if>
            <if test="altitude != null "> and altitude = #{altitude}</if>
        </where>
    </select>
    <select id="selectArdAlarmWallById" parameterType="String" resultMap="ArdAlarmWallResult">
        <include refid="selectArdAlarmWallVo"/>
        where id = #{id}
    </select>
    <insert id="insertArdAlarmWall" parameterType="ArdAlarmWall">
        insert into ard_alarm_wall
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="wallId != null">wall_id,</if>
            <if test="wallName != null">wall_name,</if>
            <if test="userId != null">user_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="altitude != null">altitude,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="wallId != null">#{wallId},</if>
            <if test="wallName != null">#{wallName},</if>
            <if test="userId != null">#{userId},</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="altitude != null">#{altitude},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
         </trim>
    </insert>
    <update id="updateArdAlarmWall" parameterType="ArdAlarmWall">
        update ard_alarm_wall
        <trim prefix="SET" suffixOverrides=",">
            <if test="wallId != null">wall_id = #{wallId},</if>
            <if test="wallName != null">wall_name = #{wallName},</if>
            <if test="userId != null">user_id = #{userId},</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="altitude != null">altitude = #{altitude},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteArdAlarmWallById" parameterType="String">
        delete from ard_alarm_wall where id = #{id}
    </delete>
    <delete id="deleteArdAlarmWallByIds" parameterType="String">
        delete from ard_alarm_wall where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
ard-work/src/main/resources/mapper/alarmpoints/ArdWallMapper.xml
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.alarmpoints.elecwall.mapper.ArdWallMapper">
<mapper namespace="com.ruoyi.alarmpoints.wall.mapper.ArdWallMapper">
    
    <resultMap type="ArdWall" id="ArdWallResult">
        <result property="id"    column="id"    />