From 8e3052593eba165893677e13df4d7a72296b2f3f Mon Sep 17 00:00:00 2001 From: baizonghao <1719256278@qq.com> Date: 星期日, 05 三月 2023 13:37:00 +0800 Subject: [PATCH] 视频报警API --- ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java | 158 +++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 124 insertions(+), 34 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java index acd2ce6..51d7f17 100644 --- a/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.function.Consumer; /** * VideoAlarmReportServiceImpl @@ -53,9 +54,83 @@ this.violationsService = violationsService; } +// @Override +// public void save(AlarmParam alarmParam) { +// if (alarmParam != null && alarmParam.getAlarmData() != null) { +// CameraInfParam cameraInf = alarmParam.getCameraInf(); +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); +// String picData = ""; +// if (!StringUtils.isEmpty(alarmParam.getPicData())) { +//// String[] strings = alarmParam.getPicData().split(","); +// String extension = "jpg"; +// +// byte[] data = DatatypeConverter.parseBase64Binary(alarmParam.getPicData()); +// InputStream inputStream = new ByteArrayInputStream(data); +// +// try { +// if (!StringUtils.isEmpty(alarmParam.getAlarmData().getAlarmObject().toString())) { +// String alarmObject = JSON.toJSONString(alarmParam.getAlarmData().getAlarmObject()); +// if (!StringUtils.isEmpty(alarmObject)) { +// BufferedImage image = ImageIO.read(inputStream); +// +// Graphics2D g2 = (Graphics2D) image.getGraphics(); +// g2.setColor(Color.RED); +// g2.setStroke(new BasicStroke(3.0f)); +// List<AlarmObject> alarmObjects = JSON.parseArray(alarmObject, AlarmObject.class); +// alarmObjects.forEach(o -> { +// o.getObjectRect().forEach(rect -> { +// g2.drawRect(rect.getX(), rect.getY(), rect.getW(), rect.getH()); +// }); +// }); +// ByteArrayOutputStream os = new ByteArrayOutputStream(); +// ImageIO.write(image, extension, os); +// inputStream = new ByteArrayInputStream(os.toByteArray()); +// } +// } +// picData = mediaFileUtil.savePicture(inputStream, extension); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// List<VideoAlarmReport> videoAlarmReports = new ArrayList<>(); +// +// AlarmDataParam alarmData = alarmParam.getAlarmData(); +// List<VideoAlarmReport> list = getByAlarmId(alarmData.getAlarmID()); +// try { +// Date date = sdf.parse(alarmData.getAlarmTime()); +// Instant instant = date.toInstant(); +// ZoneId zoneId = ZoneId.systemDefault(); +// VideoAlarmReport videoAlarmReport = VideoAlarmReport.builder() +// .ip(cameraInf.getIp()).port(cameraInf.getPort()) +// .user(cameraInf.getUser()).password(cameraInf.getPassword()) +// .channel(cameraInf.getChannel()).platResourceId(cameraInf.getPlatResourceID()) +// .picData(picData).alarmTime(instant.atZone(zoneId).toLocalDateTime()) +// .alarmId(alarmData.getAlarmID()).algoType(alarmData.getAlgoType()) +// .alarmType(alarmData.getAlarmType()).alarmName(alarmData.getAlarmName()) +// .algoName(alarmData.getAlgoName()).alarmObj(JSON.toJSONString(alarmData.getAlarmObject())) +// .build(); +// if (list.size() == 0) { +// +// videoAlarmReports.add(videoAlarmReport); +// +// this.saveBatch(videoAlarmReports, videoAlarmReports.size()); +// +// violationsService.saveFromVideo(videoAlarmReports); +// +// } else { +// videoAlarmReport.setId(list.get(0).getId()); +// this.updateById(videoAlarmReport); +// } +// } catch (ParseException e) { +// e.printStackTrace(); +// } +// } +// } + @Override public void save(AlarmParam alarmParam) { if (alarmParam != null && alarmParam.getAlarmData() != null) { +// 鍙栧嚭CameraInf CameraInfParam cameraInf = alarmParam.getCameraInf(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); String picData = ""; @@ -63,28 +138,39 @@ // String[] strings = alarmParam.getPicData().split(","); String extension = "jpg"; +// 鎸夌収Base64缂栫爜瑙f瀽鏁版嵁 byte[] data = DatatypeConverter.parseBase64Binary(alarmParam.getPicData()); InputStream inputStream = new ByteArrayInputStream(data); try { - if (!StringUtils.isEmpty(alarmParam.getAlarmData().getAlarmObject().toString())) { - String alarmObject = JSON.toJSONString(alarmParam.getAlarmData().getAlarmObject()); - if (!StringUtils.isEmpty(alarmObject)) { - BufferedImage image = ImageIO.read(inputStream); +// 濡傛灉List<AlarmDataParam>鍚堢悊 + if (alarmParam.getAlarmData()!=null && alarmParam.getAlarmData().size()!=0) { + BufferedImage image = ImageIO.read(inputStream); Graphics2D g2 = (Graphics2D) image.getGraphics(); g2.setColor(Color.RED); g2.setStroke(new BasicStroke(3.0f)); - List<AlarmObject> alarmObjects = JSON.parseArray(alarmObject, AlarmObject.class); - alarmObjects.forEach(o -> { - o.getObjectRect().forEach(rect -> { - g2.drawRect(rect.getX(), rect.getY(), rect.getW(), rect.getH()); - }); + + List<AlarmDataParam> alarmData = alarmParam.getAlarmData(); + + alarmData.forEach(new Consumer<AlarmDataParam>() { + @Override + public void accept(AlarmDataParam alarmDataParam) { + List<AlarmObject> alarmObject = alarmDataParam.getAlarmObject(); + alarmObject.forEach(new Consumer<AlarmObject>() { + @Override + public void accept(AlarmObject alarmObject) { + ObjectRect rect = alarmObject.getObjectRect(); + g2.drawRect(rect.getX(), rect.getY(), rect.getW(), rect.getH()); + } + }); + } }); + ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(image, extension, os); inputStream = new ByteArrayInputStream(os.toByteArray()); - } + } picData = mediaFileUtil.savePicture(inputStream, extension); } catch (Exception e) { @@ -93,36 +179,40 @@ } List<VideoAlarmReport> videoAlarmReports = new ArrayList<>(); - AlarmDataParam alarmData = alarmParam.getAlarmData(); - List<VideoAlarmReport> list = getByAlarmId(alarmData.getAlarmID()); - try { - Date date = sdf.parse(alarmData.getAlarmTime()); - Instant instant = date.toInstant(); - ZoneId zoneId = ZoneId.systemDefault(); - VideoAlarmReport videoAlarmReport = VideoAlarmReport.builder() - .ip(cameraInf.getIp()).port(cameraInf.getPort()) - .user(cameraInf.getUser()).password(cameraInf.getPassword()) - .channel(cameraInf.getChannel()).platResourceId(cameraInf.getPlatResourceID()) - .picData(picData).alarmTime(instant.atZone(zoneId).toLocalDateTime()) - .alarmId(alarmData.getAlarmID()).algoType(alarmData.getAlgoType()) - .alarmType(alarmData.getAlarmType()).alarmName(alarmData.getAlarmName()) - .algoName(alarmData.getAlgoName()).alarmObj(JSON.toJSONString(alarmData.getAlarmObject())) - .build(); - if (list.size() == 0) { + List<AlarmDataParam> alarmData = alarmParam.getAlarmData(); + for (AlarmDataParam alarmDatum : alarmData) { + List<VideoAlarmReport> list = getByAlarmId(alarmDatum.getAlarmID()); + try { + Date date = sdf.parse(alarmDatum.getAlarmTime()); + Instant instant = date.toInstant(); + ZoneId zoneId = ZoneId.systemDefault(); + VideoAlarmReport videoAlarmReport = VideoAlarmReport.builder() + .ip(cameraInf.getIp()).port(cameraInf.getPort()) + .user(cameraInf.getUser()).password(cameraInf.getPassword()) + .channel(cameraInf.getChannel()).platResourceId(cameraInf.getPlatResourceID()) + .picData(picData).alarmTime(instant.atZone(zoneId).toLocalDateTime()) + .alarmId(alarmDatum.getAlarmID()).algoType(alarmDatum.getAlgoType()) + .alarmType(alarmDatum.getAlarmType()).alarmName(alarmDatum.getAlarmName()) + .algoName(alarmDatum.getAlgoName()).alarmObj(JSON.toJSONString(alarmDatum.getAlarmObject())) + .build(); + if (list.size() == 0) { - videoAlarmReports.add(videoAlarmReport); + videoAlarmReports.add(videoAlarmReport); - this.saveBatch(videoAlarmReports, videoAlarmReports.size()); + this.saveBatch(videoAlarmReports, videoAlarmReports.size()); - violationsService.saveFromVideo(videoAlarmReports); + violationsService.saveFromVideo(videoAlarmReports); - } else { - videoAlarmReport.setId(list.get(0).getId()); - this.updateById(videoAlarmReport); + } else { + videoAlarmReport.setId(list.get(0).getId()); + this.updateById(videoAlarmReport); + } + } catch (ParseException e) { + e.printStackTrace(); } - } catch (ParseException e) { - e.printStackTrace(); } + + } } -- Gitblit v1.8.0