Browse Source

设备状态列表查询

报警列表优化
质物检测对比相似度列表 详情 视频接入摄像头
master
yangzongjia 2 years ago
parent
commit
33b26fc505
  1. 13
      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. 12
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/DeviceImage.java
  4. 17
      yxt-supervise-monitor-biz/pom.xml
  5. 4
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YCallPoliceMapper.java
  6. 10
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YCallPoliceMapper.xml
  7. 22
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YCallPoliceService.java
  8. 4
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YDeviceImageMapper.xml
  9. 9
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceRest.java
  10. 67
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceService.java
  11. 48
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageRest.java
  12. 59
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageService.java
  13. 21
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/messageInfo/YMessageInfoService.java
  14. 63
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncDetection.java
  15. 3
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncService.java
  16. 22
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncUpdater.java
  17. 5
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/util/ImageCompareUtil.java
  18. 4
      yxt-supervise-monitor-biz/src/main/resources/mapper/YDeviceImageMapper.xml
  19. 3
      yxt-supervise-monitor-biz/src/main/resources/task-config.properties

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

@ -1,5 +1,6 @@
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;
@ -51,4 +52,16 @@ public class CallPolice extends EntityWithId {
@ApiModelProperty("信息内容")
private String content;
@TableField(exist = false)
@ApiModelProperty("设备名称")
private String name;
@TableField(exist = false)
@ApiModelProperty("设备位置")
private String position;
@TableField(exist = false)
@ApiModelProperty("报警类型")
private String callType;
}

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

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

12
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/DeviceImage.java

