ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -22,6 +22,8 @@ import com.ruoyi.alarm.radar.mapper.ArdAlarmRadarPumpMapper; import com.ruoyi.alarm.steal.domain.ArdAlarmStealelec; import com.ruoyi.alarm.steal.mapper.ArdAlarmStealelecMapper; import com.ruoyi.alarm.superbrain.domain.ArdAlarmSuperBrain; import com.ruoyi.alarm.superbrain.mapper.ArdAlarmSuperBrainMapper; import com.ruoyi.alarm.tube.domain.ArdAlarmTube; import com.ruoyi.alarm.tube.mapper.ArdAlarmTubeMapper; import com.ruoyi.alarm.wall.domain.ArdAlarmWall; @@ -74,6 +76,8 @@ @Slf4j(topic = "mqtt") public class GlobalAlarmServiceImpl implements IGlobalAlarmService { //region ä¾èµæ³¨å ¥ @Resource private ArdAlarmSuperBrainMapper ardAlarmSuperBrainMapper; @Resource private ArdAlarmDigitization3Mapper ardAlarmDigitization3Mapper; @Resource @@ -153,6 +157,8 @@ countMap.put("1014", count1014); int count1012 = ardAlarmDigitization3Mapper.selectCountByAlarmTime(refreshTime); countMap.put("1012", count1012); int count1015 = ardAlarmSuperBrainMapper.selectCountByAlarmTime(refreshTime); countMap.put("1015", count1015); map.put("20000", countMap); return map; } @@ -325,6 +331,22 @@ .setAltitude(ardAlarmTube.getAltitude()) .setCount(ardAlarmTube.getCount()) .setTotal(ardAlarmTube.getTotal()); return globalAlarmData; }).collect(Collectors.toList()); case 1015: List<ArdAlarmSuperBrain> ardAlarmSuperBrains = ardAlarmSuperBrainMapper.selectListAllByCommand(refreshTime); return ardAlarmSuperBrains.stream() .map(ardAlarmSuperBrain -> { GlobalAlarmData globalAlarmData = new GlobalAlarmData() .setId(ardAlarmSuperBrain.getId()) .setName(ardAlarmSuperBrain.getAlarmType()) .setAlarmType(ardAlarmSuperBrain.getAlarmType()) .setAlarmTime(ardAlarmSuperBrain.getAlarmTime()) .setLongitude(ardAlarmSuperBrain.getLongitude()) .setLatitude(ardAlarmSuperBrain.getLatitude()) .setAltitude(ardAlarmSuperBrain.getAltitude()) .setCount(ardAlarmSuperBrain.getCount()) .setTotal(ardAlarmSuperBrain.getTotal()); return globalAlarmData; }).collect(Collectors.toList()); default: @@ -500,6 +522,22 @@ .setAltitude(ardAlarmTube.getAltitude()) .setCount(ardAlarmTube.getCount()) .setTotal(ardAlarmTube.getTotal()); return globalAlarmData; }).collect(Collectors.toList()); case 1015: List<ArdAlarmSuperBrain> ardAlarmSuperBrains = ardAlarmSuperBrainMapper.selectListAllByCommand(refreshTime); return ardAlarmSuperBrains.stream() .map(ardAlarmSuperBrain -> { GlobalAlarmData globalAlarmData = new GlobalAlarmData() .setId(ardAlarmSuperBrain.getId()) .setName(ardAlarmSuperBrain.getAlarmType()) .setAlarmType(ardAlarmSuperBrain.getAlarmType()) .setAlarmTime(ardAlarmSuperBrain.getAlarmTime()) .setLongitude(ardAlarmSuperBrain.getLongitude()) .setLatitude(ardAlarmSuperBrain.getLatitude()) .setAltitude(ardAlarmSuperBrain.getAltitude()) .setCount(ardAlarmSuperBrain.getCount()) .setTotal(ardAlarmSuperBrain.getTotal()); return globalAlarmData; }).collect(Collectors.toList()); default: @@ -692,6 +730,7 @@ if (alarmData1012.size() > 0) { GlobalAlarmDataList.addAll(alarmData1012); } List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectListAllByCommand(refreshTime); List<GlobalAlarmData> alarmData1014 = ardAlarmTubes.stream() .map(ardAlarmTube -> { @@ -710,6 +749,26 @@ if (alarmData1014.size() > 0) { GlobalAlarmDataList.addAll(alarmData1014); } List<ArdAlarmSuperBrain> ardAlarmSuperBrains = ardAlarmSuperBrainMapper.selectListAllByCommand(refreshTime); List<GlobalAlarmData> alarmData1015 = ardAlarmSuperBrains.stream() .map(ardAlarmSuperBrain -> { GlobalAlarmData globalAlarmData = new GlobalAlarmData() .setId(ardAlarmSuperBrain.getId()) .setName(ardAlarmSuperBrain.getAlarmType()) .setAlarmTime(ardAlarmSuperBrain.getAlarmTime()) .setLongitude(ardAlarmSuperBrain.getLongitude()) .setLatitude(ardAlarmSuperBrain.getLatitude()) .setAltitude(ardAlarmSuperBrain.getAltitude()) .setCount(ardAlarmSuperBrain.getCount()) .setTotal(ardAlarmSuperBrain.getTotal()) .setAlarmType("1015"); return globalAlarmData; }).collect(Collectors.toList()); if (alarmData1015.size() > 0) { GlobalAlarmDataList.addAll(alarmData1015); } return GlobalAlarmDataList; } @@ -798,6 +857,12 @@ aat.setPageNum(pageNum); aat.setPageSize(pageSize); return ardAlarmTubeMapper.selectArdAlarmTubeList(aat); case 1015: ArdAlarmSuperBrain aasb = new ArdAlarmSuperBrain(); aasb.setParams(params); aasb.setPageNum(pageNum); aasb.setPageSize(pageSize); return ardAlarmSuperBrainMapper.selectArdAlarmSuperBrainList(aasb); } return null; } @@ -903,6 +968,14 @@ String alarmTime = fmt.format(ardAlarmTube.getAlarmTime()); ardAlarmTubeMapper.updateViewTimeByTubeId(tubeId, alarmTime, DateUtils.getTime()); return ardAlarmTube; } case 1015: ArdAlarmSuperBrain ardAlarmSuperBrain = ardAlarmSuperBrainMapper.selectArdAlarmSuperBrainById(condition.getId()); if (StringUtils.isNotNull(ardAlarmSuperBrain)) { String alarmType = ardAlarmSuperBrain.getAlarmType(); String alarmTime = fmt.format(ardAlarmSuperBrain.getAlarmTime()); ardAlarmSuperBrainMapper.updateViewTimeByAlarmType(alarmType, alarmTime, DateUtils.getTime()); return ardAlarmSuperBrain; } default: return null; @@ -1245,6 +1318,17 @@ } //endregion break; case "superBrain": //region è¶ èæ¥è¦ ArdAlarmSuperBrain ardAlarmSuperBrain = JSONObject.parseObject(message, ArdAlarmSuperBrain.class); ardAlarmSuperBrain.setId(IdUtils.simpleUUID()); ardAlarmSuperBrain.setCreateTime(new Date()); int sbRes = ardAlarmSuperBrainMapper.insertArdAlarmSuperBrain(ardAlarmSuperBrain); if (sbRes > 0) { log.debug("superBrainå ¥åºæåï¼" + ardAlarmSuperBrain); } //endregion break; } } catch (Exception ex) { log.error("æ¥æ¶æ¥è¦å¼å¸¸:" + ex.getMessage()); ard-work/src/main/java/com/ruoyi/alarm/superbrain/controller/ArdAlarmSuperBrainController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,104 @@ package com.ruoyi.alarm.superbrain.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.superbrain.domain.ArdAlarmSuperBrain; import com.ruoyi.alarm.superbrain.service.IArdAlarmSuperBrainService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; /** * è¶ èæ¥è¦Controller * * @author ard * @date 2023-12-06 */ @RestController @RequestMapping("/alarm/superbrain") public class ArdAlarmSuperBrainController extends BaseController { @Autowired private IArdAlarmSuperBrainService ardAlarmSuperBrainService; /** * æ¥è¯¢è¶ èæ¥è¦å表 */ @PreAuthorize("@ss.hasPermi('alarm:superbrain:list')") @GetMapping("/list") public TableDataInfo list(ArdAlarmSuperBrain ardAlarmSuperBrain) { startPage(); List<ArdAlarmSuperBrain> list = ardAlarmSuperBrainService.selectArdAlarmSuperBrainList(ardAlarmSuperBrain); return getDataTable(list); } /** * 导åºè¶ èæ¥è¦å表 */ @PreAuthorize("@ss.hasPermi('alarm:superbrain:export')") @Log(title = "è¶ èæ¥è¦", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ArdAlarmSuperBrain ardAlarmSuperBrain) { List<ArdAlarmSuperBrain> list = ardAlarmSuperBrainService.selectArdAlarmSuperBrainList(ardAlarmSuperBrain); ExcelUtil<ArdAlarmSuperBrain> util = new ExcelUtil<ArdAlarmSuperBrain>(ArdAlarmSuperBrain.class); util.exportExcel(response, list, "è¶ èæ¥è¦æ°æ®"); } /** * è·åè¶ èæ¥è¦è¯¦ç»ä¿¡æ¯ */ @PreAuthorize("@ss.hasPermi('alarm:superbrain:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { return success(ardAlarmSuperBrainService.selectArdAlarmSuperBrainById(id)); } /** * æ°å¢è¶ èæ¥è¦ */ @PreAuthorize("@ss.hasPermi('alarm:superbrain:add')") @Log(title = "è¶ èæ¥è¦", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ArdAlarmSuperBrain ardAlarmSuperBrain) { return toAjax(ardAlarmSuperBrainService.insertArdAlarmSuperBrain(ardAlarmSuperBrain)); } /** * ä¿®æ¹è¶ èæ¥è¦ */ @PreAuthorize("@ss.hasPermi('alarm:superbrain:edit')") @Log(title = "è¶ èæ¥è¦", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ArdAlarmSuperBrain ardAlarmSuperBrain) { return toAjax(ardAlarmSuperBrainService.updateArdAlarmSuperBrain(ardAlarmSuperBrain)); } /** * å é¤è¶ èæ¥è¦ */ @PreAuthorize("@ss.hasPermi('alarm:superbrain:remove')") @Log(title = "è¶ èæ¥è¦", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { return toAjax(ardAlarmSuperBrainService.deleteArdAlarmSuperBrainByIds(ids)); } } ard-work/src/main/java/com/ruoyi/alarm/superbrain/domain/ArdAlarmSuperBrain.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,237 @@ package com.ruoyi.alarm.superbrain.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_super_brain * * @author ard * @date 2023-12-06 */ public class ArdAlarmSuperBrain extends BaseEntity { private static final long serialVersionUID = 1L; /** æ¥è¦ä¸»é® */ private String id; /** æ¥è¦åç§° */ @Excel(name = "æ¥è¦åç§°") private String alarmName; /** æ¥è¦ç±»å */ @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; /** 设å¤id */ @Excel(name = "设å¤id") private String deviceId; /** 设å¤åç§° */ @Excel(name = "设å¤åç§°") private String deviceName; /** ééå· */ @Excel(name = "ééå·") private Integer chanNo; /** ç»åº¦ */ @Excel(name = "ç»åº¦") private Double longitude; /** 纬度 */ @Excel(name = "纬度") private Double latitude; /** é«å± */ @Excel(name = "é«å±") private Double altitude; /** å¾çurl */ @Excel(name = "å¾çurl") private String picUrl; /** 人è¸å¾çurl */ @Excel(name = "人è¸å¾çurl") private String faceUrl; /** æ¥çæ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "æ¥çæ¶é´", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date viewTime; /** * æ¥è¦æ»æ° */ private Integer total; /** * æªè¯»æ¥è¦æ°é */ private Integer count; public Integer getTotal() { return total; } public void setTotal(Integer total) { this.total = total; } public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; } public void setId(String id) { this.id = id; } public String getId() { return id; } public void setAlarmName(String alarmName) { this.alarmName = alarmName; } public String getAlarmName() { return alarmName; } 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 setDeviceId(String deviceId) { this.deviceId = deviceId; } public String getDeviceId() { return deviceId; } public void setDeviceName(String deviceName) { this.deviceName = deviceName; } public String getDeviceName() { return deviceName; } public void setChanNo(Integer chanNo) { this.chanNo = chanNo; } public Integer getChanNo() { return chanNo; } 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 void setPicUrl(String picUrl) { this.picUrl = picUrl; } public String getPicUrl() { return picUrl; } public void setFaceUrl(String faceUrl) { this.faceUrl = faceUrl; } public String getFaceUrl() { return faceUrl; } public void setViewTime(Date viewTime) { this.viewTime = viewTime; } public Date getViewTime() { return viewTime; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) .append("alarmName", getAlarmName()) .append("alarmType", getAlarmType()) .append("alarmTime", getAlarmTime()) .append("deviceId", getDeviceId()) .append("deviceName", getDeviceName()) .append("chanNo", getChanNo()) .append("longitude", getLongitude()) .append("latitude", getLatitude()) .append("altitude", getAltitude()) .append("picUrl", getPicUrl()) .append("faceUrl", getFaceUrl()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("viewTime", getViewTime()) .toString(); } } ard-work/src/main/java/com/ruoyi/alarm/superbrain/mapper/ArdAlarmSuperBrainMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,68 @@ package com.ruoyi.alarm.superbrain.mapper; import java.util.List; import com.ruoyi.alarm.superbrain.domain.ArdAlarmSuperBrain; import com.ruoyi.alarm.tube.domain.ArdAlarmTube; import org.apache.ibatis.annotations.Param; /** * è¶ èæ¥è¦Mapperæ¥å£ * * @author ard * @date 2023-12-06 */ public interface ArdAlarmSuperBrainMapper { /** * æ¥è¯¢è¶ èæ¥è¦ * * @param id è¶ èæ¥è¦ä¸»é® * @return è¶ èæ¥è¦ */ public ArdAlarmSuperBrain selectArdAlarmSuperBrainById(String id); /** * æ¥è¯¢è¶ èæ¥è¦å表 * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return è¶ èæ¥è¦éå */ public List<ArdAlarmSuperBrain> selectArdAlarmSuperBrainList(ArdAlarmSuperBrain ardAlarmSuperBrain); /** * æ°å¢è¶ èæ¥è¦ * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return ç»æ */ public int insertArdAlarmSuperBrain(ArdAlarmSuperBrain ardAlarmSuperBrain); /** * ä¿®æ¹è¶ èæ¥è¦ * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return ç»æ */ public int updateArdAlarmSuperBrain(ArdAlarmSuperBrain ardAlarmSuperBrain); /** * å é¤è¶ èæ¥è¦ * * @param id è¶ èæ¥è¦ä¸»é® * @return ç»æ */ public int deleteArdAlarmSuperBrainById(String id); /** * æ¹éå é¤è¶ èæ¥è¦ * * @param ids éè¦å é¤çæ°æ®ä¸»é®éå * @return ç»æ */ public int deleteArdAlarmSuperBrainByIds(String[] ids); public List<ArdAlarmSuperBrain> selectListAllByCommand(@Param("refreshTime")String refreshTime); int selectCountByAlarmTime(@Param("refreshTime")String refreshTime); public int updateViewTimeByAlarmType(@Param("alarmType")String alarmType,@Param("alarmTime") String alarmTime,@Param("viewTime") String viewTime); } ard-work/src/main/java/com/ruoyi/alarm/superbrain/service/IArdAlarmSuperBrainService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,61 @@ package com.ruoyi.alarm.superbrain.service; import java.util.List; import com.ruoyi.alarm.superbrain.domain.ArdAlarmSuperBrain; /** * è¶ èæ¥è¦Serviceæ¥å£ * * @author ard * @date 2023-12-06 */ public interface IArdAlarmSuperBrainService { /** * æ¥è¯¢è¶ èæ¥è¦ * * @param id è¶ èæ¥è¦ä¸»é® * @return è¶ èæ¥è¦ */ public ArdAlarmSuperBrain selectArdAlarmSuperBrainById(String id); /** * æ¥è¯¢è¶ èæ¥è¦å表 * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return è¶ èæ¥è¦éå */ public List<ArdAlarmSuperBrain> selectArdAlarmSuperBrainList(ArdAlarmSuperBrain ardAlarmSuperBrain); /** * æ°å¢è¶ èæ¥è¦ * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return ç»æ */ public int insertArdAlarmSuperBrain(ArdAlarmSuperBrain ardAlarmSuperBrain); /** * ä¿®æ¹è¶ èæ¥è¦ * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return ç»æ */ public int updateArdAlarmSuperBrain(ArdAlarmSuperBrain ardAlarmSuperBrain); /** * æ¹éå é¤è¶ èæ¥è¦ * * @param ids éè¦å é¤çè¶ èæ¥è¦ä¸»é®éå * @return ç»æ */ public int deleteArdAlarmSuperBrainByIds(String[] ids); /** * å é¤è¶ èæ¥è¦ä¿¡æ¯ * * @param id è¶ èæ¥è¦ä¸»é® * @return ç»æ */ public int deleteArdAlarmSuperBrainById(String id); } ard-work/src/main/java/com/ruoyi/alarm/superbrain/service/impl/ArdAlarmSuperBrainServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,97 @@ package com.ruoyi.alarm.superbrain.service.impl; import java.util.List; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.uuid.IdUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.alarm.superbrain.mapper.ArdAlarmSuperBrainMapper; import com.ruoyi.alarm.superbrain.domain.ArdAlarmSuperBrain; import com.ruoyi.alarm.superbrain.service.IArdAlarmSuperBrainService; /** * è¶ èæ¥è¦Serviceä¸å¡å±å¤ç * * @author ard * @date 2023-12-06 */ @Service public class ArdAlarmSuperBrainServiceImpl implements IArdAlarmSuperBrainService { @Autowired private ArdAlarmSuperBrainMapper ardAlarmSuperBrainMapper; /** * æ¥è¯¢è¶ èæ¥è¦ * * @param id è¶ èæ¥è¦ä¸»é® * @return è¶ èæ¥è¦ */ @Override public ArdAlarmSuperBrain selectArdAlarmSuperBrainById(String id) { return ardAlarmSuperBrainMapper.selectArdAlarmSuperBrainById(id); } /** * æ¥è¯¢è¶ èæ¥è¦å表 * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return è¶ èæ¥è¦ */ @Override public List<ArdAlarmSuperBrain> selectArdAlarmSuperBrainList(ArdAlarmSuperBrain ardAlarmSuperBrain) { return ardAlarmSuperBrainMapper.selectArdAlarmSuperBrainList(ardAlarmSuperBrain); } /** * æ°å¢è¶ èæ¥è¦ * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return ç»æ */ @Override public int insertArdAlarmSuperBrain(ArdAlarmSuperBrain ardAlarmSuperBrain) { ardAlarmSuperBrain.setId(IdUtils.simpleUUID()); ardAlarmSuperBrain.setCreateBy(SecurityUtils.getUsername()); ardAlarmSuperBrain.setCreateTime(DateUtils.getNowDate()); return ardAlarmSuperBrainMapper.insertArdAlarmSuperBrain(ardAlarmSuperBrain); } /** * ä¿®æ¹è¶ èæ¥è¦ * * @param ardAlarmSuperBrain è¶ èæ¥è¦ * @return ç»æ */ @Override public int updateArdAlarmSuperBrain(ArdAlarmSuperBrain ardAlarmSuperBrain) { ardAlarmSuperBrain.setUpdateBy(SecurityUtils.getUsername()); ardAlarmSuperBrain.setUpdateTime(DateUtils.getNowDate()); return ardAlarmSuperBrainMapper.updateArdAlarmSuperBrain(ardAlarmSuperBrain); } /** * æ¹éå é¤è¶ èæ¥è¦ * * @param ids éè¦å é¤çè¶ èæ¥è¦ä¸»é® * @return ç»æ */ @Override public int deleteArdAlarmSuperBrainByIds(String[] ids) { return ardAlarmSuperBrainMapper.deleteArdAlarmSuperBrainByIds(ids); } /** * å é¤è¶ èæ¥è¦ä¿¡æ¯ * * @param id è¶ èæ¥è¦ä¸»é® * @return ç»æ */ @Override public int deleteArdAlarmSuperBrainById(String id) { return ardAlarmSuperBrainMapper.deleteArdAlarmSuperBrainById(id); } } ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
@@ -98,7 +98,7 @@ boolean recordStopNotToMinio(CameraCmd cmd); //è·åç¸æºééä¿¡æ¯ List<ArdChannel> getCameraChannelList(ArdCameras camera); List<ArdChannel> getIPChannelInfo(ArdCameras camera); //è·åGISä¿¡æ¯æ°æ® Map<String, Object> getGisInfo(CameraCmd cmd); ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDKFactory.java
@@ -37,6 +37,4 @@ throw new IllegalArgumentException("Unsupported device: " + factory); } } } ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -627,7 +627,7 @@ } @Override public List<ArdChannel> getCameraChannelList(ArdCameras camera) { public List<ArdChannel> getIPChannelInfo(ArdCameras camera) { return null; } ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/lib/LoginResultCallBack.java
@@ -53,8 +53,9 @@ camera.setChanNum((int) lpDeviceinfo.byChanNum); camera.setStartDChan((int) lpDeviceinfo.byStartDChan); //è·åææ°éé List<ArdChannel> cameraChannelList = hikClientService.getCameraChannelList(camera); List<ArdChannel> cameraChannelList = hikClientService.getIPChannelInfo(camera); if (cameraChannelList.size() > 0) { camera.setChanNum(cameraChannelList.size()); //æ·»å éé for (ArdChannel channel : cameraChannelList) { channel.setId(IdUtils.simpleUUID()); ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -140,37 +140,16 @@ camera.setState("1"); camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum); camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan); ardCamerasService.updateArdCameras(camera); //è·åææ°éé List<ArdChannel> cameraChannelList = getCameraChannelList(camera); List<ArdChannel> cameraChannelList = getIPChannelInfo(camera); if (cameraChannelList.size() > 0) { camera.setChannelList(cameraChannelList); for (ArdChannel channel : cameraChannelList) { channel.setId(IdUtils.simpleUUID()); ardChannelService.insertArdChannel(channel); } //æ·»å å°æµåªä½ for (ArdChannel channel : cameraChannelList) { String name = camera.getId() + "_" + channel.getChanNo(); String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream"; Vtdu vtdu = vtduService.selectVtduByName(name); if (vtdu != null) { vtduService.deleteVtduByName(name); } //æ·»å å°æµåªä½ vtdu = new Vtdu(); vtdu.setRtspSource(rtspSource); vtdu.setName(camera.getId() + "_" + channel.getChanNo()); CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo()); Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); if (videoCompressionCfg.get("videoEncType").equals("æ åh264")) { vtdu.setIsCode("0");//é»è®¤ä¸è½¬ç } else { vtdu.setIsCode("1");//é»è®¤è½¬ç } vtdu.setMode("1");//é»è®¤CPU软解ç vtdu.setCameraId(camera.getId()); vtduService.insertVtdu(vtdu); } addVtdu(camera); } //å建å¼å¯¼éå if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { @@ -178,7 +157,7 @@ PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); } ardCamerasService.updateArdCameras(camera); } catch (Exception ex) { log.error("注å设å¤å¼å¸¸", ex); } @@ -270,16 +249,35 @@ camera.setState("1"); camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum); camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan); ardCamerasService.updateArdCameras(camera); //è·åææ°éé List<ArdChannel> cameraChannelList = getCameraChannelList(camera); List<ArdChannel> cameraChannelList = getIPChannelInfo(camera); if (cameraChannelList.size() > 0) { camera.setChannelList(cameraChannelList); camera.setChanNum(cameraChannelList.size()); for (ArdChannel channel : cameraChannelList) { channel.setId(IdUtils.simpleUUID()); ardChannelService.insertArdChannel(channel); } } ardCamerasService.updateArdCameras(camera); //æ·»å å°æµåªä½ for (ArdChannel channel : cameraChannelList) { addVtdu(camera); //å建å¼å¯¼éå if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); } } catch (Exception ex) { log.error("注å设å¤å¼å¸¸", ex); } } //æ·»å å°æµåªä½ private void addVtdu(ArdCameras camera) { try { for (ArdChannel channel : camera.getChannelList()) { String name = camera.getId() + "_" + channel.getChanNo(); String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream"; Vtdu vtdu = vtduService.selectVtduByName(name); @@ -301,17 +299,10 @@ vtdu.setCameraId(camera.getId()); vtduService.insertVtdu(vtdu); } } //å建å¼å¯¼éå if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); } catch (Exception ex) { log.error("ééæ·»å å°æµåªä½å¼å¸¸ï¼" + ex.getMessage()); } } catch (Exception ex) { log.error("注å设å¤å¼å¸¸", ex); } } /** @@ -1194,8 +1185,7 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置å¤è§å¤±è´¥,请ç¨åéè¯" + code); } else { } else { log.debug("设置å¤è§æå"); } @@ -1682,18 +1672,26 @@ } //è·åIPéé @Override public List<ArdChannel> getCameraChannelList(ArdCameras camera) { /*è·åéé*/ public List<ArdChannel> getIPChannelInfo(ArdCameras camera) { //è·åéé List<ArdChannel> channelList = new ArrayList<>(); try { Integer chanNum = camera.getChanNum(); Integer startDChan = camera.getStartDChan(); if (chanNum > 0) { // è·åééå· for (int iChannum = 0; iChannum < chanNum; iChannum++) { if (camera.getGdtype().equals("3")) { camera.setChanNum(64);//è¶ èè·åå¨çº¿ééæ° camera.setStartDChan(0);//è¶ èåå§éé为0 } IntByReference ibrBytesReturned = new IntByReference(0);//è·åIPæ¥å ¥é ç½®åæ° HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40(); m_strIpparaCfg.write(); //lpIpParaConfig æ¥æ¶æ°æ®çç¼å²æé Pointer lpIpParaConfig = m_strIpparaCfg.getPointer(); boolean bRet = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_IPPARACFG_V40, 0, lpIpParaConfig, m_strIpparaCfg.size(), ibrBytesReturned); m_strIpparaCfg.read(); //log.debug("èµ·å§æ°åééå·ï¼" + m_strIpparaCfg.dwStartDChan);//m_strIpparaCfg.dwDChanNum for (int iChannum = 0; iChannum < camera.getChanNum(); iChannum++) { ArdChannel ardChannel = new ArdChannel(); int channum = iChannum + startDChan + 1; int channum = iChannum + camera.getStartDChan() + 1; HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40(); strPicCfg.dwSize = strPicCfg.size(); strPicCfg.write(); @@ -1702,18 +1700,32 @@ IntByReference pInt = new IntByReference(0); boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), pStrPicCfg, strPicCfg.size(), pInt); if (b_GetPicCfg) { strPicCfg.read(); String channelName = new String(strPicCfg.sChanName, "GBK").trim(); ardChannel.setName(channelName); if (!b_GetPicCfg) { // log.error("è·åå¾ååæ°å¤±è´¥ï¼é误ç ï¼" + hCNetSDK.NET_DVR_GetLastError()); } strPicCfg.read(); m_strIpparaCfg.struStreamMode[iChannum].read(); if (m_strIpparaCfg.struStreamMode[iChannum].byGetStreamType == 0) { m_strIpparaCfg.struStreamMode[iChannum].uGetStream.setType(HCNetSDK.NET_DVR_IPCHANINFO.class); m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.read(); int channel = m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPID + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPIDHigh * 256; String channelName = new String(strPicCfg.sChanName, "GBK").trim(); ardChannel.setDeviceId(camera.getId()); ardChannel.setChanNo(iChannum + 1); ardChannel.setName(channelName); ardChannel.setChanNo(channum); if (camera.getGdtype().equals("3")) { //è¶ èåªè·åå¨çº¿éé if (m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byEnable == 1) { //log.debug("IPéé" + channum + "å¨çº¿"); channelList.add(ardChannel); } } else { channelList.add(ardChannel); } } } } catch (Exception ex) { log.error("è·åç¸æºééå¼å¸¸:" + ex.getMessage()); log.error("è·åIPééå¼å¸¸:" + ex.getMessage()); } return channelList; } ard-work/src/main/resources/mapper/alarm/ArdAlarmSuperBrainMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,190 @@ <?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.superbrain.mapper.ArdAlarmSuperBrainMapper"> <resultMap type="ArdAlarmSuperBrain" id="ArdAlarmSuperBrainResult"> <result property="id" column="id"/> <result property="alarmName" column="alarm_name"/> <result property="alarmType" column="alarm_type"/> <result property="alarmTime" column="alarm_time"/> <result property="deviceId" column="device_id"/> <result property="deviceName" column="device_name"/> <result property="chanNo" column="chan_no"/> <result property="longitude" column="longitude"/> <result property="latitude" column="latitude"/> <result property="altitude" column="altitude"/> <result property="picUrl" column="pic_url"/> <result property="faceUrl" column="face_url"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="viewTime" column="view_time"/> </resultMap> <sql id="selectArdAlarmSuperBrainVo"> select id, alarm_name, alarm_type, alarm_time, device_id, device_name, chan_no, longitude, latitude, altitude, pic_url, face_url, create_by, create_time, update_by, update_time, view_time from ard_alarm_super_brain </sql> <select id="selectArdAlarmSuperBrainList" parameterType="ArdAlarmSuperBrain" resultMap="ArdAlarmSuperBrainResult"> <include refid="selectArdAlarmSuperBrainVo"/> <where> <if test="alarmName != null and alarmName != ''">and alarm_name like '%'||#{alarmName}||'%'</if> <if test="alarmType != null and alarmType != ''">and alarm_type = #{alarmType}</if> <if test="alarmTime != null ">and alarm_time = #{alarmTime}</if> <if test="deviceId != null and deviceId != ''">and device_id = #{deviceId}</if> <if test="deviceName != null and deviceName != ''">and device_name like '%'||#{deviceName}||'%'</if> <if test="chanNo != null ">and chan_no = #{chanNo}</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> <if test="picUrl != null and picUrl != ''">and pic_url = #{picUrl}</if> <if test="faceUrl != null and faceUrl != ''">and face_url = #{faceUrl}</if> <if test="viewTime != null ">and view_time = #{viewTime}</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="selectArdAlarmSuperBrainById" parameterType="String" resultMap="ArdAlarmSuperBrainResult"> <include refid="selectArdAlarmSuperBrainVo"/> where id = #{id} </select> <insert id="insertArdAlarmSuperBrain" parameterType="ArdAlarmSuperBrain"> insert into ard_alarm_super_brain <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">id,</if> <if test="alarmName != null">alarm_name,</if> <if test="alarmType != null">alarm_type,</if> <if test="alarmTime != null">alarm_time,</if> <if test="deviceId != null">device_id,</if> <if test="deviceName != null">device_name,</if> <if test="chanNo != null">chan_no,</if> <if test="longitude != null">longitude,</if> <if test="latitude != null">latitude,</if> <if test="altitude != null">altitude,</if> <if test="picUrl != null">pic_url,</if> <if test="faceUrl != null">face_url,</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> <if test="viewTime != null">view_time,</if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null">#{id},</if> <if test="alarmName != null">#{alarmName},</if> <if test="alarmType != null">#{alarmType},</if> <if test="alarmTime != null">#{alarmTime},</if> <if test="deviceId != null">#{deviceId},</if> <if test="deviceName != null">#{deviceName},</if> <if test="chanNo != null">#{chanNo},</if> <if test="longitude != null">#{longitude},</if> <if test="latitude != null">#{latitude},</if> <if test="altitude != null">#{altitude},</if> <if test="picUrl != null">#{picUrl},</if> <if test="faceUrl != null">#{faceUrl},</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> <if test="viewTime != null">#{viewTime},</if> </trim> </insert> <update id="updateArdAlarmSuperBrain" parameterType="ArdAlarmSuperBrain"> update ard_alarm_super_brain <trim prefix="SET" suffixOverrides=","> <if test="alarmName != null">alarm_name = #{alarmName},</if> <if test="alarmType != null">alarm_type = #{alarmType},</if> <if test="alarmTime != null">alarm_time = #{alarmTime},</if> <if test="deviceId != null">device_id = #{deviceId},</if> <if test="deviceName != null">device_name = #{deviceName},</if> <if test="chanNo != null">chan_no = #{chanNo},</if> <if test="longitude != null">longitude = #{longitude},</if> <if test="latitude != null">latitude = #{latitude},</if> <if test="altitude != null">altitude = #{altitude},</if> <if test="picUrl != null">pic_url = #{picUrl},</if> <if test="faceUrl != null">face_url = #{faceUrl},</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> <if test="viewTime != null">view_time = #{viewTime},</if> </trim> where id = #{id} </update> <delete id="deleteArdAlarmSuperBrainById" parameterType="String"> delete from ard_alarm_super_brain where id = #{id} </delete> <delete id="deleteArdAlarmSuperBrainByIds" parameterType="String"> delete from ard_alarm_super_brain where id in <foreach item="id" collection="array" open="(" separator="," close=")"> #{id} </foreach> </delete> <select id="selectCountByAlarmTime" resultType="Integer"> SELECT COUNT(DISTINCT aasb.id) FROM ard_alarm_super_brain aasb WHERE aasb.alarm_time >= CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE and aasb.view_time is null </select> <select id="selectListAllByCommand" resultMap="ArdAlarmSuperBrainResult"> SELECT T.* FROM ( SELECT aasb.ID, aasb.alarm_name, aasb.alarm_type, aasb.alarm_time, aasb.longitude, aasb.latitude, aasb.altitude, ROW_NUMBER() OVER ( PARTITION BY aasb.alarm_type ORDER BY aasb.alarm_time DESC ) AS rn, COUNT(CASE WHEN aasb.view_time IS NULL THEN 1 END) OVER ( PARTITION BY aasb.alarm_type ) AS COUNT, COUNT ( aasb.alarm_time ) OVER ( PARTITION BY aasb.alarm_type ) AS total FROM ard_alarm_super_brain aasb WHERE aasb.alarm_time >= ( CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE ) ORDER BY aasb.alarm_time DESC ) T WHERE T.rn = 1 </select> <update id="updateViewTimeByAlarmType" parameterType="String"> update ard_alarm_super_brain set view_time=#{viewTime} where alarm_type = #{alarmType} and alarm_time <= #{alarmTime} and view_time is null </update> </mapper> ruoyi-admin/src/main/resources/i18n/messages.properties
@@ -212,6 +212,7 @@ dic.data.repeat.period.day=\u65E5 dic.data.repeat.period.hour=\u5C0F\u65F6 dic.data.repeat.period.min=\u5206\u949F dic.data.alarm.type.ai=AI\u62A5\u8B66 dic.data.alarm.type.elec.steal=\u76D7\u7535\u62A5\u8B66 dic.data.alarm.type.radar=\u96F7\u8FBE\u62A5\u8B66 dic.data.alarm.type.camera=\u901A\u7528\u5149\u7535 ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
@@ -182,6 +182,7 @@ dic.data.well.type.ketou=ketou dic.data.work.state.normal=normal dic.data.work.state.exception=exception dic.data.alarm.type.ai=AIAlarm dic.data.equip.type.alarm=alarmHost dic.data.equip.type.GPS=GPS dic.data.equip.type.gycgq=gycgq ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
@@ -220,6 +220,7 @@ dic.data.repeat.period.day=\u65E5 dic.data.repeat.period.hour=\u5C0F\u65F6 dic.data.repeat.period.min=\u5206\u949F dic.data.alarm.type.ai=AI\u62A5\u8B66 dic.data.alarm.type.elec.steal=\u76D7\u7535\u62A5\u8B66 dic.data.alarm.type.radar=\u96F7\u8FBE\u62A5\u8B66 dic.data.alarm.type.camera=\u901A\u7528\u5149\u7535