diff --git a/src/main/java/com/xmgl/recognition/modules/admin/controller/HardWareCallbackController.java b/src/main/java/com/xmgl/recognition/modules/admin/controller/HardWareCallbackController.java index a211dce..9b63e4a 100644 --- a/src/main/java/com/xmgl/recognition/modules/admin/controller/HardWareCallbackController.java +++ b/src/main/java/com/xmgl/recognition/modules/admin/controller/HardWareCallbackController.java @@ -76,6 +76,7 @@ public class HardWareCallbackController { @PostMapping(value = "/saveHardWareAlarm") public Result saveHardWareAlarm(@RequestBody Map map) { String hardwareId = MapUtils.getString(map, "hardwareId"); + String chnId = MapUtils.getString(map, "chn_index"); // 确认报警类型 String type = MapUtils.getInteger(map, "type")+""; QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -106,6 +107,7 @@ public class HardWareCallbackController { deviceAlarm.setSn(device.getSn()); deviceAlarm.setDeptId(device.getDeptId()); deviceAlarm.setDeptGroup(device.getDeptGroup()); + deviceAlarm.setChannelNo(chnId); deviceAlarmService.save(deviceAlarm); deviceAlarm.setTypeName(algorithmList.get(0).getTitle()); try { diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/controller/DeviceAlarmController.java b/src/main/java/com/xmgl/recognition/modules/enterprise/controller/DeviceAlarmController.java index 066be4f..d06dc97 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/controller/DeviceAlarmController.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/controller/DeviceAlarmController.java @@ -3,14 +3,20 @@ package com.xmgl.recognition.modules.enterprise.controller; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.xmgl.recognition.annotation.OperLog; import com.xmgl.recognition.jeecg.common.util.PageUtil; import com.xmgl.recognition.modules.admin.entity.Algorithm; +import com.xmgl.recognition.modules.admin.entity.Device; import com.xmgl.recognition.modules.admin.entity.SystemDictData; import com.xmgl.recognition.modules.admin.service.IAlgorithmService; +import com.xmgl.recognition.modules.admin.service.IDeviceService; import com.xmgl.recognition.modules.admin.service.ISystemDictDataService; +import com.xmgl.recognition.modules.enterprise.entity.MonitorDev; +import com.xmgl.recognition.modules.enterprise.service.IMonitorDevService; import com.xmgl.recognition.redis.Constant.CacheConstants; import com.xmgl.recognition.redis.lock.RedisRepository; import com.xmgl.recognition.util.CommonUtil; @@ -48,6 +54,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; @@ -68,6 +75,10 @@ import springfox.documentation.annotations.ApiIgnore; @Slf4j @Api(tags = "设备报警管理") public class DeviceAlarmController { + + @Value("${monitor.alarm.flv}") + private String requestUrl; + @Autowired private IDeviceAlarmService deviceAlarmService; @@ -77,6 +88,12 @@ public class DeviceAlarmController { @Autowired private RedisRepository redisRepository; + @Autowired + private IDeviceService deviceService; + + @Autowired + private IMonitorDevService monitorDevService; + /** * 分页列表查询 * @@ -308,4 +325,35 @@ public class DeviceAlarmController { result.setResult(resultList); return result; } + + /** + * 查看预警影像 + * @return + */ + @OperLog(operModul = "设备报警管理", operType = "查询", operDesc = "查看预警影像") + @ApiOperation(value = "查看预警影像", notes = "查看预警影像", httpMethod = "POST") + @ApiImplicitParam(name = "id", value = "设备报警ID", paramType = "query", required = true, dataType = "Integer") + @PostMapping(value = "/getFlv") + public Result getFlv(@ApiIgnore @RequestBody Map map) { + Result result = new Result(); + DeviceAlarm deviceAlarm = deviceAlarmService.getById(MapUtils.getString(map, "id")); + Device device = deviceService.getOne(Wrappers.lambdaQuery().eq(Device::getCode, deviceAlarm.getDeviceCode())); + MonitorDev monitorDev = monitorDevService.getOne(Wrappers.lambdaQuery().eq(MonitorDev::getDeviceId, device.getId()) + .eq(MonitorDev::getChannelNo, deviceAlarm.getChannelNo())); + if (monitorDev != null && StringUtils.isNotBlank(monitorDev.getCode())) { + Map requestBody = new HashMap<>(); + requestBody.put("devid", monitorDev.getCode()); + requestBody.put("start_time", DateUtil.offsetSecond(deviceAlarm.getReportTime(), -30)); + requestBody.put("end_time", DateUtil.offsetSecond(deviceAlarm.getReportTime(), 30)); +// requestBody.put("devid", "100"); +// requestBody.put("start_time", "2024-01-31 08:30:00"); +// requestBody.put("end_time", "2024-01-31 08:35:00"); + String post = HttpUtil.post(requestUrl, JSONObject.toJSONString(requestBody)); + if (StringUtils.isNotBlank(post)) { + result.setResult(JSONObject.parseObject(post).getString("webrtc")); + } + result.setSuccess(true); + } + return result; + } } diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/controller/MonitorDevController.java b/src/main/java/com/xmgl/recognition/modules/enterprise/controller/MonitorDevController.java index 5b3d6fe..ae2a87b 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/controller/MonitorDevController.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/controller/MonitorDevController.java @@ -1,5 +1,6 @@ package com.xmgl.recognition.modules.enterprise.controller; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.xmgl.recognition.annotation.OperLog; import com.xmgl.recognition.jeecg.common.util.PageUtil; import com.xmgl.recognition.modules.enterprise.dto.MonitorDevTreeDto; @@ -118,6 +119,11 @@ public class MonitorDevController { @ApiOperation(value = " 添加摄像机信息", notes = "添加摄像机信息", httpMethod = "POST") @PostMapping(value = "/add") public Result add(@RequestBody MonitorDev monitorDev) { + List monitorDevList = monitorDevService.list(Wrappers.lambdaQuery().eq(MonitorDev::getDeviceId, monitorDev.getDeviceId()) + .eq(MonitorDev::getChannelNo, monitorDev.getChannelNo())); + if (monitorDevList.size() > 0) { + return Result.error("设备下已存在该通道号,请重新输入!"); + } monitorDev.setSn(SecurityUtil.getUser().getSn()); monitorDevService.save(monitorDev); return Result.success("添加成功!"); @@ -138,14 +144,19 @@ public class MonitorDevController { if (monitorDevEntity == null) { result.error500("未找到对应实体"); } else { - boolean ok = monitorDevService.updateById(monitorDev); - if (ok) { - result.success("修改成功!"); + List monitorDevList = monitorDevService.list(Wrappers.lambdaQuery().eq(MonitorDev::getDeviceId, monitorDev.getDeviceId()) + .eq(MonitorDev::getChannelNo, monitorDev.getChannelNo())); + if (monitorDevList.size() > 0 && !monitorDevList.get(0).getMonitorId().equals(monitorDev.getMonitorId())) { + result.error500("设备下已存在该通道号,请重新输入!"); } else { - result.success("操作失败!"); + boolean ok = monitorDevService.updateById(monitorDev); + if (ok) { + result.success("修改成功!"); + } else { + result.success("操作失败!"); + } } } - return result; } diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/entity/DeviceAlarm.java b/src/main/java/com/xmgl/recognition/modules/enterprise/entity/DeviceAlarm.java index d787978..fcdfb20 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/entity/DeviceAlarm.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/entity/DeviceAlarm.java @@ -39,6 +39,12 @@ public class DeviceAlarm implements Serializable { @Excel(name = "设备CODE", width = 15) @ApiModelProperty(value = "设备CODE") private String deviceCode; + /** + * 摄像机通道号 + */ + @Excel(name = "摄像机通道号", width = 15) + @ApiModelProperty(value = "摄像机通道号") + private String channelNo; /** * 隐患类型 */ @@ -109,6 +115,13 @@ public class DeviceAlarm implements Serializable { @ApiModelProperty(value = "设备名称") private String deviceName; + /** + * 摄像机名称 + */ + @TableField(exist = false) + @ApiModelProperty(value = "摄像机名称") + private String monitorName; + /** * 类型名称 */ diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/entity/MonitorDev.java b/src/main/java/com/xmgl/recognition/modules/enterprise/entity/MonitorDev.java index de18fcf..c8d9a88 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/entity/MonitorDev.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/entity/MonitorDev.java @@ -85,4 +85,10 @@ public class MonitorDev implements Serializable { @Excel(name = "AI盒子设备ID", width = 15) @ApiModelProperty(value = "AI盒子设备ID") private Long deviceId; + /** + * 摄像机通道号 + */ + @Excel(name = "摄像机通道号", width = 15) + @ApiModelProperty(value = "摄像机通道号") + private String channelNo; } diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/DeviceAlarmMapper.xml b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/DeviceAlarmMapper.xml index a01c61b..c6e85fc 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/DeviceAlarmMapper.xml +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/DeviceAlarmMapper.xml @@ -3,7 +3,8 @@ diff --git a/src/main/java/com/xmgl/recognition/security/WebSecurityConfig.java b/src/main/java/com/xmgl/recognition/security/WebSecurityConfig.java index 7793c06..bb73320 100644 --- a/src/main/java/com/xmgl/recognition/security/WebSecurityConfig.java +++ b/src/main/java/com/xmgl/recognition/security/WebSecurityConfig.java @@ -86,6 +86,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/filetransfer/downloadfile").permitAll() .antMatchers("/filetransfer/batchDownloadFile").permitAll() .antMatchers("/filetransfer/preview").permitAll() + .antMatchers("/ent/deviceAlarm/getFlv").permitAll() .antMatchers(HttpMethod.OPTIONS, "/**").anonymous() .anyRequest().authenticated() // 剩下所有的验证都需要验证 .and() diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 99d1fab..522ee62 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -15,4 +15,7 @@ spring.datasource.hikari.max-lifetime=1800000 spring.datasource.hikari.validation-timeout=3000 #(wait_timeout-30)*1000 spring.datasource.hikari.connection-timeout=50000 -spring.datasource.hikari.connection-test-query=SELECT 1 \ No newline at end of file +spring.datasource.hikari.connection-test-query=SELECT 1 + + +monitor.alarm.flv=http://zosau.com:9090/get_webrtc \ No newline at end of file