From eac671d64f4f6c24d7ac31646a95d5399734f346 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期三, 21 九月 2022 17:37:26 +0800
Subject: [PATCH] 报警接口图片数据处理

---
 ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java |   66 +++++++++++++++++++++++---------
 1 files changed, 47 insertions(+), 19 deletions(-)

diff --git a/ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java
index 58a069d..14414c1 100644
--- a/ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/videoAlarm/impl/VideoAlarmReportServiceImpl.java
@@ -2,14 +2,24 @@
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.dto.media.Media;
+import com.ycl.dto.media.PictureZoomParameter;
 import com.ycl.dto.videoAlarm.AlarmDataParam;
 import com.ycl.dto.videoAlarm.AlarmParam;
 import com.ycl.dto.videoAlarm.CameraInfParam;
 import com.ycl.entity.videoAlarm.VideoAlarmReport;
 import com.ycl.mapper.videoAlarm.VideoAlarmReportMapper;
 import com.ycl.service.videoAlarm.IVideoAlarmReportService;
+import com.ycl.utils.MediaFileUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.xml.bind.DatatypeConverter;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.Instant;
@@ -28,32 +38,50 @@
 @Service
 public class VideoAlarmReportServiceImpl extends ServiceImpl<VideoAlarmReportMapper, VideoAlarmReport> implements IVideoAlarmReportService {
 
+    private MediaFileUtil mediaFileUtil;
+
+    @Autowired
+    public void setMediaFileUtil(MediaFileUtil mediaFileUtil) {
+        this.mediaFileUtil = mediaFileUtil;
+    }
+
     @Override
     public void save(AlarmParam alarmParam) {
         if (alarmParam != null && alarmParam.getAlarmData().size() > 0) {
             CameraInfParam cameraInf = alarmParam.getCameraInf();
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
-            String picData = "{}";
-            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();
+            String picData = "";
+            String[] strings = alarmParam.getPicData().split(",");
+            String extension = "jpg";
 
-                    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();
-                    baseMapper.insert(videoAlarmReport);
-                } catch (ParseException e) {
-                    e.printStackTrace();
+            byte[] data = DatatypeConverter.parseBase64Binary(strings[1]);
+            InputStream inputStream = new ByteArrayInputStream(data);
+            try {
+                picData = mediaFileUtil.savePicture(inputStream, extension);
+
+                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();
+                        baseMapper.insert(videoAlarmReport);
+                    } catch (ParseException e) {
+                        e.printStackTrace();
+                    }
                 }
+            } catch (Exception e) {
+                e.printStackTrace();
             }
         }
     }

--
Gitblit v1.8.0