Browse Source

定时任务可修改

视频可回放
摄像头绑定在nvr下
nvr绑定在仓库下
master
yangzongjia 2 years ago
parent
commit
d48af4d520
  1. 14
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/Device.java
  2. 2
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/DeviceLog.java
  3. 2
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/MessageInfo.java
  4. 68
      yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/YTask.java
  5. 0
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/demobaseentity/YTaskMapper.xml
  6. 0
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/demoidentity/YTaskMapper.xml
  7. 8
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceRest.java
  8. 10
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/device/YDeviceService.java
  9. 72
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageRest.java
  10. 22
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/deviceImage/YDeviceImageService.java
  11. 8
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncService.java
  12. 70
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/scheduled/SyncUpdater.java
  13. 11
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/task/YTaskMapper.java
  14. 28
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/task/YTaskRest.java
  15. 29
      yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/task/YTaskService.java
  16. 4
      yxt-supervise-monitor-biz/src/main/resources/task-config.properties

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

@ -25,7 +25,7 @@ public class Device extends EntityWithId {
@ApiModelProperty("名称")
private String name; // 名称
@ApiModelProperty("类型")
@ApiModelProperty("设备类型(1摄像头 2电子围栏 3门禁 4机器人 5nvr)")
private String type;
@ApiModelProperty("状态")
@ -66,4 +66,16 @@ public class Device extends EntityWithId {
@ApiModelProperty("组号")
private String channelNo;
@ApiModelProperty("nvr序列号")
private String nvrSerial;
@ApiModelProperty("nvr验证码")
private String nvrCode;
@ApiModelProperty("nvrID")
private Integer nvrId;
@ApiModelProperty("仓库ID")
private Integer ckId;
}

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

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

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

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

68
yxt-supervise-monitor-api/src/main/java/com/yxt/supervise/monitor/api/entity/YTask.java

@ -0,0 +1,68 @@
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_task")
public class YTask 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 status;
@ApiModelProperty("信息状态")
private String state;
@ApiModelProperty("是否删除")
private String isDelete;
@ApiModelProperty("修改时间")
private String modifyTime;
@ApiModelProperty("是否可用")
private String isEnable;
@ApiModelProperty("创建人")
private String createBySid;
@ApiModelProperty("更新人")
private String updateBySid;
@ApiModelProperty("秒")
private String second;
@ApiModelProperty("分")
private String divide;
@ApiModelProperty("时")
private String hour;
@ApiModelProperty("天")
private String day;
@ApiModelProperty("月")
private String month;
@ApiModelProperty("年")
private String year;
@TableField(exist = false)
@ApiModelProperty("多少秒")
private String seconds;
}

0
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/demobaseentity/YDeviceImageMapper.xml → yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/demobaseentity/YTaskMapper.xml

0
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/demoidentity/YDeviceImageMapper.xml → yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/demoidentity/YTaskMapper.xml

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

