Browse Source

拉取报警消息,摄像头抓图用来比对图片相似度

添加网络录像机设备
master
yangzongjia 2 years ago
parent
commit
18d31669c0
  1. 2
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/CallPolice.java
  2. 3
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/Device.java
  3. 22
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/CallRest.java
  4. 1
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceRest.java
  5. 4
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceService.java
  6. 20
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageService.java
  7. 7
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/messageInfo/YMessageInfoService.java
  8. 1
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncService.java
  9. 54
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/util/ImageDownloadUtil.java

2
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/CallPolice.java

@ -26,7 +26,7 @@ public class CallPolice extends EntityWithId {
private String state;
@ApiModelProperty("是否删除")
private String isDelte;
private String isDelete;
@ApiModelProperty("修改时间")
private String modifyTime;

3
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/Device.java

@ -54,7 +54,4 @@ public class Device extends EntityWithId {
@ApiModelProperty("位置")
private String position;
@ApiModelProperty("序列号")
private String deviceSerial;
}

22
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/CallRest.java

@ -3,6 +3,7 @@ package com.yxt.supervise.monitor.biz.callpolice;
import com.alibaba.fastjson.JSONObject;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.monitor.biz.demobaseentity.DemoBaseentityService;
import com.yxt.supervise.monitor.biz.scheduled.SyncService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -34,7 +35,7 @@ public class CallRest {
param.put("client_id", "e8e655dfcb154be6962f270fe375edc1"); // 客户端ID String
param.put("client_secret", "3ca20239398c4b86b27c6a080d8345e1"); //访问密钥 String
param.put("grant_type", "client_credentials"); //认证模式 String 目前仅支持client_credentials
String result = HttpUtils.sendPostMap(url, param,"");
String result = HttpUtils.sendPostMap(url, param, "");
return result;
}
@ -49,7 +50,7 @@ public class CallRest {
@ApiOperation("子系统布防")
@GetMapping("/getCallArm")
public String getCallArm() {
public String getCallArm() {
ResultBean rb = ResultBean.fireFail();
String url = "https://api2.hik-cloud.com/api/v1/device/isapi/alarmHost/subSystem/arm";
Map<String, Object> param = new HashMap<>();
@ -63,7 +64,7 @@ public class CallRest {
@ApiOperation("子系统撤防")
@GetMapping("/getCallDisArm")
public String getCallDisArm(){
public String getCallDisArm() {
ResultBean rb = ResultBean.fireFail();
String url = "https://api2.hik-cloud.com/api/v1/device/isapi/alarmHost/subSystem/disarm";
Map<String, Object> param = new HashMap<>();
@ -108,7 +109,7 @@ public class CallRest {
@ApiOperation("提交消息偏移量")
@GetMapping("/doCallMessageOffsets")
public String doMessageOffsets(String consumerId){
public String doMessageOffsets(String consumerId) {
/**
* 1.该接口用于创建消费者ID最多同时存在五个消费者ID
*
@ -140,7 +141,7 @@ public class CallRest {
param.put("deviceSerial", consumerId); // 设备序列号 string
param.put("groupNo", consumerId); // 组编号 string
param.put("validateCode", consumerId); // 验证码 string
String result = HttpUtils.sendPostMap(url,param, "35ad3e80-1de4-4477-827e-0473320cf644");
String result = HttpUtils.sendPostMap(url, param, "35ad3e80-1de4-4477-827e-0473320cf644");
return result;
}
@ -151,8 +152,17 @@ public class CallRest {
Map<String, Object> param = new HashMap<>();
param.put("deviceName", consumerId); // 设备名称 string
param.put("deviceSerial", consumerId); // 设备序列号 string
String result = HttpUtils.sendPostMap(url,param, "35ad3e80-1de4-4477-827e-0473320cf644");
String result = HttpUtils.sendPostMap(url, param, "35ad3e80-1de4-4477-827e-0473320cf644");
return result;
}
@ApiOperation("临时测试")
@GetMapping("/callTempFunc")
public void callTempFunc() throws NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException {
// String url = "https://api2.hik-cloud.com/api/v1/open/basic/devices/list?groupNo=A1181&pageNo=1&pageSize=50";
String url = "https://api2.hik-cloud.com/api/v1/ezviz/devices/queryDeviceStatus?deviceSerial=Q16362484";
String result = HttpUtils.sendGet(url, SyncService.haiKangToken);
System.out.println(result);
}
}

1
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceRest.java

@ -64,4 +64,5 @@ public class YDeviceRest {
public ResultBean removeDeviceByIds(String ids) {
return yDeviceService.removeDeviceByIds(ids);
}
}

4
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceService.java

@ -15,6 +15,10 @@ import org.springframework.stereotype.Service;
import springfox.documentation.spring.web.json.Json;
import javax.annotation.Resource;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;

20
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageService.java

@ -1,5 +1,6 @@
package com.yxt.supervise.monitor.biz.deviceImage;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -12,9 +13,11 @@ import com.yxt.supervise.monitor.api.entity.DeviceImage;
import com.yxt.supervise.monitor.api.vo.PageVo;
import com.yxt.supervise.monitor.biz.scheduled.SyncService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import com.yxt.supervise.monitor.biz.util.ImageDownloadUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@ -50,13 +53,24 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
public void getDeviceImageBefore() {
String url = "https://api2.hik-cloud.com/api/v1/open/basic/channels/actions/capture";
String channelNo = "4";
String picName = "";
Map<String, Object> param = new HashMap<>();
param.put("deviceSerial", "Q16362484"); // 设备序列号 string
param.put("channelNo", "1"); // 组编号 string
param.put("deviceSerial", "L20560109"); // 设备序列号 string
param.put("channelNo", channelNo); // 组编号 string
String paramJson = JSONObject.toJSONString(param);
String result = HttpUtils.sendPostJson(url, paramJson, SyncService.haiKangToken);
JSONObject jsonObject = JSONObject.parseObject(result);
System.out.println(jsonObject);
JSONObject dataJson = (JSONObject) jsonObject.get("data");
String picUrl = dataJson.get("picUrl").toString();
String day = DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss");
picName = day + channelNo + ".png";
try {
ImageDownloadUtil.download(picUrl,SyncService.imagePath,picName);
} catch (IOException e) {
e.printStackTrace();
}
}
}

7
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/messageInfo/YMessageInfoService.java

@ -35,6 +35,13 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
Map<String, Object> param = new HashMap<>();
param.put("consumerId", SyncService.haiKangMessageConsumer); // 消费者id string
String result = HttpUtils.sendPostMap(url, param, SyncService.haiKangToken);
//提交消息偏移量
String offsetsUrl = "https://api2.hik-cloud.com/api/v1/mq/consumer/offsets";
Map<String, Object> offsetsParam = new HashMap<>();
offsetsParam.put("consumerId", SyncService.haiKangMessageConsumer); // 消费者id string
HttpUtils.sendPostMap(offsetsUrl, offsetsParam, SyncService.haiKangToken);
JSONObject jsonObject = JSONObject.parseObject(result);
if ("200".equals(jsonObject.get("code").toString())) {
JSONArray jsonArray = (JSONArray) jsonObject.get("data");

1
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncService.java

@ -35,6 +35,7 @@ public class SyncService {
YMessageInfoService yMessageInfoService;
public static String haiKangToken = "";
public static final String imagePath = "/root/supervise/images";
public static String haiKangMessageConsumer = "";
@PostConstruct

54
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/util/ImageDownloadUtil.java

@ -0,0 +1,54 @@
package com.yxt.supervise.monitor.biz.util;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
/**
* @author: Haiming Yu
* @createDate:2022/8/16
* @description:
*/
public class ImageDownloadUtil {
/**
* 文件下载到指定路径
*
* @param urlString 链接
* @param savePath 保存路径
* @param filename 文件名
* @throws Exception
*/
public static void download(String urlString, String savePath, String filename) throws IOException {
// 构造URL
URL url = new URL(urlString);
// 打开连接
URLConnection con = url.openConnection();
//设置请求超时为20s
con.setConnectTimeout(20 * 1000);
//文件路径不存在 则创建
File sf = new File(savePath);
if (!sf.exists()) {
sf.mkdirs();
}
//jdk 1.7 新特性自动关闭
try (InputStream in = con.getInputStream();
OutputStream out = new FileOutputStream(sf.getPath() + "\\" + filename)) {
//创建缓冲区
byte[] buff = new byte[1024];
int n;
// 开始读取
while ((n = in.read(buff)) >= 0) {
out.write(buff, 0, n);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
download("https://fastdfs-gateway.ys7.com/9cc5/1/capture/003jH5cfuOzAEjMmO0pESFUWhrXTwts.jpg?Expires=1686119490&OSSAccessKeyId=LTAIzI38nEHqg64n&Signature=x3IakXKnd5W1IrAdFAT7y5FCWyE%3D",
"D:\\resources\\download",
"sample.png");
}
}
Loading…
Cancel
Save