Browse Source

电子围栏对接数据库 布防报警

定时获取离线设备 添加报警表
master
yangzongjia 2 years ago
parent
commit
368f388748
  1. 6
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/Device.java
  2. 13
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/CallRest.java
  3. 37
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceRest.java
  4. 2
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageService.java
  5. 50
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/messageInfo/YMessageInfoService.java
  6. 8
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncDetection.java
  7. 51
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncService.java
  8. 2
      yxt-supervise-monitor-biz/src/main/resources/application-test.yml

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

@ -80,6 +80,12 @@ public class Device extends EntityWithId {
@ApiModelProperty("仓库ID")
private Integer ckId;
@ApiModelProperty("子系统ID 电子围栏")
private Integer sysId;
@ApiModelProperty("报警主机ID")
private Integer bjzjId;
@ApiModelProperty("维修状态")
private String maintenance;

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

@ -44,6 +44,9 @@ public class CallRest {
public String getCallSonList() throws NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException {
// deviceSerial 设备序列号 String
String url = "https://api2.hik-cloud.com/api/v1/device/isapi/alarmHost/subSystems?deviceSerial=Q16362484";
// 布撤防状态
// String url = "https://api2.hik-cloud.com/api/v1/ezviz/devices/queryDeviceDefenceStatus?deviceSerial=Q16362484";
String result = HttpUtils.sendGet(url, "35ad3e80-1de4-4477-827e-0473320cf644");
return result;
}
@ -52,13 +55,18 @@ public class CallRest {
@GetMapping("/getCallArm")
public String getCallArm() {
ResultBean rb = ResultBean.fireFail();
// String url = "https://api2.hik-cloud.com/api/v1/ezviz/devices/actions/setDefence/deviceSerial?deviceSerial=Q16362484&isDefence=1";
String url = "https://api2.hik-cloud.com/api/v1/device/isapi/alarmHost/subSystem/arm";
Map<String, Object> param = new HashMap<>();
// param.put("deviceSerial", "Q16362484"); //设备序列号 string
// param.put("isDefence", 1); //子系统id int
param.put("deviceSerial", "Q16362484"); //设备序列号 string
param.put("sysId", 2); //子系统id int
param.put("sysId", 1); //子系统id int
param.put("armType", "stay"); //布防类型,stay:在家布防;away:外出布防 string
String paramJson = JSONObject.toJSONString(param);
String result = HttpUtils.sendPostJson(url, paramJson, "35ad3e80-1de4-4477-827e-0473320cf644");
// String result = HttpUtils.sendPostMap(url, param, "35ad3e80-1de4-4477-827e-0473320cf644");
return result;
}
@ -128,7 +136,8 @@ public class CallRest {
@ApiOperation("获取所有防区状态")
@GetMapping("/getCallZoneStatusList")
public String getCallZoneStatusList(String consumerId) throws NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException {
String url = "https://api2.hik-cloud.com/api/v1/device/isapi/alarmHost/zoneStatus/list?deviceSerial=Q16362484";
// String url = "https://api2.hik-cloud.com/api/v1/device/isapi/alarmHost/zoneStatus/list?deviceSerial=Q16362484";
String url = "https://api2.hik-cloud.com/api/v1/ezviz/devices/queryDeviceStatus?deviceSerial=Q16362484";
String result = HttpUtils.sendGet(url, "35ad3e80-1de4-4477-827e-0473320cf644");
return result;
}

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

@ -1,13 +1,18 @@
package com.yxt.supervise.monitor.biz.device;
import com.alibaba.fastjson.JSONObject;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.monitor.api.entity.Device;
import com.yxt.supervise.monitor.api.vo.PageVo;
import com.yxt.supervise.monitor.biz.scheduled.SyncService;
import com.yxt.supervise.monitor.biz.scheduled.SyncUpdater;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@Api(tags = "设备控制器")
@ -86,6 +91,38 @@ public class YDeviceRest {
return rb;
}
@ApiOperation("子系统布防")
@GetMapping("/sysArm")
public ResultBean sysArm(String id) {
Device device = yDeviceService.getById(id);
Device bjzj = yDeviceService.getById(device.getBjzjId());
ResultBean rb = ResultBean.fireSuccess();
String url = "https://api2.hik-cloud.com/api/v1/device/isapi/alarmHost/subSystem/arm";
Map<String, Object> param = new HashMap<>();
param.put("deviceSerial", bjzj.getSerialNumber()); //设备序列号 string
param.put("sysId", device.getSysId()); //子系统id int
param.put("armType", "stay"); //布防类型,stay:在家布防;away:外出布防 string
String paramJson = JSONObject.toJSONString(param);
String result = HttpUtils.sendPostJson(url, paramJson, SyncService.haiKangToken);
return rb.setData(result);
}
@ApiOperation("子系统撤防")
@GetMapping("/sysDisArm")
public ResultBean sysDisArm(String id) {
Device device = yDeviceService.getById(id);
Device bjzj = yDeviceService.getById(device.getBjzjId());
ResultBean rb = ResultBean.fireSuccess();
String url = "https://api2.hik-cloud.com/api/v1/device/isapi/alarmHost/subSystem/disarm";
Map<String, Object> param = new HashMap<>();
param.put("deviceSerial", bjzj.getSerialNumber()); // 设备序列号 string
param.put("sysId", device.getSysId()); // 子系统id int
String paramJson = JSONObject.toJSONString(param);
String result = HttpUtils.sendPostJson(url, paramJson, SyncService.haiKangToken);
return rb.setData(result);
}
@ApiOperation("删除设备")
@GetMapping("/removeDeviceByIds")
public ResultBean removeDeviceByIds(String ids) {

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

@ -109,8 +109,6 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
String convertImage = deviceImageExit.getImgAfter();
deviceImage.setImgBefore(convertImage);
deviceImage.setImgAfter(picName);
log.error(filePath + "/" + convertImage);
log.error(filePath + "/" + picName);
String similar = String.valueOf(ImageCompareUtil.compareImage(filePath + "/" + convertImage, filePath + "/" + picName));
String[] similarSplit = similar.split("\\.");
if (similarSplit.length > 0) {

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

@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yxt.supervise.monitor.api.entity.CallPolice;
import com.yxt.supervise.monitor.api.entity.Device;
@ -12,6 +13,7 @@ import com.yxt.supervise.monitor.api.entity.DeviceLog;
import com.yxt.supervise.monitor.api.entity.MessageInfo;
import com.yxt.supervise.monitor.api.vo.MessageVo;
import com.yxt.supervise.monitor.api.vo.PageVo;
import com.yxt.supervise.monitor.biz.callpolice.CallRest;
import com.yxt.supervise.monitor.biz.callpolice.YCallPoliceMapper;
import com.yxt.supervise.monitor.biz.device.YDeviceMapper;
import com.yxt.supervise.monitor.biz.device.YDeviceService;
@ -22,14 +24,14 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@Service
public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, MessageInfo> {
@Resource
YDeviceService yDeviceService;
@Resource
YCallPoliceMapper yCallPoliceMapper;
@ -147,4 +149,44 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
}
return athleteBOIPage;
}
public void getCallMessage() {
String url = "https://api2.hik-cloud.com/api/v1/open/basic/devices/list?groupNo=A1181&pageNo=1&pageSize=500";
String result = "";
try {
result = HttpUtils.sendGet(url, SyncService.haiKangToken);
} catch (Exception e) {
System.out.println(e);
}
JSONObject jsonObject = JSONObject.parseObject(result);
JSONObject dataJson = (JSONObject) jsonObject.get("data");
JSONArray jsonArray = (JSONArray) dataJson.get("rows");
String deviceSerial = "";
String deviceStatus = "";
IPage<Device> iPage = new Page<>();
List<CallPolice> list = new ArrayList<>();
for (Object obj : jsonArray) {
JSONObject objJson = (JSONObject) obj;
deviceSerial = objJson.get("deviceSerial").toString();
deviceStatus = objJson.get("deviceStatus").toString();
if ("0".equals(deviceStatus)) { // 报警
CallPolice callPolice = new CallPolice();
callPolice.setCreateTime(new Date());
callPolice.setMsgType("handAdd");
callPolice.setContent("设备离线报警");
QueryWrapper<Device> wrapper = new QueryWrapper<>();
wrapper.eq("serialNumber", deviceSerial);
List<Device> listSmall = yDeviceService.list(wrapper);
if (listSmall.size() > 0) {
callPolice.setDeviceId(listSmall.get(0).getId().toString());
list.add(callPolice);
}
}
}
for (CallPolice cl : list) {
yCallPoliceMapper.insert(cl);
}
}
}

8
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncDetection.java

@ -43,10 +43,10 @@ public class SyncDetection implements SchedulingConfigurer {
new Runnable() {
@Override
public void run() {
// yDeviceImageService.getImage("1");
// yDeviceImageService.getImage("2");
// yDeviceImageService.getImage("3");
// yDeviceImageService.getImage("4");
yDeviceImageService.getImage("1");
yDeviceImageService.getImage("2");
yDeviceImageService.getImage("3");
yDeviceImageService.getImage("4");
}
},
new Trigger() {

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

@ -39,7 +39,7 @@ public class SyncService {
YTaskService yTaskService;
public static String haiKangToken = "";
// public static final String imagePath = "/root/supervise/images/";
// public static final String imagePath = "/root/supervise/images/";
// public static final String imagePath = "D:\\resources\\download\\";
public static String haiKangMessageConsumer = "";
@ -56,33 +56,34 @@ public class SyncService {
SyncService.haiKangToken = tokenObject.get("access_token").toString();
// // 获取消息消费者
// String consumerUrl = "https://api2.hik-cloud.com/api/v1/mq/consumer/group1";
// Map<String, Object> consumerParam = new HashMap<>();
// String consumerResult = HttpUtils.sendPostMap(consumerUrl, consumerParam, SyncService.haiKangToken);
// JSONObject consumerObject = JSONObject.parseObject(consumerResult);
// if ("200".equals(consumerObject.get("code").toString())) {
// JSONObject dataObject = (JSONObject) consumerObject.get("data");
// SyncService.haiKangMessageConsumer = dataObject.get("consumerId").toString();
// System.out.println("Get MessageConsumer Success");
// log.info("Get MessageConsumer Success");
// } else {
// System.out.println("Get MessageConsumer Error");
// log.error("Get MessageConsumer Error");
// }
// 获取消息消费者
String consumerUrl = "https://api2.hik-cloud.com/api/v1/mq/consumer/group1";
Map<String, Object> consumerParam = new HashMap<>();
String consumerResult = HttpUtils.sendPostMap(consumerUrl, consumerParam, SyncService.haiKangToken);
JSONObject consumerObject = JSONObject.parseObject(consumerResult);
if ("200".equals(consumerObject.get("code").toString())) {
JSONObject dataObject = (JSONObject) consumerObject.get("data");
SyncService.haiKangMessageConsumer = dataObject.get("consumerId").toString();
System.out.println("Get MessageConsumer Success");
log.info("Get MessageConsumer Success");
} else {
System.out.println("Get MessageConsumer Error");
log.error("Get MessageConsumer Error");
}
}
//
// @Async
// @Scheduled(fixedDelay = 1000 * 20 * 1) //20秒拉取一次报警信息
// public void pushEmail() {
// try {
// yMessageInfoService.saveMessageInfo();
// } catch (Exception ex) {
// ex.printStackTrace();
// }
// }
@Async
@Scheduled(fixedDelay = 1000 * 20 * 1) //20秒拉取一次报警信息
public void pushEmail() {
try {
yMessageInfoService.saveMessageInfo();
yMessageInfoService.getCallMessage();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

2
yxt-supervise-monitor-biz/src/main/resources/application-test.yml

@ -29,7 +29,7 @@ image:
prefix: http://122.14.222.186:7003/upload/
scheduleTime:
cron: 0/59 0/2 * * * ?
cron: 0 0 2 * * ?
# folder: D:\resources\download
folder: /root/huirong/monitor-java/imagesDownload

Loading…
Cancel
Save