From 1cad14bca191807e18705c3a5526eda8151be439 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期一, 14 四月 2025 23:10:22 +0800 Subject: [PATCH] 批量审核和图片保存bug --- ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java | 195 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 153 insertions(+), 42 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 e80d31d..dfc786e 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 @@ -9,6 +9,7 @@ import com.ycl.entity.video.VideoAlarmReport; import com.ycl.mapper.video.VideoAlarmReportMapper; import com.ycl.service.caseHandler.IViolationsService; +import com.ycl.service.oss.OssService; import com.ycl.service.video.IVideoAlarmReportService; import com.ycl.utils.MediaFileUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -25,10 +26,12 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; +import java.time.LocalDateTime; import java.time.ZoneId; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.function.Consumer; /** * VideoAlarmReportServiceImpl @@ -44,6 +47,9 @@ private IViolationsService violationsService; @Autowired + private OssService ossService; + + @Autowired public void setMediaFileUtil(MediaFileUtil mediaFileUtil) { this.mediaFileUtil = mediaFileUtil; } @@ -53,9 +59,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,68 +143,99 @@ // 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) { - 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()); + BufferedImage image = ImageIO.read(inputStream); + Graphics2D g2 = (Graphics2D) image.getGraphics(); + g2.setColor(Color.RED); + g2.setStroke(new BasicStroke(3.0f)); + + 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()); - } + } + }); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + ImageIO.write(image, extension, os); + inputStream = new ByteArrayInputStream(os.toByteArray()); + } - picData = mediaFileUtil.savePicture(inputStream, extension); + picData = ossService.uploadImages(inputStream, extension,0); } catch (Exception e) { - e.printStackTrace(); + System.out.println("淇濆瓨鎶ヨ鏁版嵁澶辫触---鍥剧墖涓婁紶澶辫触锛�" + e.getMessage()); +// 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()) - .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) { + System.out.println("淇濆瓨鎶ヨ鏁版嵁澶辫触锛�" + e.getMessage()); +// e.printStackTrace(); } - } catch (ParseException e) { - e.printStackTrace(); } } } + @Override + public void saveFromHK(HKAlarmParam alarmParam) { + if (alarmParam != null) { + violationsService.saveFromHKVideo(alarmParam); + } + } + + @Override + public List<VideoAlarmReport> findByChannelAndAlarmNameAndTime(String channel, String alarmName, LocalDateTime alarmTime) { + + LambdaQueryWrapper<VideoAlarmReport> queryWrapper = new LambdaQueryWrapper<VideoAlarmReport>() + .eq(VideoAlarmReport::getChannel, channel).eq(VideoAlarmReport::getAlarmName, alarmName) + .between(VideoAlarmReport::getAlarmTime, alarmTime.plusMinutes(-3), alarmTime.plusMinutes(3)); + return this.list(queryWrapper); + } + private List<VideoAlarmReport> getByAlarmId(String alarmId) { LambdaQueryWrapper<VideoAlarmReport> queryWrapper = new LambdaQueryWrapper<VideoAlarmReport>().eq(VideoAlarmReport::getAlarmId, alarmId); return this.list(queryWrapper); -- Gitblit v1.8.0