@ -38,7 +38,8 @@ public class DeviceImage extends EntityWithId {
private String isDelete;
@ApiModelProperty("修改时间")
private String modifyTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date modifyTime;
@ApiModelProperty("是否可用")
private String isEnable;
@ -63,4 +64,13 @@ public class DeviceImage extends EntityWithId {
@ApiModelProperty("拍照后")
private String imgAfter;
@ApiModelProperty("组号(第几个摄像头)")
private String channelNo;
@ApiModelProperty("是否展示(只展示最新数据)")
private String isShow;
@ApiModelProperty("相似度")
private String similarity;
}

17
yxt-supervise-monitor-biz/pom.xml

@ -89,6 +89,23 @@
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>

4
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YCallPoliceMapper.java

@ -1,5 +1,6 @@
package com.yxt.supervise.monitor.biz.callpolice;
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;
@ -11,7 +12,6 @@ import org.apache.ibatis.annotations.Param;
public interface YCallPoliceMapper extends BaseMapper<CallPolice> {
IPage<Device> getDevicePage();
IPage<CallPolice> getCallPolicePage(IPage<CallPolice> page, @Param("ew") QueryWrapper<CallPolice> queryWrapper);
Integer getByMsgId(@Param("msgId") String msgId);
}

10
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YCallPoliceMapper.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.callpolice.YCallPoliceMapper">
<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>

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

@ -28,6 +28,9 @@ import java.util.Map;
@Service
public class YCallPoliceService extends ServiceImpl<YCallPoliceMapper, CallPolice> {
@Resource
YCallPoliceMapper yCallPoliceMapper;
public IPage<CallPolice> getCallPolicePage(Map<String, String> searchVo, PageVo pageVo) {
IPage<CallPolice> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>();
page.setSize(pageVo.getSize());
@ -36,16 +39,25 @@ public class YCallPoliceService extends ServiceImpl<YCallPoliceMapper, CallPolic
QueryWrapper<CallPolice> queryWrapper = new QueryWrapper<>();
if (StrUtil.isNotBlank(searchVo.get("name"))) {
queryWrapper.like("name", searchVo.get("name"));
queryWrapper.like("d.name", searchVo.get("name"));
}
if (StrUtil.isNotBlank(searchVo.get("type"))) {
queryWrapper.eq("type", searchVo.get("type"));
if (StrUtil.isNotBlank(searchVo.get("startTime"))) {
queryWrapper.gt("t.createTime", searchVo.get("startTime"));
if (StrUtil.isNotBlank(searchVo.get("endTime"))) {
queryWrapper.lt("t.createTime", searchVo.get("endTime"));
}
}
queryWrapper.eq("isDelete", 0);
// if (StrUtil.isNotBlank(searchVo.get("type"))) {
// queryWrapper.eq("t.type", searchVo.get("type"));
// }
queryWrapper.eq("t.isDelete", 0);
IPage<CallPolice> athleteBOIPage = null;
try {
athleteBOIPage = baseMapper.selectPage(page, queryWrapper);
athleteBOIPage = yCallPoliceMapper.getCallPolicePage(page, queryWrapper);
athleteBOIPage.getRecords().forEach(oo -> {
oo.setCallType("设备报警消息");
});
} catch (Exception e) {
System.out.println(e);
athleteBOIPage = null;

4
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/callpolice/YDeviceImageMapper.xml

@ -1,4 +0,0 @@
<?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.callpolice.YCallPoliceMapper">
</mapper>

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

@ -28,6 +28,15 @@ public class YDeviceRest {
return rb;
}
@ApiOperation("分页获取设备状态列表")
@GetMapping("/getDeviceStatusPage")
public ResultBean getDeviceStatusPage(@RequestParam Map<String, String> searchVo,
@ModelAttribute PageVo pageVo) {
ResultBean rb = ResultBean.fireSuccess();
rb.setData(yDeviceService.getDeviceStatusPage(searchVo, pageVo));
return rb;
}
@ApiOperation("添加设备组")
@PostMapping("/createDeviceGroup")
public ResultBean createDeviceGroup(Device device) {

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

@ -1,6 +1,8 @@
package com.yxt.supervise.monitor.biz.device;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONAware;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -19,7 +21,9 @@ import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@ -53,11 +57,46 @@ public class YDeviceService extends ServiceImpl<YDeviceMapper, Device> {
return athleteBOIPage;
}
public IPage<Device> getDeviceStatusPage(Map<String, String> searchVo, PageVo pageVo) {
String url = "https://api2.hik-cloud.com/api/v1/open/basic/devices/list?groupNo=A1181&pageNo=" + pageVo.getCurrent() + "&pageSize=" + pageVo.getSize();
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 = "";
IPage<Device> iPage = new Page<>();
List<Device> list = new ArrayList<>();
for (Object obj : jsonArray) {
JSONObject objJson = (JSONObject) obj;
deviceSerial = objJson.get("deviceSerial").toString();
QueryWrapper<Device> wrapper = new QueryWrapper<>();
if (StrUtil.isNotBlank(searchVo.get("type"))) {
wrapper.eq("type", searchVo.get("type"));
}
wrapper.eq("serialNumber", deviceSerial);
List<Device> listSmall = this.list(wrapper);
if (listSmall.size() > 0) {
listSmall.get(0).setStatus(objJson.get("deviceStatus").toString()); // 设备状态 0:离线 1:在线
list.add(listSmall.get(0));
}
}
iPage.setRecords(list);
iPage.setCurrent(pageVo.getCurrent());
iPage.setSize(pageVo.getSize());
return iPage;
}
public ResultBean createDevice(Device device) {
ResultBean rb = ResultBean.fireSuccess();
return rb.setData(this.save(device));
// // 先给海康接口添加设备 如果失败直接返回失败
// String url = "https://api2.hik-cloud.com/api/v1/open/basic/devices/create";
// Map<String, Object> param = new HashMap<>();
@ -89,21 +128,25 @@ public class YDeviceService extends ServiceImpl<YDeviceMapper, Device> {
public ResultBean removeDeviceByIds(String idStr) {
ResultBean rb = ResultBean.fireFail();
ResultBean rb = ResultBean.fireSuccess();
String[] ids = idStr.split(",");
for (String id : ids) {
String url = "https://api2.hik-cloud.com/api/v1/open/basic/devices/delete";
Map<String, Object> param = new HashMap<>();
param.put("deviceSerial", id); // 设备序列号 string
// String paramJson = JSONObject.toJSONString(param);
String result = HttpUtils.sendPostMap(url, param, SyncService.haiKangToken);
JSONObject jsonObject = JSONObject.parseObject(result);
if ("200".equals(jsonObject.get("code").toString())) {
rb.setData(this.removeById(id));
}
rb.setData(this.removeById(id));
}
// for (String id : ids) {
// String url = "https://api2.hik-cloud.com/api/v1/open/basic/devices/delete";
// Map<String, Object> param = new HashMap<>();
// param.put("deviceSerial", id); // 设备序列号 string
//// String paramJson = JSONObject.toJSONString(param);
// String result = HttpUtils.sendPostMap(url, param, SyncService.haiKangToken);
// JSONObject jsonObject = JSONObject.parseObject(result);
// if ("200".equals(jsonObject.get("code").toString())) {
// rb.setData(this.removeById(id));
// }
// }
return rb;
}
}

48
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageRest.java

@ -1,12 +1,16 @@
package com.yxt.supervise.monitor.biz.deviceImage;
import com.alibaba.fastjson.JSONObject;
import com.yxt.common.core.result.ResultBean;
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 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 = "设备控制器")
@ -15,19 +19,55 @@ import java.util.Map;
public class YDeviceImageRest {
@Autowired
private YDeviceImageService yDeviceService;
private YDeviceImageService yDeviceImageService;
@ApiOperation("分页获取设备抓拍列表")
@GetMapping("/getDeviceImagePage")
public ResultBean getDeviceImagePage(@RequestParam Map<String, String> searchVo,
@ModelAttribute PageVo pageVo) {
yDeviceService.getDeviceImageBefore();
@ModelAttribute PageVo pageVo) {
ResultBean rb = ResultBean.fireSuccess();
// rb.setData(yDeviceService.getDeviceImagePage(searchVo, pageVo));
rb.setData(yDeviceImageService.getDeviceImagePage(searchVo, pageVo));
return rb;
}
@ApiOperation("单条获取抓拍信息")
@GetMapping("/getDeviceImageById")
public ResultBean getDeviceImageById(@RequestParam String id) {
ResultBean rb = ResultBean.fireSuccess();
rb.setData(yDeviceImageService.getById(id));
return rb;
}
@ApiOperation("单条获取抓拍信息")
@GetMapping("/getShiPinByChannelNo")
public ResultBean getShiPinByChannelNo(@RequestParam String channelNo) {
String spToken = "";
String url = "https://api2.hik-cloud.com/v1/ezviz/account/info";
try {
String result = HttpUtils.sendGet(url, SyncService.haiKangToken);
JSONObject jsonObject = JSONObject.parseObject(result);
JSONObject dataJson = (JSONObject) jsonObject.get("data");
String appKey = dataJson.get("appKey").toString();
spToken = dataJson.get("token").toString();
} catch (Exception e) {
System.out.println(e);
}
String vCode = "yxt123"; // 网络录像机验证码
String deviceSerial = "L20560109"; //网络录像机序列号
String spUrl = "https://open.ys7.com/console/jssdk/pc.html?url=ezopen://"
+ vCode + "@open.ys7.com/"
+ deviceSerial + "/"
+ channelNo + ".hd.live&accessToken="
+ spToken + "&themeId=pcLive";
ResultBean rb = ResultBean.fireSuccess();
rb.setData(spUrl);
return rb;
}
}

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

@ -4,6 +4,7 @@ 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;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -13,12 +14,15 @@ 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.ImageCompareUtil;
import com.yxt.supervise.monitor.biz.util.ImageDownloadUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@ -39,6 +43,8 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
queryWrapper.eq("type", searchVo.get("type"));
}
queryWrapper.eq("isDelete", 0);
queryWrapper.eq("isShow", 1);
queryWrapper.orderByAsc("channelNo");
IPage<DeviceImage> athleteBOIPage = null;
try {
@ -51,9 +57,9 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
}
public void getDeviceImageBefore() {
public void getImage(String channelNo) {
// 访问接口 把图片保存到本地
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", "L20560109"); // 设备序列号 string
@ -67,10 +73,57 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
String day = DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss");
picName = day + channelNo + ".png";
try {
ImageDownloadUtil.download(picUrl,SyncService.imagePath,picName);
ImageDownloadUtil.download(picUrl, SyncService.imagePath + channelNo, picName);
} catch (IOException e) {
e.printStackTrace();
}
// 入库操作
QueryWrapper<DeviceImage> wrapper = new QueryWrapper<>();
wrapper.eq("isShow", "1");
wrapper.eq("channelNo", channelNo);
wrapper.orderByDesc("createTime");
List<DeviceImage> deviceImageList = this.list(wrapper);
DeviceImage deviceImage = new DeviceImage();
deviceImage.setDeviceSerial("L20560109");
deviceImage.setCreateTime(new Date());
deviceImage.setChannelNo(channelNo);
deviceImage.setIsShow("1");
if (deviceImageList.size() > 0) {
DeviceImage deviceImageExit = deviceImageList.get(0);
String convertImage = deviceImageExit.getImgAfter();
deviceImage.setImgBefore(convertImage);
deviceImage.setImgAfter(SyncService.imagePath + channelNo + "/" + picName);
String similar = String.valueOf(ImageCompareUtil.compareImage(convertImage, SyncService.imagePath + channelNo + "/" + picName));
String[] similarSplit = similar.split("\\.");
if (similarSplit.length > 0) {
deviceImage.setSimilarity(similarSplit[0] + "%");
}else{
deviceImage.setSimilarity(similar + "%");
}
deviceImage.setModifyTime(new Date());
// 添加之前先把历史数据isShow改成不展示
this.flushDeviceImageIsShow(channelNo);
this.save(deviceImage);
} else {
deviceImage.setImgBefore(SyncService.imagePath + channelNo + "/" + picName);
deviceImage.setImgAfter(SyncService.imagePath + channelNo + "/" + picName);
deviceImage.setSimilarity("100%");
this.save(deviceImage);
}
}
private void flushDeviceImageIsShow(String channelNo) {
UpdateWrapper<DeviceImage> wrapper = new UpdateWrapper<>();
wrapper.eq("channelNo", channelNo);
wrapper.set("isShow", 0);
this.update(wrapper);
}
}

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

@ -5,13 +5,17 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.vo.MessageVo;
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.scheduled.SyncService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -29,6 +33,9 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
@Resource
YDeviceLogMapper yDeviceLogMapper;
@Resource
YDeviceMapper yDeviceMapper;
public List<CallPolice> saveMessageInfo() {
String url = "https://api2.hik-cloud.com/api/v1/mq/consumer/messages";
@ -48,6 +55,17 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
String jsonStr = jsonArray.toJSONString();
List<MessageVo> messageList = JSONObject.parseArray(jsonStr, MessageVo.class);
for (MessageVo messageVo : messageList) {
// 根据设备序列号查找本地数据库里面的设备ID
String deviceId = "";
JSONObject deviceIdJson = JSONObject.parseObject(messageVo.getContent());
String devSerial = deviceIdJson.get("devSerial").toString();
QueryWrapper<Device> deviceQueryWrapper = new QueryWrapper<>();
deviceQueryWrapper.eq("serialNumber", devSerial);
List<Device> devices = yDeviceMapper.selectList(deviceQueryWrapper);
if (devices.size() > 0) {
deviceId = devices.get(0).getId().toString();
}
QueryWrapper<MessageInfo> wrapper = new QueryWrapper<>();
wrapper.eq("msgId", messageVo.getMsgId());
int msgCount = this.count(wrapper);
@ -58,6 +76,7 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
messageInfo.setMsgType(messageVo.getMsgType());
messageInfo.setContent(messageVo.getContent());
messageInfo.setCreateTime(new Date());
messageInfo.setDeviceId(deviceId);
this.save(messageInfo);
// 判断是日志信息,添加到日志表
@ -68,6 +87,7 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
deviceLog.setMsgId(messageVo.getMsgId());
deviceLog.setContent(messageVo.getContent());
deviceLog.setCreateTime(new Date());
deviceLog.setDeviceId(deviceId);
yDeviceLogMapper.insert(deviceLog);
}
@ -80,6 +100,7 @@ public class YMessageInfoService extends ServiceImpl<YMessageInfoMapper, Message
callPolice.setMsgType(messageVo.getMsgType());
callPolice.setContent(messageVo.getContent());
callPolice.setCreateTime(new Date());
callPolice.setDeviceId(deviceId);
yCallPoliceMapper.insert(callPolice);
}
}

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

@ -0,0 +1,63 @@
package com.yxt.supervise.monitor.biz.scheduled;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.yxt.supervise.monitor.biz.deviceImage.YDeviceImageService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import com.yxt.supervise.monitor.biz.util.ImageDownloadUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Data
@Slf4j
@Component
@PropertySource("classpath:/task-config.properties")
public class SyncDetection implements SchedulingConfigurer {
@Value("${scheduleTime.cron}")
private String cron;
@Autowired
YDeviceImageService yDeviceImageService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
// 动态使用cron表达式设置循环间隔
taskRegistrar.addTriggerTask(
new Runnable() {
@Override
public void run() {
// yDeviceImageService.getImage("1");
// yDeviceImageService.getImage("2");
// yDeviceImageService.getImage("3");
// yDeviceImageService.getImage("4");
}
},
new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
// 使用CronTrigger触发器,可动态修改cron表达式来操作循环规则
CronTrigger cronTrigger = new CronTrigger(cron);
Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);
return nextExecutionTime;
}
});
}
}

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

