Browse Source

添加设备报警

master
yangzongjia 2 years ago
parent
commit
644f685a42
  1. 71
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/PushPoliceInfo.java
  2. 28
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/vo/DeviceVo.java
  3. 25
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/vo/PushPoliceAllVo.java
  4. 23
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/vo/PushPoliceImageAllVo.java
  5. 42
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/vo/PushPoliceVo.java
  6. 0
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YCallPoliceMapper.xml
  7. 10
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageService.java
  8. 55
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/messageInfo/YMessageInfoService.java
  9. 0
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/messageInfo/YMessageinfoMapper.xml
  10. 15
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/pushPoliceInfo/PushPoliceInfoMapper.java
  11. 10
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/pushPoliceInfo/PushPoliceInfoMapper.xml
  12. 136
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/pushPoliceInfo/PushPoliceInfoService.java
  13. 10
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncDetection.java
  14. 85
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncService.java
  15. 2
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/wareHouse/YWareHouseMapper.java
  16. 8
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/wareHouse/YWareHouseMapper.xml
  17. 8
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/wareHouse/YWareHouseService.java
  18. 4
      yxt-supervise-monitor-biz/src/main/resources/application-test.yml

71
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/PushPoliceInfo.java

@ -0,0 +1,71 @@
package com.yxt.supervise.monitor.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.domain.EntityWithId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "有ID的实体", description = "有ID的实体")
@TableName("y_push_police_info")
public class PushPoliceInfo extends EntityWithId {
// `id`使用继承的
@ApiModelProperty("记录创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime = new Date(); // 记录创建时间
@ApiModelProperty("备注说明")
private String remarks; // 备注说明
@ApiModelProperty("信息状态")
private String state;
@ApiModelProperty("是否成功 (0成功 1失败)")
private String isSuccess;
@ApiModelProperty("是否删除")
private String isDelete;
@ApiModelProperty("修改时间")
private String modifyTime;
@ApiModelProperty("创建人")
private String createBySid;
@ApiModelProperty("更新人")
private String updateBySid;
@ApiModelProperty("设备ID")
private String deviceId;
@ApiModelProperty("信息类型")
private String msgType;
@ApiModelProperty("推送参数")
private String input;
@ApiModelProperty("返回参数")
private String output;
@ApiModelProperty("仓库ID")
private String ckId;
@ApiModelProperty("发送时间")
private String sendTime;
@ApiModelProperty("0设备状态报警1图片对比报警")
private Integer imageOrPolice;
@TableField(exist = false)
@ApiModelProperty("设备名称")
private String name;
@TableField(exist = false)
@ApiModelProperty("设备位置")
private String position;
}

28
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/vo/DeviceVo.java

@ -0,0 +1,28 @@
package com.yxt.supervise.monitor.api.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Exrickx
*/
@Data
public class DeviceVo {
private String name;
private String serialNumber;
private String status;
private String similarity;
private String startImage;
private String endImage;
private String startTime;
private String endTime;
}

25
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/vo/PushPoliceAllVo.java

@ -0,0 +1,25 @@
package com.yxt.supervise.monitor.api.vo;
import com.yxt.supervise.monitor.api.entity.Device;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author Exrickx
*/
@Data
public class PushPoliceAllVo {
private String sid;
private String name;
private List<DeviceVo> devices;
private Integer errorCount;
private String sendTime;
}

23
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/vo/PushPoliceImageAllVo.java

@ -0,0 +1,23 @@
package com.yxt.supervise.monitor.api.vo;
import com.yxt.supervise.monitor.api.entity.Device;
import com.yxt.supervise.monitor.api.entity.DeviceImage;
import lombok.Data;
import java.util.List;
/**
* @author Exrickx
*/
@Data
public class PushPoliceImageAllVo {
private String sid;
private String name;
private List<DeviceVo> deviceImages;
private String sendTime;
}

42
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/vo/PushPoliceVo.java

@ -0,0 +1,42 @@
package com.yxt.supervise.monitor.api.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Exrickx
*/
@Data
public class PushPoliceVo {
private String id;
private String sid;
private String remarks;
private String reportTarget;
private String code;
private String name;
private String content;
private String levelSid;
private String levelCode;
private String levelName;
private String typeSid;
private String typeCode;
private String typeName;
private String bigTypeName;
private String list;
}

0
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YWareHouseMapper.xml → yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YCallPoliceMapper.xml

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

@ -13,6 +13,7 @@ import com.yxt.supervise.monitor.api.entity.Device;
import com.yxt.supervise.monitor.api.entity.DeviceImage;
import com.yxt.supervise.monitor.api.entity.WareHouse;
import com.yxt.supervise.monitor.api.vo.PageVo;
import com.yxt.supervise.monitor.biz.pushPoliceInfo.PushPoliceInfoService;
import com.yxt.supervise.monitor.biz.scheduled.SyncService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import com.yxt.supervise.monitor.biz.util.ImageCompareUtil;
@ -44,6 +45,9 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
@Resource
private YDeviceImageMapper yDeviceImageMapper;
@Resource
private PushPoliceInfoService pushPoliceInfoService;
public IPage<DeviceImage> getDeviceImagePage(Map<String, String> searchVo, PageVo pageVo) {
IPage<DeviceImage> page = new Page<>();
page.setSize(pageVo.getSize());
@ -84,7 +88,7 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
}
public void getImage(Device device) {
public DeviceImage getImage(Device device) {
// 访问接口 把图片保存到本地
String url = "https://api2.hik-cloud.com/api/v1/open/basic/channels/actions/capture";
String picName = "";
@ -97,7 +101,7 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
JSONObject jsonObject = JSONObject.parseObject(result);
if (jsonObject.get("code").toString().equals("510305")) {
L.info("通道不存在:{}", jsonObject.get("code"));
return;
return null;
}
JSONObject dataJson = (JSONObject) jsonObject.get("data");
String picUrl = dataJson.get("picUrl").toString();
@ -124,6 +128,7 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
deviceImage.setCreateTime(new Date());
deviceImage.setChannelNo(device.getChannelNo());
deviceImage.setIsShow("1");
deviceImage.setName(device.getName());
deviceImage.setCkId(device.getCkId());
if (deviceImageList.size() > 0) {
@ -151,6 +156,7 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
deviceImage.setSimilarity("100%");
this.save(deviceImage);
}
return deviceImage;
}

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

@ -7,32 +7,44 @@ 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;
import com.yxt.supervise.monitor.api.entity.DeviceLog;
import com.yxt.supervise.monitor.api.entity.MessageInfo;
import com.yxt.supervise.monitor.api.entity.*;
import com.yxt.supervise.monitor.api.vo.DeviceVo;
import com.yxt.supervise.monitor.api.vo.MessageVo;
import com.yxt.supervise.monitor.api.vo.PageVo;
import com.yxt.supervise.monitor.api.vo.PushPoliceAllVo;
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;
import com.yxt.supervise.monitor.biz.devicelog.YDeviceLogMapper;
import com.yxt.supervise.monitor.biz.pushPoliceInfo.PushPoliceInfoService;
import com.yxt.supervise.monitor.biz.scheduled.SyncService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import com.yxt.supervise.monitor.biz.wareHouse.YWareHouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, MessageInfo> {
@Value("${policeMessage.sxtUrl}")
private String sxtUrl;
@Value("${policeMessage.imageUrl}")
private String imageUrl;
@Resource
YDeviceService yDeviceService;
@Resource
YWareHouseService yWareHouseService;
@Resource
YCallPoliceMapper yCallPoliceMapper;
@ -48,6 +60,8 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
@Autowired
private SimpMessagingTemplate messagingTemplate;
@Autowired
private PushPoliceInfoService pushPoliceInfoService;
public List<CallPolice> saveMessageInfo() {
String url = "https://api2.hik-cloud.com/api/v1/mq/consumer/messages";
@ -166,6 +180,7 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
// 刷新设备状态
// 刷新nvr下的设备状态(摄像头类)
List<Device> sxtDevices = yDeviceService.getOtherList("5", null);
List<Device> errorDeivce = new ArrayList<>();
for (Device device : sxtDevices) {
String url = "https://api2.hik-cloud.com/api/v1/open/basic/channels/list?deviceSerial=" + device.getSerialNumber() + "&pageNo=1&pageSize=50";
try {
@ -181,14 +196,18 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
// 只看正在使用的通道。
if ("1".equals(jsonObject.get("isUse").toString())) {
QueryWrapper<Device> wrapper = new QueryWrapper<>();
int channelNo = Integer.valueOf(jsonObject.get("channelNo").toString()) + 1;
// int channelNo = Integer.valueOf(jsonObject.get("channelNo").toString()) + 1;
int channelNo = Integer.valueOf(jsonObject.get("channelNo").toString());
wrapper.eq("channelNo", channelNo);
wrapper.eq("nvrSerial", device.getSerialNumber());
List<Device> devices = yDeviceService.list(wrapper);
// 通道状态,0:离线,1:在线,-1:设备未上报。
if (devices.size() > 0) {
Device deviceTemp = devices.get(0);
// 摄像头离线 调取报警接口。
if ("0".equals(jsonObject.get("channelStatus").toString())) {
errorDeivce.add(deviceTemp);
if (!deviceTemp.getStatus().equals("0")) {
deviceTemp.setStatus("0");
yDeviceService.updateById(deviceTemp);
@ -207,6 +226,31 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
}
}
List<WareHouse> wareHouses = yWareHouseService.getNeedPushWareHouses();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
for (WareHouse wareHouse : wareHouses) {
List<DeviceVo> deviceVos = new ArrayList<>();
for (Device ed : errorDeivce) {
if (wareHouse.getSid().equals(ed.getCkId())) {
DeviceVo deviceVo = new DeviceVo();
deviceVo.setName(ed.getName());
deviceVo.setSerialNumber(ed.getSerialNumber());
deviceVo.setStatus("断网");
deviceVos.add(deviceVo);
}
}
PushPoliceAllVo pushPoliceAllVo = new PushPoliceAllVo();
pushPoliceAllVo.setSid(wareHouse.getSid());
pushPoliceAllVo.setName(wareHouse.getName());
pushPoliceAllVo.setDevices(deviceVos);
pushPoliceAllVo.setErrorCount(deviceVos.size());
pushPoliceAllVo.setSendTime(sdf.format(new Date()));
pushPoliceInfoService.pushPoliceMessage(pushPoliceAllVo);
}
// 刷新nvr下的设备状态(电子围栏类)
List<Device> dzwlDevices = yDeviceService.getOtherList("4", null);
for (Device device : dzwlDevices) {
@ -246,4 +290,5 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
}
}
}
}

0
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/messageInfo/YWareHouseMapper.xml → yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/messageInfo/YMessageinfoMapper.xml

15
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/pushPoliceInfo/PushPoliceInfoMapper.java

@ -0,0 +1,15 @@
package com.yxt.supervise.monitor.biz.pushPoliceInfo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.supervise.monitor.api.entity.CallPolice;
import com.yxt.supervise.monitor.api.entity.PushPoliceInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface PushPoliceInfoMapper extends BaseMapper<PushPoliceInfo> {
}

10
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/pushPoliceInfo/PushPoliceInfoMapper.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yxt.supervise.monitor.biz.pushPoliceInfo.PushPoliceInfoMapper">
<!-- <select id="getCallPolicePage" resultType="com.yxt.supervise.monitor.api.entity.CallPolice">-->
<!-- select t.createTime, t.msgType, d.name, d.position-->
<!-- from y_call_police t-->
<!-- inner join y_device d on t.deviceId = d.id-->
<!-- ${ew.customSqlSegment}-->
<!-- </select>-->
</mapper>

136
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/pushPoliceInfo/PushPoliceInfoService.java

@ -0,0 +1,136 @@
package com.yxt.supervise.monitor.biz.pushPoliceInfo;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yxt.supervise.monitor.api.entity.CallPolice;
import com.yxt.supervise.monitor.api.entity.Device;
import com.yxt.supervise.monitor.api.entity.DeviceImage;
import com.yxt.supervise.monitor.api.entity.PushPoliceInfo;
import com.yxt.supervise.monitor.api.vo.PushPoliceAllVo;
import com.yxt.supervise.monitor.api.vo.PushPoliceImageAllVo;
import com.yxt.supervise.monitor.api.vo.PushPoliceVo;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class PushPoliceInfoService extends ServiceImpl<PushPoliceInfoMapper, PushPoliceInfo> {
@Value("${policeMessage.sxtUrl}")
private String policeUrl;
@Value("${policeMessage.imageUrl}")
private String policeImgUrl;
@Value("${policeMessage.getCodeUrl}")
private String getCodeUrl;
/**
* @param pushPoliceAllVos 入参
* @return
*/
public void pushPoliceMessage(PushPoliceAllVo pushPoliceAllVos) {
if (pushPoliceAllVos == null) {
log.error("The Device Is Null");
return;
}
System.out.println(JSONObject.toJSONString(pushPoliceAllVos));
if (1 == 1) return;
String result = "";
String paramJson = "";
try {
paramJson = JSONObject.toJSONString(pushPoliceAllVos);
System.out.println(paramJson);
// 调取报警平台
result = HttpUtils.sendPostJson(policeUrl, paramJson, "");
// 返回结果存库
PushPoliceInfo pushPoliceInfo = new PushPoliceInfo();
pushPoliceInfo.setCkId(pushPoliceAllVos.getSid());
pushPoliceInfo.setCreateTime(new Date());
pushPoliceInfo.setSendTime(pushPoliceAllVos.getSendTime());
pushPoliceInfo.setInput(paramJson);
pushPoliceInfo.setOutput(result);
// 0设备状态报警1图片对比报警
pushPoliceInfo.setImageOrPolice(0);
pushPoliceInfo.setIsSuccess("0");
this.save(pushPoliceInfo);
} catch (Exception e) {
// 返回结果存库
PushPoliceInfo pushPoliceInfo = new PushPoliceInfo();
pushPoliceInfo.setCkId(pushPoliceAllVos.getSid());
pushPoliceInfo.setCreateTime(new Date());
pushPoliceInfo.setSendTime(pushPoliceAllVos.getSendTime());
pushPoliceInfo.setInput(paramJson);
pushPoliceInfo.setOutput(result);
// 0设备状态报警1图片对比报警
pushPoliceInfo.setImageOrPolice(0);
pushPoliceInfo.setIsSuccess("1");
this.save(pushPoliceInfo);
// 报错处理
System.out.println(e);
}
}
/**
* @param pushPoliceImageAllVo 对比信息
* @return
*/
public void pushPoliceImageMessage(PushPoliceImageAllVo pushPoliceImageAllVo) {
if (pushPoliceImageAllVo == null) {
log.error("The DeviceImage Is Null");
return;
}
System.out.println(JSONObject.toJSONString(pushPoliceImageAllVo));
if (1 == 1) return;
String paramJson = "";
String result = "";
try {
paramJson = JSONObject.toJSONString(pushPoliceImageAllVo);
// 调取报警平台
result = HttpUtils.sendPostJson(policeImgUrl, paramJson, "");
// 返回结果存库
PushPoliceInfo pushPoliceInfo = new PushPoliceInfo();
pushPoliceInfo.setCkId(pushPoliceImageAllVo.getSid());
pushPoliceInfo.setCreateTime(new Date());
pushPoliceInfo.setSendTime(pushPoliceImageAllVo.getSendTime());
pushPoliceInfo.setInput(paramJson);
pushPoliceInfo.setOutput(result);
// 0设备状态报警1图片对比报警
pushPoliceInfo.setImageOrPolice(1);
pushPoliceInfo.setIsSuccess("0");
this.save(pushPoliceInfo);
} catch (Exception e) {
// 返回结果存库
PushPoliceInfo pushPoliceInfo = new PushPoliceInfo();
pushPoliceInfo.setCkId(pushPoliceImageAllVo.getSid());
pushPoliceInfo.setCreateTime(new Date());
pushPoliceInfo.setSendTime(pushPoliceImageAllVo.getSendTime());
pushPoliceInfo.setInput(paramJson);
pushPoliceInfo.setOutput(result);
// 0设备状态报警1图片对比报警
pushPoliceInfo.setImageOrPolice(1);
pushPoliceInfo.setIsSuccess("1");
this.save(pushPoliceInfo);
// 报错处理
System.out.println(result);
}
}
}

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

@ -58,11 +58,11 @@ public class SyncDetection implements SchedulingConfigurer {
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", "1"); //1 摄像头
queryWrapper.eq("isDelete", 0);
List<Device> list = yDeviceService.list(queryWrapper);
L.info("获取 {} 个摄像头信息,准备抓取图片");
for (Device device : list) {
yDeviceImageService.getImage(device);
}
// List<Device> list = yDeviceService.list(queryWrapper);
// L.info("获取 {} 个摄像头信息,准备抓取图片");
// for (Device device : list) {
// yDeviceImageService.getImage(device);
// }
}
},
new Trigger() {

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

@ -3,8 +3,16 @@ package com.yxt.supervise.monitor.biz.scheduled;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yxt.supervise.monitor.api.entity.Device;
import com.yxt.supervise.monitor.api.entity.DeviceImage;
import com.yxt.supervise.monitor.api.entity.WareHouse;
import com.yxt.supervise.monitor.api.vo.DeviceVo;
import com.yxt.supervise.monitor.api.vo.PushPoliceAllVo;
import com.yxt.supervise.monitor.api.vo.PushPoliceImageAllVo;
import com.yxt.supervise.monitor.biz.device.YDeviceService;
import com.yxt.supervise.monitor.biz.deviceImage.YDeviceImageService;
import com.yxt.supervise.monitor.biz.messageInfo.YMessageInfoService;
import com.yxt.supervise.monitor.biz.pushPoliceInfo.PushPoliceInfoService;
import com.yxt.supervise.monitor.biz.task.YTaskService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import com.yxt.supervise.monitor.biz.wareHouse.YWareHouseService;
@ -17,9 +25,8 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
@Slf4j
@ -31,9 +38,18 @@ public class SyncService {
@Autowired
YWareHouseService yWareHouseService;
@Autowired
YDeviceImageService yDeviceImageService;
@Autowired
YDeviceService yDeviceService;
@Autowired
YTaskService yTaskService;
@Autowired
private PushPoliceInfoService pushPoliceInfoService;
@Value("${haiKangConsumer.clientId}")
private String clientId;
@ -100,23 +116,72 @@ public class SyncService {
}
// @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() {
@Scheduled(fixedDelay = 1000 * 60) // 60秒更新一次设备状态
public void refreshDeviceStatus() {
try {
yMessageInfoService.saveMessageInfo();
yMessageInfoService.refreshDeviceStatus();
} catch (Exception ex) {
ex.printStackTrace();
}
}
@Async
@Scheduled(fixedDelay = 1000 * 60) //一分钟更新一次设备状态
public void refreshDeviceStatus() {
// @Async
// @Scheduled(fixedDelay = 1000 * 30) // 30秒更新一次图片比对
public void getImage() {
try {
yMessageInfoService.refreshDeviceStatus();
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", "1"); //1 摄像头
queryWrapper.eq("isDelete", 0);
List<Device> list = yDeviceService.list(queryWrapper);
List<DeviceImage> imageDeviceList = new ArrayList<>();
for (Device device : list) {
DeviceImage deviceImage = yDeviceImageService.getImage(device);
System.out.println(deviceImage);
if (deviceImage != null) {
imageDeviceList.add(deviceImage);
}
}
List<WareHouse> wareHouses = yWareHouseService.getNeedPushWareHouses();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
for (WareHouse wareHouse : wareHouses) {
List<DeviceVo> deviceVos = new ArrayList<>();
for (DeviceImage ed : imageDeviceList) {
if (wareHouse.getSid().equals(ed.getCkId())) {
DeviceVo deviceVo = new DeviceVo();
deviceVo.setName(ed.getName());
deviceVo.setSimilarity(ed.getSimilarity());
deviceVo.setStartImage(ed.getImgBefore());
deviceVo.setEndImage(ed.getImgAfter());
deviceVo.setStartTime(sdf.format(ed.getCreateTime()));
deviceVo.setEndTime(sdf.format(ed.getModifyTime()));
deviceVos.add(deviceVo);
}
}
PushPoliceImageAllVo pushPoliceImageAllVo = new PushPoliceImageAllVo();
pushPoliceImageAllVo.setSid(wareHouse.getSid());
pushPoliceImageAllVo.setName(wareHouse.getName());
pushPoliceImageAllVo.setDeviceImages(deviceVos);
pushPoliceImageAllVo.setSendTime(sdf.format(new Date()));
pushPoliceInfoService.pushPoliceImageMessage(pushPoliceImageAllVo);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

2
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/wareHouse/YWareHouseMapper.java

@ -12,5 +12,5 @@ import java.util.Map;
@Mapper
public interface YWareHouseMapper extends BaseMapper<WareHouse> {
List<WareHouse> getNeedPushWareHouses();
}

8
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/wareHouse/YWareHouseMapper.xml

@ -2,4 +2,12 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yxt.supervise.monitor.biz.wareHouse.YWareHouseMapper">
<select id="getNeedPushWareHouses" resultType="com.yxt.supervise.monitor.api.entity.WareHouse">
SELECT
*
FROM
y_warehouse
WHERE
sid IN ( SELECT ckId FROM y_device GROUP BY ckId );
</select>
</mapper>

8
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/wareHouse/YWareHouseService.java

@ -14,6 +14,7 @@ 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 org.springframework.stereotype.Service;
import org.springframework.web.context.annotation.RequestScope;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -26,6 +27,9 @@ import java.util.Map;
public class YWareHouseService extends ServiceImpl<YWareHouseMapper, WareHouse> {
@Resource
YWareHouseMapper yWareHouseMapper;
public Map<String, String> getWareHouseCount() {
Map<String, String> map = new HashMap<>();
QueryWrapper<WareHouse> wrapper = new QueryWrapper<>();
@ -62,4 +66,8 @@ public class YWareHouseService extends ServiceImpl<YWareHouseMapper, WareHouse>
}
return map;
}
public List<WareHouse> getNeedPushWareHouses(){
return yWareHouseMapper.getNeedPushWareHouses();
}
}

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

@ -33,6 +33,10 @@ scheduleTime:
folder: D:\resources\download
# folder: /root/huirong/monitor-java/imagesDownload
policeMessage:
sxtUrl: http://192.168.1.193:8112/rms/v1/riskAlarm/saveRisk
imageUrl:
getCodeUrl: http://192.168.1.193:8112/rms/v1/riskIndicators/listAll
haiKangConsumer:
clientId: 836fdd3ae6af4be385801c86d127e5ca
clientSecret: 193e139a1e6f43e28aa0851219b34a25

Loading…
Cancel
Save