This commit is contained in:
pengjie 2024-02-02 16:53:58 +08:00
parent 87ae69a0a5
commit 3a147cfd2e
8 changed files with 92 additions and 7 deletions

View File

@ -76,6 +76,7 @@ public class HardWareCallbackController {
@PostMapping(value = "/saveHardWareAlarm") @PostMapping(value = "/saveHardWareAlarm")
public Result<Object> saveHardWareAlarm(@RequestBody Map<String, Object> map) { public Result<Object> saveHardWareAlarm(@RequestBody Map<String, Object> map) {
String hardwareId = MapUtils.getString(map, "hardwareId"); String hardwareId = MapUtils.getString(map, "hardwareId");
String chnId = MapUtils.getString(map, "chn_index");
// 确认报警类型 // 确认报警类型
String type = MapUtils.getInteger(map, "type")+""; String type = MapUtils.getInteger(map, "type")+"";
QueryWrapper<Algorithm> queryWrapper = new QueryWrapper<>(); QueryWrapper<Algorithm> queryWrapper = new QueryWrapper<>();
@ -106,6 +107,7 @@ public class HardWareCallbackController {
deviceAlarm.setSn(device.getSn()); deviceAlarm.setSn(device.getSn());
deviceAlarm.setDeptId(device.getDeptId()); deviceAlarm.setDeptId(device.getDeptId());
deviceAlarm.setDeptGroup(device.getDeptGroup()); deviceAlarm.setDeptGroup(device.getDeptGroup());
deviceAlarm.setChannelNo(chnId);
deviceAlarmService.save(deviceAlarm); deviceAlarmService.save(deviceAlarm);
deviceAlarm.setTypeName(algorithmList.get(0).getTitle()); deviceAlarm.setTypeName(algorithmList.get(0).getTitle());
try { try {

View File

@ -3,14 +3,20 @@ package com.xmgl.recognition.modules.enterprise.controller;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; 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.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.xmgl.recognition.annotation.OperLog; import com.xmgl.recognition.annotation.OperLog;
import com.xmgl.recognition.jeecg.common.util.PageUtil; import com.xmgl.recognition.jeecg.common.util.PageUtil;
import com.xmgl.recognition.modules.admin.entity.Algorithm; 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.entity.SystemDictData;
import com.xmgl.recognition.modules.admin.service.IAlgorithmService; 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.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.Constant.CacheConstants;
import com.xmgl.recognition.redis.lock.RedisRepository; import com.xmgl.recognition.redis.lock.RedisRepository;
import com.xmgl.recognition.util.CommonUtil; 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.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
@ -68,6 +75,10 @@ import springfox.documentation.annotations.ApiIgnore;
@Slf4j @Slf4j
@Api(tags = "设备报警管理") @Api(tags = "设备报警管理")
public class DeviceAlarmController { public class DeviceAlarmController {
@Value("${monitor.alarm.flv}")
private String requestUrl;
@Autowired @Autowired
private IDeviceAlarmService deviceAlarmService; private IDeviceAlarmService deviceAlarmService;
@ -77,6 +88,12 @@ public class DeviceAlarmController {
@Autowired @Autowired
private RedisRepository redisRepository; private RedisRepository redisRepository;
@Autowired
private IDeviceService deviceService;
@Autowired
private IMonitorDevService monitorDevService;
/** /**
* 分页列表查询 * 分页列表查询
* *
@ -308,4 +325,35 @@ public class DeviceAlarmController {
result.setResult(resultList); result.setResult(resultList);
return result; 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<String> getFlv(@ApiIgnore @RequestBody Map<String, Object> map) {
Result<String> result = new Result<String>();
DeviceAlarm deviceAlarm = deviceAlarmService.getById(MapUtils.getString(map, "id"));
Device device = deviceService.getOne(Wrappers.<Device>lambdaQuery().eq(Device::getCode, deviceAlarm.getDeviceCode()));
MonitorDev monitorDev = monitorDevService.getOne(Wrappers.<MonitorDev>lambdaQuery().eq(MonitorDev::getDeviceId, device.getId())
.eq(MonitorDev::getChannelNo, deviceAlarm.getChannelNo()));
if (monitorDev != null && StringUtils.isNotBlank(monitorDev.getCode())) {
Map<String, Object> 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;
}
} }

View File

@ -1,5 +1,6 @@
package com.xmgl.recognition.modules.enterprise.controller; package com.xmgl.recognition.modules.enterprise.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.xmgl.recognition.annotation.OperLog; import com.xmgl.recognition.annotation.OperLog;
import com.xmgl.recognition.jeecg.common.util.PageUtil; import com.xmgl.recognition.jeecg.common.util.PageUtil;
import com.xmgl.recognition.modules.enterprise.dto.MonitorDevTreeDto; import com.xmgl.recognition.modules.enterprise.dto.MonitorDevTreeDto;
@ -118,6 +119,11 @@ public class MonitorDevController {
@ApiOperation(value = " 添加摄像机信息", notes = "添加摄像机信息", httpMethod = "POST") @ApiOperation(value = " 添加摄像机信息", notes = "添加摄像机信息", httpMethod = "POST")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<Object> add(@RequestBody MonitorDev monitorDev) { public Result<Object> add(@RequestBody MonitorDev monitorDev) {
List<MonitorDev> monitorDevList = monitorDevService.list(Wrappers.<MonitorDev>lambdaQuery().eq(MonitorDev::getDeviceId, monitorDev.getDeviceId())
.eq(MonitorDev::getChannelNo, monitorDev.getChannelNo()));
if (monitorDevList.size() > 0) {
return Result.error("设备下已存在该通道号,请重新输入!");
}
monitorDev.setSn(SecurityUtil.getUser().getSn()); monitorDev.setSn(SecurityUtil.getUser().getSn());
monitorDevService.save(monitorDev); monitorDevService.save(monitorDev);
return Result.success("添加成功!"); return Result.success("添加成功!");
@ -137,6 +143,11 @@ public class MonitorDevController {
MonitorDev monitorDevEntity = monitorDevService.getById(monitorDev.getMonitorId()); MonitorDev monitorDevEntity = monitorDevService.getById(monitorDev.getMonitorId());
if (monitorDevEntity == null) { if (monitorDevEntity == null) {
result.error500("未找到对应实体"); result.error500("未找到对应实体");
} else {
List<MonitorDev> monitorDevList = monitorDevService.list(Wrappers.<MonitorDev>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 { } else {
boolean ok = monitorDevService.updateById(monitorDev); boolean ok = monitorDevService.updateById(monitorDev);
if (ok) { if (ok) {
@ -145,7 +156,7 @@ public class MonitorDevController {
result.success("操作失败!"); result.success("操作失败!");
} }
} }
}
return result; return result;
} }

View File

@ -39,6 +39,12 @@ public class DeviceAlarm implements Serializable {
@Excel(name = "设备CODE", width = 15) @Excel(name = "设备CODE", width = 15)
@ApiModelProperty(value = "设备CODE") @ApiModelProperty(value = "设备CODE")
private String deviceCode; private String deviceCode;
/**
* 摄像机通道号
*/
@Excel(name = "摄像机通道号", width = 15)
@ApiModelProperty(value = "摄像机通道号")
private String channelNo;
/** /**
* 隐患类型 * 隐患类型
*/ */
@ -109,6 +115,13 @@ public class DeviceAlarm implements Serializable {
@ApiModelProperty(value = "设备名称") @ApiModelProperty(value = "设备名称")
private String deviceName; private String deviceName;
/**
* 摄像机名称
*/
@TableField(exist = false)
@ApiModelProperty(value = "摄像机名称")
private String monitorName;
/** /**
* 类型名称 * 类型名称
*/ */

View File

@ -85,4 +85,10 @@ public class MonitorDev implements Serializable {
@Excel(name = "AI盒子设备ID", width = 15) @Excel(name = "AI盒子设备ID", width = 15)
@ApiModelProperty(value = "AI盒子设备ID") @ApiModelProperty(value = "AI盒子设备ID")
private Long deviceId; private Long deviceId;
/**
* 摄像机通道号
*/
@Excel(name = "摄像机通道号", width = 15)
@ApiModelProperty(value = "摄像机通道号")
private String channelNo;
} }

View File

@ -3,7 +3,8 @@
<mapper namespace="com.xmgl.recognition.modules.enterprise.mapper.DeviceAlarmMapper"> <mapper namespace="com.xmgl.recognition.modules.enterprise.mapper.DeviceAlarmMapper">
<select id="pageList" resultType="com.xmgl.recognition.modules.enterprise.entity.DeviceAlarm"> <select id="pageList" resultType="com.xmgl.recognition.modules.enterprise.entity.DeviceAlarm">
SELECT a.*, d.code as deviceName FROM device_alarm a LEFT JOIN device d ON a.device_code = d.`code` SELECT a.*, d.code as deviceName, m.name as monitorName FROM device_alarm a LEFT JOIN device d ON a.device_code = d.`code`
LEFT JOIN monitor_dev m ON a.channel_no = m.channel_no and d.id = m.device_id
${ew.customSqlSegment} ${ew.customSqlSegment}
</select> </select>

View File

@ -86,6 +86,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/filetransfer/downloadfile").permitAll() .antMatchers("/filetransfer/downloadfile").permitAll()
.antMatchers("/filetransfer/batchDownloadFile").permitAll() .antMatchers("/filetransfer/batchDownloadFile").permitAll()
.antMatchers("/filetransfer/preview").permitAll() .antMatchers("/filetransfer/preview").permitAll()
.antMatchers("/ent/deviceAlarm/getFlv").permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").anonymous() .antMatchers(HttpMethod.OPTIONS, "/**").anonymous()
.anyRequest().authenticated() // 剩下所有的验证都需要验证 .anyRequest().authenticated() // 剩下所有的验证都需要验证
.and() .and()

View File

@ -16,3 +16,6 @@ spring.datasource.hikari.validation-timeout=3000
#(wait_timeout-30)*1000 #(wait_timeout-30)*1000
spring.datasource.hikari.connection-timeout=50000 spring.datasource.hikari.connection-timeout=50000
spring.datasource.hikari.connection-test-query=SELECT 1 spring.datasource.hikari.connection-test-query=SELECT 1
monitor.alarm.flv=http://zosau.com:9090/get_webrtc