@ -35,7 +35,8 @@ public class SyncService {
YMessageInfoService yMessageInfoService;
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 = "";
@PostConstruct

22
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncUpdater.java

@ -0,0 +1,22 @@
package com.yxt.supervise.monitor.biz.scheduled;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequiredArgsConstructor
public class SyncUpdater {
private final SyncDetection scheduleTask;
@GetMapping("/updateCron")
public void updateCron(String cron) {
log.info("new cron :{}", cron);
scheduleTask.setCron(cron);
}
}

5
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/util/ImageCompareUtil.java

@ -19,7 +19,7 @@ public class ImageCompareUtil {
private static Logger Log = LoggerFactory.getLogger(ImageCompareUtil.class);
public static void compareImage(String targetImageUrl, String baseImageUrl) {
public static double compareImage(String targetImageUrl, String baseImageUrl) {
/**
@ -76,8 +76,9 @@ public class ImageCompareUtil {
baseImage.release();
targetImage.release();
return total - nonZeroPercent;
} else {
return 0.0;
}
}

4
yxt-supervise-monitor-biz/src/main/resources/mapper/YDeviceImageMapper.xml

@ -1,4 +0,0 @@
<?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.demoidentity.DemoIdentityMapper">
</mapper>

3
yxt-supervise-monitor-biz/src/main/resources/task-config.properties

@ -0,0 +1,3 @@
scheduleTime.cron=0/30 * * * * ?
scheduleTime.timer=15000
Loading…
Cancel
Save