@ -38,11 +38,11 @@ public class YDeviceRest {
}
@ApiOperation("获取摄像头列表")
@GetMapping("/getSxtList")
public ResultBean getSxtList() {
@ApiOperation("获取指定设备列表")
@GetMapping("/getOtherList")
public ResultBean getOtherList(String type) {
ResultBean rb = ResultBean.fireSuccess();
rb.setData(yDeviceService.getSxtList());
rb.setData(yDeviceService.getOtherList(type));
return rb;
}

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

@ -58,10 +58,10 @@ public class YDeviceService extends ServiceImpl<YDeviceMapper, Device> {
}
public List<Device> getSxtList() {
public List<Device> getOtherList(String type) {
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", "1"); //1 摄像头
queryWrapper.eq("type", type); //1 摄像头
queryWrapper.eq("isDelete", 0);
List<Device> athleteBOIPage = null;
@ -74,7 +74,6 @@ 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 = "";
@ -113,6 +112,11 @@ public class YDeviceService extends ServiceImpl<YDeviceMapper, Device> {
public ResultBean createDevice(Device device) {
ResultBean rb = ResultBean.fireSuccess();
if("1".equals(device.getType())){ //摄像头
Device nvrDevice = this.getById(device.getNvrId());
device.setNvrCode(nvrDevice.getVCode());
device.setNvrSerial(nvrDevice.getSerialNumber());
}
return rb.setData(this.save(device));
// // 先给海康接口添加设备 如果失败直接返回失败
// String url = "https://api2.hik-cloud.com/api/v1/open/basic/devices/create";

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

@ -1,8 +1,11 @@
package com.yxt.supervise.monitor.biz.deviceImage;
import cn.hutool.core.date.DateUtil;
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.device.YDeviceService;
import com.yxt.supervise.monitor.biz.scheduled.SyncService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import io.swagger.annotations.Api;
@ -22,6 +25,10 @@ public class YDeviceImageRest {
private YDeviceImageService yDeviceImageService;
@Autowired
private YDeviceService yDeviceService;
@ApiOperation("分页获取设备抓拍列表")
@GetMapping("/getDeviceImagePage")
public ResultBean getDeviceImagePage(@RequestParam Map<String, String> searchVo,
@ -41,9 +48,9 @@ public class YDeviceImageRest {
}
@ApiOperation("单条获取抓拍信息")
@GetMapping("/getShiPinByChannelNo")
public ResultBean getShiPinByChannelNo(@RequestParam String channelNo) {
@ApiOperation("质物检测获取正常视频流")
@GetMapping("/getShiPinNormalByChannelNo")
public ResultBean getShiPinByChannelNo(@RequestParam String channelNo) {
String spToken = "";
String url = "https://api2.hik-cloud.com/v1/ezviz/account/info";
try {
@ -70,4 +77,63 @@ public class YDeviceImageRest {
}
@ApiOperation("获取回放视频流")
@GetMapping("/getVedioPcLiveById")
public ResultBean getVedioPcLiveById(@RequestParam String id) {
Device device = yDeviceService.getById(id);
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 spUrl = "https://open.ys7.com/console/jssdk/pc.html?url=ezopen://"
+ device.getNvrCode() + "@open.ys7.com/"
+ device.getNvrSerial() + "/"
+ device.getChannelNo() + ".hd.live&accessToken="
+ spToken + "&themeId=pcLive";
ResultBean rb = ResultBean.fireSuccess();
rb.setData(spUrl);
return rb;
}
@ApiOperation("获取回放视频流")
@GetMapping("/getVedioPcRecById")
public ResultBean getVedioPcRecById(@RequestParam String id) {
Device device = yDeviceService.getById(id);
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 beginTime = DateUtil.format(DateUtil.yesterday(), "yyyyMMdd") + "235959";
String endTime = DateUtil.format(DateUtil.date(), "yyyyMMdd") + "235959";
String spUrl = "https://open.ys7.com/console/jssdk/pc.html?url=ezopen://"
+ device.getNvrCode() + "@open.ys7.com/"
+ device.getNvrSerial() + "/"
+ device.getChannelNo() + ".rec&accessToken="
+ spToken + "&begin=" + beginTime + "&end=" + endTime + "&themeId=pcRec";
ResultBean rb = ResultBean.fireSuccess();
rb.setData(spUrl);
return rb;
}
}

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

@ -16,6 +16,7 @@ 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -28,6 +29,8 @@ import java.util.Map;
@Service
public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceImage> {
@Value("${image.folder}")
private String filePath;
public IPage<DeviceImage> getDeviceImagePage(Map<String, String> searchVo, PageVo pageVo) {
IPage<DeviceImage> page = new Page<>();
@ -49,6 +52,15 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
IPage<DeviceImage> athleteBOIPage = null;
try {
athleteBOIPage = baseMapper.selectPage(page, queryWrapper);
athleteBOIPage.getRecords().forEach(oo->{
String replaceBeforePath = oo.getImgBefore();
replaceBeforePath = replaceBeforePath.replaceAll("\\\\", "\\\\\\\\");
oo.setImgBefore(replaceBeforePath);
String replaceAfterPath = oo.getImgAfter();
replaceAfterPath = replaceAfterPath.replaceAll("\\\\", "\\\\\\\\");
oo.setImgAfter(replaceAfterPath);
});
} catch (Exception e) {
System.out.println(e);
athleteBOIPage = null;
@ -73,7 +85,7 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
String day = DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss");
picName = day + channelNo + ".png";
try {
ImageDownloadUtil.download(picUrl, SyncService.imagePath + channelNo, picName);
ImageDownloadUtil.download(picUrl, filePath + channelNo, picName);
} catch (IOException e) {
e.printStackTrace();
}
@ -96,8 +108,8 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
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));
deviceImage.setImgAfter(filePath + channelNo + "/" + picName);
String similar = String.valueOf(ImageCompareUtil.compareImage(convertImage, filePath + channelNo + "/" + picName));
String[] similarSplit = similar.split("\\.");
if (similarSplit.length > 0) {
deviceImage.setSimilarity(similarSplit[0] + "%");
@ -110,8 +122,8 @@ public class YDeviceImageService extends ServiceImpl<YDeviceImageMapper, DeviceI
this.flushDeviceImageIsShow(channelNo);
this.save(deviceImage);
} else {
deviceImage.setImgBefore(SyncService.imagePath + channelNo + "/" + picName);
deviceImage.setImgAfter(SyncService.imagePath + channelNo + "/" + picName);
deviceImage.setImgBefore(filePath + channelNo + "/" + picName);
deviceImage.setImgAfter(filePath + channelNo + "/" + picName);
deviceImage.setSimilarity("100%");
this.save(deviceImage);
}

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

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.monitor.biz.callpolice.YCallPoliceService;
import com.yxt.supervise.monitor.biz.messageInfo.YMessageInfoService;
import com.yxt.supervise.monitor.biz.task.YTaskService;
import com.yxt.supervise.monitor.biz.util.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
@ -34,9 +35,12 @@ public class SyncService {
@Autowired
YMessageInfoService yMessageInfoService;
@Autowired
YTaskService yTaskService;
public static String haiKangToken = "";
// public static final String imagePath = "/root/supervise/images/";
public static final String imagePath = "D:\\resources\\download\\";
// public static final String imagePath = "D:\\resources\\download\\";
public static String haiKangMessageConsumer = "";
@PostConstruct
@ -52,6 +56,7 @@ 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);
@ -65,6 +70,7 @@ public class SyncService {
// System.out.println("Get MessageConsumer Error");
// log.error("Get MessageConsumer Error");
// }
}

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

@ -1,22 +1,90 @@
package com.yxt.supervise.monitor.biz.scheduled;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.monitor.api.entity.YTask;
import com.yxt.supervise.monitor.biz.task.YTaskService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
import java.util.List;
@Slf4j
@RestController
@RequiredArgsConstructor
public class SyncUpdater {
@Autowired
YTaskService yTaskService;
private final SyncDetection scheduleTask;
@GetMapping("/updateCron")
public void updateCron(String cron) {
public ResultBean updateCron(YTask yTask) {
// 0/30 * * * * ?
String cron = parseCronStr(yTask);
log.info("new cron :{}", cron);
scheduleTask.setCron(cron);
ResultBean rb = ResultBean.fireSuccess();
rb.setData(yTaskService.refreshTask(yTask));
return rb;
}
@PostConstruct
public void initTask() {
QueryWrapper<YTask> wrapper = new QueryWrapper<>();
wrapper.eq("status", "1");
List<YTask> list = yTaskService.list(wrapper);
if (list.size() > 0) {
String cron = parseCronStr(list.get(0));
scheduleTask.setCron(cron);
}
}
private String parseCronStr(YTask yTask) {
String cron = "";
if (yTask.getSecond() != null) {
cron += yTask.getSecond() + " ";
} else {
cron += "* ";
}
if (yTask.getDivide() != null) {
cron += yTask.getDivide() + " ";
} else {
cron += "* ";
}
if (yTask.getHour() != null) {
cron += yTask.getHour() + " ";
} else {
cron += "* ";
}
if (yTask.getDay() != null) {
cron += yTask.getDay() + " ";
} else {
cron += "* ";
}
if (yTask.getMonth() != null) {
cron += yTask.getMonth() + " ";
} else {
cron += "* ";
}
if (yTask.getYear() != null) {
cron += yTask.getYear();
} else {
cron += "?";
}
return cron;
}
}

11
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/task/YTaskMapper.java

@ -0,0 +1,11 @@
package com.yxt.supervise.monitor.biz.task;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.supervise.monitor.api.entity.DeviceLog;
import com.yxt.supervise.monitor.api.entity.YTask;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface YTaskMapper extends BaseMapper<YTask> {
}

28
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/task/YTaskRest.java

@ -0,0 +1,28 @@
package com.yxt.supervise.monitor.biz.task;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.monitor.api.entity.YTask;
import com.yxt.supervise.monitor.api.vo.PageVo;
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.Map;
@Api(tags = "定时修改控制器")
@RestController("com.yxt.supervise.monitor.biz.task.YTaskRest")
@RequestMapping("/yTask")
public class YTaskRest {
@Autowired
YTaskService yTaskService;
@ApiOperation("手动修改定时")
@GetMapping("/refreshTask")
public ResultBean refreshTask(YTask yTask) {
ResultBean rb = ResultBean.fireSuccess();
rb.setData(yTaskService.refreshTask(yTask));
return rb;
}
}

29
yxt-supervise-monitor-biz/src/main/java/com/yxt/supervise/monitor/biz/task/YTaskService.java

@ -0,0 +1,29 @@
package com.yxt.supervise.monitor.biz.task;
import cn.hutool.core.util.StrUtil;
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.service.impl.ServiceImpl;
import com.yxt.supervise.monitor.api.entity.DeviceLog;
import com.yxt.supervise.monitor.api.entity.YTask;
import com.yxt.supervise.monitor.api.vo.PageVo;
import com.yxt.supervise.monitor.biz.scheduled.SyncDetection;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class YTaskService extends ServiceImpl<YTaskMapper, YTask> {
public boolean refreshTask(YTask yTask) {
UpdateWrapper<YTask> wrapper = new UpdateWrapper<>();
wrapper.set("status", "0");
this.update(wrapper);
yTask.setStatus("1");
return this.save(yTask);
}
}

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

@ -1,3 +1,3 @@
scheduleTime.cron=0/30 * * * * ?
scheduleTime.cron=0/59 0/2 * * * ?
scheduleTime.timer=15000
image.folder=D:\\resources\\download\\
Loading…
Cancel
Save