ard-work/src/main/java/com/ruoyi/alarm/externalAlarm/controller/ArdAlarmExternalController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,105 @@ package com.ruoyi.alarm.externalAlarm.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import com.ruoyi.alarm.externalAlarm.domain.ArdAlarmExternal; import com.ruoyi.alarm.externalAlarm.service.IArdAlarmExternalService; 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-07 */ @RestController @RequestMapping("/alarm/external") public class ArdAlarmExternalController extends BaseController { @Autowired private IArdAlarmExternalService ardAlarmExternalService; /** * æ¥è¯¢å¤èæ¥è¦å表 */ @PreAuthorize("@ss.hasPermi('alarm:external:list')") @GetMapping("/list") public TableDataInfo list(ArdAlarmExternal ardAlarmExternal) { startPage(); List<ArdAlarmExternal> list = ardAlarmExternalService.selectArdAlarmExternalList(ardAlarmExternal); return getDataTable(list); } /** * 导åºå¤èæ¥è¦å表 */ @PreAuthorize("@ss.hasPermi('alarm:external:export')") @Log(title = "å¤èæ¥è¦", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ArdAlarmExternal ardAlarmExternal) { List<ArdAlarmExternal> list = ardAlarmExternalService.selectArdAlarmExternalList(ardAlarmExternal); ExcelUtil<ArdAlarmExternal> util = new ExcelUtil<ArdAlarmExternal>(ArdAlarmExternal.class); util.exportExcel(response, list, "å¤èæ¥è¦æ°æ®"); } /** * è·åå¤èæ¥è¦è¯¦ç»ä¿¡æ¯ */ @PreAuthorize("@ss.hasPermi('alarm:external:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { return success(ardAlarmExternalService.selectArdAlarmExternalById(id)); } /** * æ°å¢å¤èæ¥è¦ */ @PreAuthorize("@ss.hasPermi('alarm:external:add')") @Log(title = "å¤èæ¥è¦", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ArdAlarmExternal ardAlarmExternal) { return toAjax(ardAlarmExternalService.insertArdAlarmExternal(ardAlarmExternal)); } /** * ä¿®æ¹å¤èæ¥è¦ */ @PreAuthorize("@ss.hasPermi('alarm:external:edit')") @Log(title = "å¤èæ¥è¦", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ArdAlarmExternal ardAlarmExternal) { return toAjax(ardAlarmExternalService.updateArdAlarmExternal(ardAlarmExternal)); } /** * å é¤å¤èæ¥è¦ */ @PreAuthorize("@ss.hasPermi('alarm:external:remove')") @Log(title = "å¤èæ¥è¦", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { return toAjax(ardAlarmExternalService.deleteArdAlarmExternalByIds(ids)); } } ard-work/src/main/java/com/ruoyi/alarm/externalAlarm/domain/ArdAlarmExternal.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,127 @@ package com.ruoyi.alarm.externalAlarm.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_external * * @author ard * @date 2023-07-07 */ @Data public class ArdAlarmExternal extends BaseEntity { private static final long serialVersionUID = 1L; /** * id */ private String id; /** * æ¥è¦ID */ @Excel(name = "æ¥è¦ID") private String alarmId; /** * æ¥è¦åç§° */ @Excel(name = "æ¥è¦åç§°") private String alarmName; /** * é²åºID */ @Excel(name = "é²åºID") private String defenseId; /** * é²åºåç§° */ @Excel(name = "é²åºåç§°") private String defenseName; /** * æ¥è¦ç±»å« */ @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; /** * å¼å¯¼å½åurl */ @Excel(name = "å¼å¯¼å½åurl") private String recordUrl; /** * åç³»ç»ID */ @Excel(name = "åç³»ç»ID") private String subSysNo; /** * æ¥è¦ä¸»æºID */ @Excel(name = "æ¥è¦ä¸»æºID") private String alarmHostId; /** * æ¥çæ¶é´ */ @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 String deptId; /** * ç¨æ·ID */ @Excel(name = "ç¨æ·ID") private String userId; /** * æ¥è¦æ»æ° */ private Integer total; /** * æªè¯»æ¥è¦æ°é */ private Integer count; } ard-work/src/main/java/com/ruoyi/alarm/externalAlarm/mapper/ArdAlarmExternalMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ package com.ruoyi.alarm.externalAlarm.mapper; import java.util.List; import com.ruoyi.alarm.externalAlarm.domain.ArdAlarmExternal; import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar; import org.apache.ibatis.annotations.Param; /** * å¤èæ¥è¦Mapperæ¥å£ * * @author ard * @date 2023-07-07 */ public interface ArdAlarmExternalMapper { /** * æ¥è¯¢å¤èæ¥è¦ * * @param id å¤èæ¥è¦ä¸»é® * @return å¤èæ¥è¦ */ public ArdAlarmExternal selectArdAlarmExternalById(String id); /** * æ¥è¯¢å¤èæ¥è¦å表 * * @param ardAlarmExternal å¤èæ¥è¦ * @return å¤èæ¥è¦éå */ public List<ArdAlarmExternal> selectArdAlarmExternalList(ArdAlarmExternal ardAlarmExternal); /** * æ°å¢å¤èæ¥è¦ * * @param ardAlarmExternal å¤èæ¥è¦ * @return ç»æ */ public int insertArdAlarmExternal(ArdAlarmExternal ardAlarmExternal); /** * ä¿®æ¹å¤èæ¥è¦ * * @param ardAlarmExternal å¤èæ¥è¦ * @return ç»æ */ public int updateArdAlarmExternal(ArdAlarmExternal ardAlarmExternal); /** * å é¤å¤èæ¥è¦ * * @param id å¤èæ¥è¦ä¸»é® * @return ç»æ */ public int deleteArdAlarmExternalById(String id); /** * æ¹éå é¤å¤èæ¥è¦ * * @param ids éè¦å é¤çæ°æ®ä¸»é®éå * @return ç»æ */ public int deleteArdAlarmExternalByIds(String[] ids); int selectCountByAlarmTime(@Param("refreshTime") String refreshTime, @Param("alarmType") String alarmType); public List<ArdAlarmExternal> selectListAllByCommand(@Param("refreshTime") String refreshTime, @Param("alarmType") String alarmType); public int updateViewTimeByCondition(@Param("defenseName")String defenseName,@Param("alarmType")String alarmType,@Param("alarmTime") String alarmTime,@Param("viewTime") String viewTime); } ard-work/src/main/java/com/ruoyi/alarm/externalAlarm/service/IArdAlarmExternalService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,62 @@ package com.ruoyi.alarm.externalAlarm.service; import java.util.List; import com.ruoyi.alarm.externalAlarm.domain.ArdAlarmExternal; /** * å¤èæ¥è¦Serviceæ¥å£ * * @author ard * @date 2023-07-07 */ public interface IArdAlarmExternalService { /** * æ¥è¯¢å¤èæ¥è¦ * * @param id å¤èæ¥è¦ä¸»é® * @return å¤èæ¥è¦ */ public ArdAlarmExternal selectArdAlarmExternalById(String id); /** * æ¥è¯¢å¤èæ¥è¦å表 * * @param ardAlarmExternal å¤èæ¥è¦ * @return å¤èæ¥è¦éå */ public List<ArdAlarmExternal> selectArdAlarmExternalList(ArdAlarmExternal ardAlarmExternal); /** * æ°å¢å¤èæ¥è¦ * * @param ardAlarmExternal å¤èæ¥è¦ * @return ç»æ */ public int insertArdAlarmExternal(ArdAlarmExternal ardAlarmExternal); /** * ä¿®æ¹å¤èæ¥è¦ * * @param ardAlarmExternal å¤èæ¥è¦ * @return ç»æ */ public int updateArdAlarmExternal(ArdAlarmExternal ardAlarmExternal); /** * æ¹éå é¤å¤èæ¥è¦ * * @param ids éè¦å é¤çå¤èæ¥è¦ä¸»é®éå * @return ç»æ */ public int deleteArdAlarmExternalByIds(String[] ids); /** * å é¤å¤èæ¥è¦ä¿¡æ¯ * * @param id å¤èæ¥è¦ä¸»é® * @return ç»æ */ public int deleteArdAlarmExternalById(String id); } ard-work/src/main/java/com/ruoyi/alarm/externalAlarm/service/impl/ArdAlarmExternalServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,87 @@ package com.ruoyi.alarm.externalAlarm.service.impl; import java.util.List; import com.ruoyi.alarm.externalAlarm.domain.ArdAlarmExternal; import com.ruoyi.alarm.externalAlarm.mapper.ArdAlarmExternalMapper; import com.ruoyi.alarm.externalAlarm.service.IArdAlarmExternalService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * å¤èæ¥è¦Serviceä¸å¡å±å¤ç * * @author ard * @date 2023-07-07 */ @Service public class ArdAlarmExternalServiceImpl implements IArdAlarmExternalService { @Autowired private ArdAlarmExternalMapper ardAlarmExternalMapper; /** * æ¥è¯¢å¤èæ¥è¦ * * @param id å¤èæ¥è¦ä¸»é® * @return å¤èæ¥è¦ */ @Override public ArdAlarmExternal selectArdAlarmExternalById(String id) { return ardAlarmExternalMapper.selectArdAlarmExternalById(id); } /** * æ¥è¯¢å¤èæ¥è¦å表 * * @param ardAlarmExternal å¤èæ¥è¦ * @return å¤èæ¥è¦ */ @Override public List<ArdAlarmExternal> selectArdAlarmExternalList(ArdAlarmExternal ardAlarmExternal) { return ardAlarmExternalMapper.selectArdAlarmExternalList(ardAlarmExternal); } /** * æ°å¢å¤èæ¥è¦ * * @param ardAlarmExternal å¤èæ¥è¦ * @return ç»æ */ @Override public int insertArdAlarmExternal(ArdAlarmExternal ardAlarmExternal) { return ardAlarmExternalMapper.insertArdAlarmExternal(ardAlarmExternal); } /** * ä¿®æ¹å¤èæ¥è¦ * * @param ardAlarmExternal å¤èæ¥è¦ * @return ç»æ */ @Override public int updateArdAlarmExternal(ArdAlarmExternal ardAlarmExternal) { return ardAlarmExternalMapper.updateArdAlarmExternal(ardAlarmExternal); } /** * æ¹éå é¤å¤èæ¥è¦ * * @param ids éè¦å é¤çå¤èæ¥è¦ä¸»é® * @return ç»æ */ @Override public int deleteArdAlarmExternalByIds(String[] ids) { return ardAlarmExternalMapper.deleteArdAlarmExternalByIds(ids); } /** * å é¤å¤èæ¥è¦ä¿¡æ¯ * * @param id å¤èæ¥è¦ä¸»é® * @return ç»æ */ @Override public int deleteArdAlarmExternalById(String id) { return ardAlarmExternalMapper.deleteArdAlarmExternalById(id); } } ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
@@ -3,6 +3,8 @@ import com.alibaba.fastjson2.JSONObject; import com.ruoyi.alarm.cameraAlarm.domain.ArdAlarmCamera; import com.ruoyi.alarm.cameraAlarm.mapper.ArdAlarmCameraMapper; import com.ruoyi.alarm.externalAlarm.domain.ArdAlarmExternal; import com.ruoyi.alarm.externalAlarm.mapper.ArdAlarmExternalMapper; import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition; import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData; import com.ruoyi.alarm.globalAlarm.domain.GuidePriorityQueue; @@ -21,6 +23,7 @@ import com.ruoyi.alarmpoints.tube.mapper.ArdTubesMapper; import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; @@ -38,6 +41,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; @@ -55,6 +59,8 @@ @Slf4j(topic = "mqtt") public class GlobalAlarmServiceImpl implements IGlobalAlarmService { //region ä¾èµæ³¨å ¥ @Resource private ArdAlarmExternalMapper ardAlarmExternalMapper; @Resource private ArdAlarmRadarMapper ardAlarmRadarMapper; @Resource @@ -102,6 +108,8 @@ countMap.put("1004", count1004); int count1007 = ardAlarmRadarMapper.selectCountByAlarmTime(refreshTime, "é·è¾¾æ½æ²¹æºåæº"); countMap.put("1007", count1007); int count1005 = ardAlarmExternalMapper.selectCountByAlarmTime(refreshTime, "é²åºæ¥è¦"); countMap.put("1005", count1005); int count1014 = ardAlarmTubeMapper.selectCountByAlarmTime(refreshTime); countMap.put("1014", count1014); map.put("20000", countMap); @@ -175,6 +183,20 @@ .setLatitude(ardAlarmRadar.getLatitude()) .setCount(ardAlarmRadar.getCount()) .setTotal(ardAlarmRadar.getTotal()); return globalAlarmData; }).collect(Collectors.toList()); case 1005: List<ArdAlarmExternal> ardAlarmExternals = ardAlarmExternalMapper.selectListAllByCommand(refreshTime, "é²åºæ¥è¦"); return ardAlarmExternals.stream() .map(ardAlarmExternal -> { GlobalAlarmData globalAlarmData = new GlobalAlarmData() .setId(ardAlarmExternal.getId()) .setName(ardAlarmExternal.getAlarmName()) .setAlarmTime(ardAlarmExternal.getAlarmTime()) .setLongitude(ardAlarmExternal.getLongitude()) .setLatitude(ardAlarmExternal.getLatitude()) .setCount(ardAlarmExternal.getCount()) .setTotal(ardAlarmExternal.getTotal()); return globalAlarmData; }).collect(Collectors.toList()); case 1007: @@ -258,6 +280,13 @@ aarrr.setPageSize(pageSize); aarrr.setAlarmType("é·è¾¾æ½æ²¹æºåæº"); return ardAlarmRadarMapper.selectArdAlarmRadarList(aarrr); case 1005: ArdAlarmExternal aae = new ArdAlarmExternal(); aae.setParams(params); aae.setPageNum(pageNum); aae.setPageSize(pageSize); aae.setAlarmType("é²åºæ¥è¦"); return ardAlarmExternalMapper.selectArdAlarmExternalList(aae); case 1014: ArdAlarmTube aat = new ArdAlarmTube(); aat.setParams(params); @@ -294,10 +323,19 @@ ArdAlarmRadar ardAlarmRadar = ardAlarmRadarMapper.selectArdAlarmRadarById(condition.getId()); if (StringUtils.isNotNull(ardAlarmRadar)) { String name = ardAlarmRadar.getName(); String alarmType=ardAlarmRadar.getAlarmType(); String alarmTime=fmt.format(ardAlarmRadar.getAlarmTime()); ardAlarmRadarMapper.updateViewTimeByCondition(name,alarmType, alarmTime,DateUtils.getTime()); String alarmType = ardAlarmRadar.getAlarmType(); String alarmTime = fmt.format(ardAlarmRadar.getAlarmTime()); ardAlarmRadarMapper.updateViewTimeByCondition(name, alarmType, alarmTime, DateUtils.getTime()); return ardAlarmRadar; } case 1005: ArdAlarmExternal ardAlarmExternal = ardAlarmExternalMapper.selectArdAlarmExternalById(condition.getId()); if (StringUtils.isNotNull(ardAlarmExternal)) { String defenseName = ardAlarmExternal.getDefenseName(); String alarmType = ardAlarmExternal.getAlarmType(); String alarmTime = fmt.format(ardAlarmExternal.getAlarmTime()); ardAlarmRadarMapper.updateViewTimeByCondition(defenseName, alarmType, alarmTime, DateUtils.getTime()); return ardAlarmExternal; } case 1014: ArdAlarmTube ardAlarmTube = ardAlarmTubeMapper.selectArdAlarmTubeById(condition.getId()); @@ -362,17 +400,18 @@ int aat = ardAlarmTubeMapper.insertArdAlarmTube(ardAlarmTube); if (aat > 0) { log.debug("tubeå ¥åºæåï¼" + ardAlarmTube); //region å¼å¯¼å½å Double longitude = ardAlarmTube.getLongitude(); Double latitude = ardAlarmTube.getLatitude(); if(StringUtils.isNull(longitude)||StringUtils.isNull(latitude)) { if (StringUtils.isNull(longitude) || StringUtils.isNull(latitude)) { return; } double[] coordinate=new double[]{longitude,latitude}; double[] coordinate = new double[]{longitude, latitude}; String nearbyCameraId = getNearbyCamera(new double[]{ardAlarmTube.getLongitude(), ardAlarmTube.getLatitude()}); if (StringUtils.isNotEmpty(nearbyCameraId)) { messagesEnqueued(nearbyCameraId, ardAlarmTube.getId(), "sys_tube_leak",ardAlarmTube.getCreateTime(), 1,1,coordinate); messagesEnqueued(nearbyCameraId, ardAlarmTube.getId(), "sys_tube_leak", ardAlarmTube.getCreateTime(), 1, 1, coordinate); } //endregion } //endregion break; @@ -380,7 +419,6 @@ //region å¤çéç¨å çµæ¥è¦ ArdAlarmCamera ardAlarmCamera = JSONObject.parseObject(message, ArdAlarmCamera.class); ardAlarmCamera.setId(IdUtils.simpleUUID()); int aac = ardAlarmCameraMapper.insertArdAlarmCamera(ardAlarmCamera); if (aac > 0) { log.debug("cameraå ¥åºæåï¼" + ardAlarmCamera); @@ -410,17 +448,16 @@ case "é·è¾¾æ½æ²¹æºåæº": alarmType = "sys_radar_pumpshutdown"; ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName); if(StringUtils.isNotNull(ardAlarmpointsWell)) { ardAlarmRadar.setLongitude(ardAlarmpointsWell.getLongitude()); ardAlarmRadar.setLatitude(ardAlarmpointsWell.getLatitude()); } if (StringUtils.isNotNull(ardAlarmpointsWell)) { ardAlarmRadar.setLongitude(ardAlarmpointsWell.getLongitude()); ardAlarmRadar.setLatitude(ardAlarmpointsWell.getLatitude()); } break; } if(StringUtils.isNull(ardAlarmRadar.getLongitude())||StringUtils.isNull(ardAlarmRadar.getLatitude())) { if (StringUtils.isNull(ardAlarmRadar.getLongitude()) || StringUtils.isNull(ardAlarmRadar.getLatitude())) { continue; } double[] coordinate=new double[]{ardAlarmRadar.getLongitude(),ardAlarmRadar.getLatitude()};//æ¥è¦åæ double[] coordinate = new double[]{ardAlarmRadar.getLongitude(), ardAlarmRadar.getLatitude()};//æ¥è¦åæ //夿å½åæ¥è¦ç¹5åéå æ¯å¦å·²å¼å¯¼ ardAlarmRadar.setGuideFlag(1); ArdAlarmRadar AlarmRadar = ardAlarmRadarMapper.getArdAlarmRadarWithGuide(ardAlarmRadar); @@ -430,22 +467,20 @@ //è·åé·è¾¾æå¨å¡ä¸ç大å çµ String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId()); if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) { log.info("è·åå°é·è¾¾å¡ä¸çå çµ:"+cameraIdWithTower); log.info("è·åå°é·è¾¾å¡ä¸çå çµ:" + cameraIdWithTower); //妿é·è¾¾å¡ä¸æå çµ messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getCreateTime(),1,1,coordinate); messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getCreateTime(), 1, 1, coordinate); } //è·åæ¥è¦ç¹å ³èç大å çµ ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName); if(StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) { if (StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) { String cameraId = ardAlarmpointsWell.getCameraId(); if(cameraIdWithTower.equals(cameraId)) { if (cameraIdWithTower.equals(cameraId)) { return; } log.info("è·åå°æ¥è¦ç¹å ³èçå çµ:"+cameraId); log.info("è·åå°æ¥è¦ç¹å ³èçå çµ:" + cameraId); //妿æ¥è¦ç¹å ³èäºå çµ messagesEnqueued(cameraId, uuid, alarmType,ardAlarmRadar.getCreateTime(), 1,2,coordinate); messagesEnqueued(cameraId, uuid, alarmType, ardAlarmRadar.getCreateTime(), 1, 2, coordinate); } } else { //5åéå æå¼å¯¼ @@ -458,28 +493,57 @@ //è·åé·è¾¾æå¨å¡ä¸ç大å çµ String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId()); if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) { log.info("è·åå°é·è¾¾å¡ä¸çå çµ:"+cameraIdWithTower); log.info("è·åå°é·è¾¾å¡ä¸çå çµ:" + cameraIdWithTower); //妿é·è¾¾å¡ä¸æå çµ messagesEnqueued(cameraIdWithTower, uuid, alarmType,ardAlarmRadar.getCreateTime(), count,1,coordinate); messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getCreateTime(), count, 1, coordinate); } //è·åæ¥è¦ç¹å ³èç大å çµ ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName); if(StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) { if (StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) { String cameraId = ardAlarmpointsWell.getCameraId(); if(cameraIdWithTower.equals(cameraId)) { if (cameraIdWithTower.equals(cameraId)) { return; } log.info("è·åå°æ¥è¦ç¹å ³èçå çµ:"+cameraId); log.info("è·åå°æ¥è¦ç¹å ³èçå çµ:" + cameraId); //妿æ¥è¦ç¹å ³èäºå çµ messagesEnqueued(cameraId, uuid, alarmType,ardAlarmRadar.getCreateTime(), count,2,coordinate); messagesEnqueued(cameraId, uuid, alarmType, ardAlarmRadar.getCreateTime(), count, 2, coordinate); } } else { //æªå¼å¯¼æªè¶ è¿3次ï¼ç´æ¥å ¥åº ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar); } } } //endregion break; case "external": //region å¤çå¤èæ¥è¦ ArdAlarmExternal ardAlarmExternal = JSONObject.parseObject(message, ArdAlarmExternal.class); ardAlarmExternal.setId(IdUtils.simpleUUID()); ardAlarmExternal.setCreateTime(new Date());//æ¥æ¶æ¶é´ //å¤èé²åºåç§°å°±æ¯å ´è¶£ç¹ï¼æ¥å ´è¶£ç¹åæ String defenseName = ardAlarmExternal.getDefenseName(); ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(defenseName); if (StringUtils.isNotNull(ardAlarmpointsWell)) { ardAlarmExternal.setLongitude(ardAlarmpointsWell.getLongitude()); ardAlarmExternal.setLatitude(ardAlarmpointsWell.getLatitude()); } int aae = ardAlarmExternalMapper.insertArdAlarmExternal(ardAlarmExternal); if (aae > 0) { log.debug("externalå ¥åºæåï¼" + ardAlarmExternal); //region å¼å¯¼å½å if (StringUtils.isNull(ardAlarmExternal.getLongitude()) || StringUtils.isNull(ardAlarmExternal.getLatitude())) { 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()});//æè¿ç¸æºID if (StringUtils.isNotEmpty(nearbyCameraId)) { messagesEnqueued(nearbyCameraId, ardAlarmExternal.getId(), "sys_external", ardAlarmExternal.getCreateTime(), 1, 1, guideCoordinate); } //endregion } //endregion break; @@ -491,7 +555,7 @@ /** * æ¶æ¯å ¥é * * <p> * cameraId ç¸æºID * alarmId æ¥è¦ID * alarmType æ¥è¦ç±»å @@ -499,34 +563,57 @@ * recordSn å½ååå¨ä½ç½® 1-recordUrl1 2-recordUrl2 * targetPosition æ¥è¦ç¹ä½ç½®åæ */ private void messagesEnqueued(String cameraId, String alarmId, String alarmType,Date receiveTime, Integer num, Integer recordSn,double[] targetPosition) { SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); GuideTask guideTask = new GuideTask(); //ç¸æºID guideTask.setCameraId(cameraId); //æ¥è¦ç±»å guideTask.setAlarmType(alarmType); //éé(éè¿æ¥å¤æ¶é´ç å¤) String dayNightTime = redisCache.getCacheObject("sys_config:dayNightTime"); Integer channel = ArdTool.getChannelBydayNightTime(dayNightTime); guideTask.setChanNum(channel); //æ¥è¦ID guideTask.setAlarmId(alarmId); //æ¥æ¶æ¶é´ guideTask.setReceiveTime(fmt.format(receiveTime)); //æ¥è¦ä¼å 级(éè¿ä¼å 级åå ¸) Integer priority = CamPriority.priorityMap.get(alarmType); guideTask.setPriority(priority); //æ¥è¦æ¬¡æ° guideTask.setNum(num); //å½ååå¨ä½ç½® guideTask.setRecordSn(recordSn); //ç®æ ç»çº¬åº¦ guideTask.setTargetPosition(targetPosition); //æ¶æ¯å ¥é queueManager.addTaskToQueue(cameraId, guideTask); //æå°éå GuidePriorityQueue.printPriorityQueue(); private void messagesEnqueued(String cameraId, String alarmId, String alarmType, Date receiveTime, Integer num, Integer recordSn, double[] targetPosition) { try { if (!IsEnableGuide(cameraId)) { log.info("ç¸æº:" + cameraId + "æªå¼å¯æ¥è¦å¼å¯¼åè½"); return; } SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); GuideTask guideTask = new GuideTask(); //ç¸æºID guideTask.setCameraId(cameraId); //æ¥è¦ç±»å guideTask.setAlarmType(alarmType); //éé(éè¿æ¥å¤æ¶é´ç å¤) String dayNightTime = redisCache.getCacheObject("sys_config:dayNightTime"); Integer channel = ArdTool.getChannelBydayNightTime(dayNightTime); guideTask.setChanNum(channel); //æ¥è¦ID guideTask.setAlarmId(alarmId); //æ¥æ¶æ¶é´ guideTask.setReceiveTime(fmt.format(receiveTime)); //æ¥è¦ä¼å 级(éè¿ä¼å 级åå ¸) Integer priority = CamPriority.priorityMap.get(alarmType); guideTask.setPriority(priority); //æ¥è¦æ¬¡æ° guideTask.setNum(num); //å½ååå¨ä½ç½® guideTask.setRecordSn(recordSn); //ç®æ ç»çº¬åº¦ guideTask.setTargetPosition(targetPosition); //æ¶æ¯å ¥é queueManager.addTaskToQueue(cameraId, guideTask); //æå°éå GuidePriorityQueue.printPriorityQueue(); } catch (Exception ex) { log.error("æ¥è¦å ¥éå¼å¸¸:" + ex.getMessage()); } } /** * å çµæ¯å¦å¼å¯æ¥è¦å¼å¯¼åè½ * åèä¹ * 2023/7/7 14:03 */ private Boolean IsEnableGuide(String cameraId) { boolean enabled = false; ArdCameras ardCameras = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCameras.getCamAlarmGuideEnable().equals(1)) { enabled = true; } return enabled; } /** @@ -563,35 +650,36 @@ return minDistanceCameraId; } public static void main(String[] args) { Comparator<Obj> PriorityDescCom = Comparator.comparingInt(Obj::getPriority).reversed(); Comparator<Obj> NumDescCom = Comparator.comparingInt(Obj::getNum).reversed(); Comparator<Obj> receiveTimeAscCom = Comparator.comparing(Obj::getAlarmTime); Comparator<Obj> comparator = PriorityDescCom.thenComparing(NumDescCom).thenComparing(receiveTimeAscCom); PriorityBlockingQueue<Obj> priorityQueue = new PriorityBlockingQueue<>(1000,comparator); PriorityBlockingQueue<Obj> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); priorityQueue.add(new Obj(999,1,"2023-07-01 16:00:01")); priorityQueue.add(new Obj(999,2,"2023-07-01 16:00:01")); priorityQueue.add(new Obj(999,3,"2023-07-01 16:00:01")); priorityQueue.add(new Obj(999, 1, "2023-07-01 16:00:01")); priorityQueue.add(new Obj(999, 2, "2023-07-01 16:00:01")); priorityQueue.add(new Obj(999, 3, "2023-07-01 16:00:01")); List<Obj> elements = new ArrayList<>(priorityQueue); elements.sort(priorityQueue.comparator()); // 使ç¨éåçæ¯è¾å¨è¿è¡æåº for (Obj task : elements) { log.info("æ£å¨æéãpriorityã" + task.getPriority()+"ãnumã" + task.getNum() + "ãalarmTimeã" + task.getAlarmTime()); log.info("æ£å¨æéãpriorityã" + task.getPriority() + "ãnumã" + task.getNum() + "ãalarmTimeã" + task.getAlarmTime()); } log.info("==================================================================="); priorityQueue.add(new Obj(999,5,"2023-07-01 16:00:01")); priorityQueue.add(new Obj(999, 5, "2023-07-01 16:00:01")); PriorityBlockingQueue queue = new PriorityBlockingQueue<>(priorityQueue); while (priorityQueue.size() > 0) { Obj task = priorityQueue.poll(); log.info("æ£å¨æéãpriorityã" + task.getPriority()+"ãnumã" + task.getNum() + "ãalarmTimeã" + task.getAlarmTime()); log.info("æ£å¨æéãpriorityã" + task.getPriority() + "ãnumã" + task.getNum() + "ãalarmTimeã" + task.getAlarmTime()); } } @Data @AllArgsConstructor static class Obj { static class Obj { Integer priority; Integer num; String alarmTime; ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
@@ -64,7 +64,8 @@ PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(cameraId); if(StringUtils.isNull(guideTaskQueue)) { log.info("ç¸æºæªç»å½ï¼æ²¡æéå"); log.info("ç¸æºæªç»å½,没æéå,æ æ³å ¥éå¼å¯¼"); return; } log.debug("æ°ä»»å¡å ¥é:"+task.getAlarmId()); guideTaskQueue.add(task); 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.externalAlarm.domain.ArdAlarmExternal; import com.ruoyi.alarm.externalAlarm.service.IArdAlarmExternalService; import com.ruoyi.alarm.globalAlarm.domain.GuideTask; import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar; import com.ruoyi.alarm.radarAlarm.service.IArdAlarmRadarService; @@ -10,6 +12,7 @@ import com.ruoyi.device.hiksdk.service.IHikClientService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** @@ -29,6 +32,8 @@ IArdAlarmTubeService ardAlarmTubeService; @Resource IArdAlarmRadarService ardAlarmRadarService; @Resource IArdAlarmExternalService ardAlarmExternalService; public void processTask(GuideTask guideTask) { try { @@ -39,7 +44,7 @@ cmd.setOperator(guideTask.getAlarmType()); cmd.setExpired(30); cmd.setRecordBucketName("record"); cmd.setRecordObjectName("alarm_"+guideTask.getAlarmId()); cmd.setRecordObjectName("alarm_" + guideTask.getAlarmId()); log.debug("å¼å§å¼å¯¼"); boolean guideRes = hikClientService.guideTargetPosition(cmd); if (guideRes) { @@ -49,7 +54,7 @@ try { Thread.sleep(30000); } catch (InterruptedException e) { log.info("å½åä»»å¡ID"+guideTask.getAlarmId()+"线ç¨è¢«ç»æ¢"); log.info("å½åä»»å¡ID" + guideTask.getAlarmId() + "线ç¨è¢«ç»æ¢"); } String url = hikClientService.recordStopToMinio(cmd);//忢å½åè¿åurl if (StringUtils.isNotEmpty(url)) { @@ -72,6 +77,12 @@ } ardAlarmRadarService.updateArdAlarmRadar(ardAlarmRadar); break; case "sys_external": ArdAlarmExternal ardAlarmExternal = new ArdAlarmExternal(); ardAlarmExternal.setId(guideTask.getAlarmId()); ardAlarmExternal.setRecordUrl(url); ardAlarmExternalService.updateArdAlarmExternal(ardAlarmExternal); break; } } } ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
@@ -21,6 +21,7 @@ priorityMap.put("sys_radar_move", 900);//é·è¾¾ç§»å¨æ¥è¦ priorityMap.put("sys_tube_leak", 800);//管线æ³é²æ¥è¦ priorityMap.put("sys_radar_pumpshutdown", 800);//é·è¾¾æ½æ²¹æºåæº priorityMap.put("sys_external", 700);//å¤èæ¥è¦ priorityMap.put("sys_patrol_inspect", 1);//å·¡æ£ } } ard-work/src/main/resources/mapper/alarm/ArdAlarmExternalMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,185 @@ <?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.externalAlarm.mapper.ArdAlarmExternalMapper"> <resultMap type="ArdAlarmExternal" id="ArdAlarmExternalResult"> <result property="id" column="id" /> <result property="alarmId" column="alarm_id" /> <result property="alarmName" column="alarm_name" /> <result property="defenseId" column="defense_id" /> <result property="defenseName" column="defense_name" /> <result property="alarmType" column="alarm_type" /> <result property="alarmTime" column="alarm_time" /> <result property="subSysNo" column="sub_sys_no" /> <result property="alarmHostId" column="alarm_host_id" /> <result property="longitude" column="longitude" /> <result property="latitude" column="latitude" /> <result property="altitude" column="altitude" /> <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="selectArdAlarmExternalVo"> select id, alarm_id, alarm_name, defense_id, defense_name, alarm_type, alarm_time, sub_sys_no, alarm_host_id, longitude, latitude, altitude, record_url, view_time, dept_id, user_id, create_by, create_time from ard_alarm_external </sql> <select id="selectArdAlarmExternalList" parameterType="ArdAlarmExternal" resultMap="ArdAlarmExternalResult"> <include refid="selectArdAlarmExternalVo"/> <where> <if test="alarmId != null and alarmId != ''"> and alarm_id = #{alarmId}</if> <if test="alarmName != null and alarmName != ''"> and alarm_name like '%'||#{alarmName}||'%'</if> <if test="defenseId != null and defenseId != ''"> and defense_id = #{defenseId}</if> <if test="defenseName != null and defenseName != ''"> and defense_name like '%'||#{defenseName}||'%'</if> <if test="alarmType != null and alarmType != ''"> and alarm_type = #{alarmType}</if> <if test="subSysNo != null and subSysNo != ''"> and sub_sys_no = #{subSysNo}</if> <if test="alarmHostId != null and alarmHostId != ''"> and alarm_host_id = #{alarmHostId}</if> <if test="longitude != null and longitude != ''"> and longitude = #{longitude}</if> <if test="latitude != null and latitude != ''"> and latitude = #{latitude}</if> <if test="altitude != null and altitude != ''"> and altitude = #{altitude}</if> <if test="recordUrl != null and recordUrl != ''"> and record_url = #{recordUrl}</if> <if test="viewTime != null "> and view_time = #{viewTime}</if> <if test="deptId != null and deptId != ''"> and dept_id = #{deptId}</if> <if test="userId != null and userId != ''"> and user_id = #{userId}</if> <if test="params.beginTime != null and params.beginTime != ''"><!-- å¼å§æ¶é´æ£ç´¢ --> AND alarm_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss') </if> <if test="params.endTime != null and params.endTime != ''"><!-- ç»ææ¶é´æ£ç´¢ --> AND alarm_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss') </if> </where> </select> <select id="selectArdAlarmExternalById" parameterType="String" resultMap="ArdAlarmExternalResult"> <include refid="selectArdAlarmExternalVo"/> where id = #{id} </select> <insert id="insertArdAlarmExternal" parameterType="ArdAlarmExternal"> insert into ard_alarm_external <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">id,</if> <if test="alarmId != null">alarm_id,</if> <if test="alarmName != null">alarm_name,</if> <if test="defenseId != null">defense_id,</if> <if test="defenseName != null">defense_name,</if> <if test="alarmType != null">alarm_type,</if> <if test="alarmTime != null">alarm_time,</if> <if test="subSysNo != null">sub_sys_no,</if> <if test="alarmHostId != null">alarm_host_id,</if> <if test="longitude != null">longitude,</if> <if test="latitude != null">latitude,</if> <if test="altitude != null">altitude,</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="alarmId != null">#{alarmId},</if> <if test="alarmName != null">#{alarmName},</if> <if test="defenseId != null">#{defenseId},</if> <if test="defenseName != null">#{defenseName},</if> <if test="alarmType != null">#{alarmType},</if> <if test="alarmTime != null">#{alarmTime},</if> <if test="subSysNo != null">#{subSysNo},</if> <if test="alarmHostId != null">#{alarmHostId},</if> <if test="longitude != null">#{longitude},</if> <if test="latitude != null">#{latitude},</if> <if test="altitude != null">#{altitude},</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="updateArdAlarmExternal" parameterType="ArdAlarmExternal"> update ard_alarm_external <trim prefix="SET" suffixOverrides=","> <if test="alarmId != null">alarm_id = #{alarmId},</if> <if test="alarmName != null">alarm_name = #{alarmName},</if> <if test="defenseId != null">defense_id = #{defenseId},</if> <if test="defenseName != null">defense_name = #{defenseName},</if> <if test="alarmType != null">alarm_type = #{alarmType},</if> <if test="alarmTime != null">alarm_time = #{alarmTime},</if> <if test="subSysNo != null">sub_sys_no = #{subSysNo},</if> <if test="alarmHostId != null">alarm_host_id = #{alarmHostId},</if> <if test="longitude != null">longitude = #{longitude},</if> <if test="latitude != null">latitude = #{latitude},</if> <if test="altitude != null">altitude = #{altitude},</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="deleteArdAlarmExternalById" parameterType="String"> delete from ard_alarm_external where id = #{id} </delete> <delete id="deleteArdAlarmExternalByIds" parameterType="String"> delete from ard_alarm_external where id in <foreach item="id" collection="array" open="(" separator="," close=")"> #{id} </foreach> </delete> <select id="selectCountByAlarmTime" resultType="Integer"> SELECT COUNT(DISTINCT aae.defense_name) FROM ard_alarm_external aae WHERE aae.alarm_time >= CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE and aae.alarm_type = #{alarmType} and aae.view_time is null </select> <select id="selectListAllByCommand" resultMap="ArdAlarmExternalResult"> SELECT T .* FROM ( SELECT aae.ID, aae.alarm_id, aae.alarm_name, aae.defense_id, aae.defense_name, aae.alarm_type, aae.alarm_time, aae.longitude, aae.latitude, ROW_NUMBER () OVER ( PARTITION BY aae.defense_name ORDER BY aae.alarm_time DESC ) AS rn, COUNT ( CASE WHEN aae.view_time IS NULL THEN 1 END ) OVER ( PARTITION BY aae.defense_name ) AS COUNT, COUNT ( aae.alarm_time ) OVER ( PARTITION BY aae.defense_name ) AS total FROM ard_alarm_external aae WHERE aae.alarm_time >= ( CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE ) AND aae.alarm_type = #{ alarmType } ORDER BY aae.alarm_time DESC ) T WHERE T.rn = 1 </select> <update id="updateViewTimeByCondition" parameterType="String"> update ard_alarm_external set view_time=#{viewTime} where defense_name = #{defenseName} and alarm_type=#{alarmType} and alarm_time<=#{alarmTime} and view_time is null </update> </mapper> ard-work/src/main/resources/mapper/alarm/ArdAlarmRadarMapper.xml
@@ -44,6 +44,12 @@ <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> <if test="params.beginTime != null and params.beginTime != ''"><!-- å¼å§æ¶é´æ£ç´¢ --> AND alarm_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss') </if> <if test="params.endTime != null and params.endTime != ''"><!-- ç»ææ¶é´æ£ç´¢ --> AND alarm_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss') </if> </where> order by alarm_time desc </select>