From 3cf5e9483f60c94d29df1a79bc0c1ca910ca46ef Mon Sep 17 00:00:00 2001
From: wl <173@qq.com>
Date: 星期二, 13 十二月 2022 14:58:24 +0800
Subject: [PATCH] fix: 执法事件对外接口

---
 ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java |   78 +++++++++++++++++++++++----------------
 1 files changed, 46 insertions(+), 32 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 4cac604..3ccd611 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
@@ -1,6 +1,8 @@
 package com.ycl.service.video.impl;
 
+import com.alibaba.druid.util.StringUtils;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.dto.video.AlarmDataParam;
 import com.ycl.dto.video.AlarmParam;
@@ -49,46 +51,58 @@
 
     @Override
     public void save(AlarmParam alarmParam) {
-        if (alarmParam != null && alarmParam.getAlarmData().size() > 0) {
+        if (alarmParam != null && alarmParam.getAlarmData() != null) {
             CameraInfParam cameraInf = alarmParam.getCameraInf();
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
             String picData = "";
-            String[] strings = alarmParam.getPicData().split(",");
-            String extension = "jpg";
+            if (!StringUtils.isEmpty(alarmParam.getPicData())) {
+//                String[] strings = alarmParam.getPicData().split(",");
+                String extension = "jpg";
 
-            byte[] data = DatatypeConverter.parseBase64Binary(strings[1]);
-            InputStream inputStream = new ByteArrayInputStream(data);
-            try {
-                picData = mediaFileUtil.savePicture(inputStream, extension);
-                List<VideoAlarmReport> videoAlarmReports = new ArrayList<>();
-                for (int i = 0; i < alarmParam.getAlarmData().size(); i++) {
-                    AlarmDataParam alarmData = alarmParam.getAlarmData().get(i);
-                    /******************** 澶勭悊鍥剧墖 **********************/
-                    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();
-                        videoAlarmReports.add(videoAlarmReport);
-
-                    } catch (ParseException e) {
-                        e.printStackTrace();
-                    }
+                byte[] data = DatatypeConverter.parseBase64Binary(alarmParam.getPicData());
+                InputStream inputStream = new ByteArrayInputStream(data);
+                try {
+                    picData = mediaFileUtil.savePicture(inputStream, extension);
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
-                this.saveBatch(videoAlarmReports, videoAlarmReports.size());
+            }
+            List<VideoAlarmReport> videoAlarmReports = new ArrayList<>();
 
-                violationsService.saveFromVideo(videoAlarmReports);
-            } catch (Exception e) {
+            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) {
+
+                    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();
             }
         }
     }
+
+    private List<VideoAlarmReport> getByAlarmId(String alarmId) {
+        LambdaQueryWrapper<VideoAlarmReport> queryWrapper = new LambdaQueryWrapper<VideoAlarmReport>().eq(VideoAlarmReport::getAlarmId, alarmId);
+        return this.list(queryWrapper);
+    }
 }

--
Gitblit v1.8.0