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")
public Result<Object> saveHardWareAlarm(@RequestBody Map<String, Object> map) {
String hardwareId = MapUtils.getString(map, "hardwareId");
String chnId = MapUtils.getString(map, "chn_index");
// 确认报警类型
String type = MapUtils.getInteger(map, "type")+"";
QueryWrapper<Algorithm> 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 {

View File

@ -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<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;
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<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());
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<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 {
result.success("操作失败!");
boolean ok = monitorDevService.updateById(monitorDev);
if (ok) {
result.success("修改成功!");
} else {
result.success("操作失败!");
}
}
}
return result;
}

View File

@ -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;
/**
* 类型名称
*/

View File

@ -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;
}

View File

@ -3,7 +3,8 @@
<mapper namespace="com.xmgl.recognition.modules.enterprise.mapper.DeviceAlarmMapper">
<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}
</select>

View File

@ -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()

View File

@ -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
spring.datasource.hikari.connection-test-query=SELECT 1
monitor.alarm.flv=http://zosau.com:9090/get_webrtc