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/caseHandler/impl/ViolationsServiceImpl.java |  245 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 238 insertions(+), 7 deletions(-)

diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java
index 8bab837..95df9ac 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java
@@ -1,14 +1,50 @@
 package com.ycl.service.caseHandler.impl;
 
-import com.ycl.entity.caseHandler.BaseCase;
-import com.ycl.entity.caseHandler.Violations;
-import com.ycl.entity.video.VideoAlarmReport;
-import com.ycl.mapper.caseHandler.ViolationsMapper;
-import com.ycl.service.caseHandler.IViolationsService;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hikvision.artemis.sdk.util.HttpUtils;
+import com.ycl.common.util.UtilNumber;
+import com.ycl.dto.video.HKAlarmParam;
+import com.ycl.entity.caseHandler.BaseCase;
+import com.ycl.entity.caseHandler.EventSource;
+import com.ycl.entity.caseHandler.QuestionCategory;
+import com.ycl.entity.caseHandler.Violations;
+import com.ycl.entity.dict.DataDictionary;
+import com.ycl.entity.region.SccgRegion;
+import com.ycl.entity.resources.ImageResources;
+import com.ycl.entity.video.VideoAlarmReport;
+import com.ycl.entity.video.VideoPoint;
+import com.ycl.enums.common.DictTypeEnum;
+import com.ycl.mapper.caseHandler.BaseCaseMapper;
+import com.ycl.mapper.caseHandler.ViolationsMapper;
+import com.ycl.service.caseHandler.IBaseCaseService;
+import com.ycl.service.caseHandler.IViolationsService;
+import com.ycl.service.dict.IDataDictionaryService;
+import com.ycl.service.oss.OssService;
+import com.ycl.service.region.ISccgRegionService;
+import com.ycl.service.resources.IImageResourcesService;
+import com.ycl.service.video.IVideoAlarmReportService;
+import com.ycl.service.video.impl.IVideoPointService;
+import com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO;
+import net.coobird.thumbnailator.Thumbnails;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
+
 
 /**
  * <p>
@@ -21,11 +57,206 @@
 @Service
 public class ViolationsServiceImpl extends ServiceImpl<ViolationsMapper, Violations> implements IViolationsService {
 
+    private IVideoPointService videoPointService;
+    private IBaseCaseService baseCaseService;
+    private IDataDictionaryService dataDictionaryService;
+    private IImageResourcesService imageResourcesService;
+    private ISccgRegionService regionService;
+    private IVideoAlarmReportService videoAlarmReportService;
+    @Autowired
+    private OssService ossService;
+    @Resource
+    BaseCaseMapper baseCaseMapper;
+
+    @Autowired
+    UtilNumber utilNumber;
+
+    @Autowired
+    public void setVideoPointService(IVideoPointService videoPointService) {
+        this.videoPointService = videoPointService;
+    }
+
+    @Autowired
+    public void setBaseCaseService(IBaseCaseService baseCaseService) {
+        this.baseCaseService = baseCaseService;
+    }
+
+    @Autowired
+    public void setDataDictionaryService(IDataDictionaryService dataDictionaryService) {
+        this.dataDictionaryService = dataDictionaryService;
+    }
+
+    @Autowired
+    public void setImageResourcesService(IImageResourcesService imageResourcesService) {
+        this.imageResourcesService = imageResourcesService;
+    }
+
+    @Autowired
+    public void setRegionService(ISccgRegionService regionService) {
+        this.regionService = regionService;
+    }
+
+    @Autowired
+    public void setVideoAlarmReportService(IVideoAlarmReportService videoAlarmReportService) {
+        this.videoAlarmReportService = videoAlarmReportService;
+    }
+
     @Override
     public void saveFromVideo(List<VideoAlarmReport> videoAlarmReports) {
         for (VideoAlarmReport videoAlarmReport : videoAlarmReports) {
 
-            BaseCase baseCase = BaseCase.builder().build();
+            BaseCase baseCase = BaseCase.builder().eventSource(EventSource.VIDEO.getCode()).category(QuestionCategory.VIOLATION.getCode())
+                    .code(utilNumber.createCaseCode()).createTime(LocalDateTime.now()).createUser(0L).state(1).alarmTime(videoAlarmReport.getAlarmTime()).build();
+            Violations violations = new Violations();
+            VideoPoint videoPoint = videoPointService.getByCode(videoAlarmReport.getPlatResourceId());
+            if (videoPoint != null) {
+                baseCase.setLatitude(videoPoint.getLatitude());
+                baseCase.setLongitude(videoPoint.getLongitude());
+                baseCase.setStreetId(videoPoint.getStreetId());
+                baseCase.setCommunityId(videoPoint.getCommunityId());
+                baseCase.setSite(videoPoint.getAddress());
+                baseCase.setGridId(videoPoint.getGridId());
+                baseCase.setSite(videoPoint.getAddress());
+
+                baseCaseService.save(baseCase);
+                violations.setId(baseCase.getId());
+                violations.setVideoAlarmReportId(videoAlarmReport.getId());
+                violations.setVideoPointId(videoPoint.getId());
+                violations.setDescription(videoAlarmReport.getAlgoName());
+
+                List<DataDictionary> list = dataDictionaryService.queryByCode(DictTypeEnum.EVENT_GRADE_TYPE.getCode(), videoAlarmReport.getAlarmName().trim());
+                if (list.size() > 0) {
+                    violations.setGradeId(list.get(0).getId());
+                }
+
+                baseMapper.insert(violations);
+
+                try {
+                    ImageResources imageResources = new ImageResources();
+                    imageResources.setType("05");
+                    imageResources.setBelongToId(baseCase.getId());
+                    imageResources.setUrl(videoAlarmReport.getPicData());
+                    imageResources.setCreateTime(LocalDateTime.now());
+
+                    ImageResources imageResources1 = new ImageResources();
+                    BeanUtil.copyProperties(imageResources, imageResources1);
+                    imageResources1.setType("01");
+
+                    imageResourcesService.save(imageResources1);
+                    imageResourcesService.save(imageResources);
+                } catch (Exception ex) {
+                    System.out.println("娴峰悍鎺ㄩ�佷繚瀛樺紓甯革細" + ex.getMessage());
+                }
+            }
         }
     }
-}
+
+    @Override
+    public void saveFromHKVideo(HKAlarmParam alarmParam) {
+
+        SccgRegion region = regionService.getByCode(alarmParam.getPrefectureCodeIdaas());
+        VideoPoint videoPoint = videoPointService.getByCode(alarmParam.getEventNumber());
+
+        List<DataDictionary> dataDictionaries = dataDictionaryService.queryByRemark(alarmParam.getSubject());
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime alarmTime = LocalDateTime.parse(alarmParam.getIncidentDate(), df);
+
+        BaseCase baseCase = BaseCase.builder().eventSource(1).category(QuestionCategory.VIOLATION.getCode())
+                .code(utilNumber.createCaseCode()).createTime(LocalDateTime.now()).createUser(0L).state(1).
+                alarmTime(alarmTime).build();
+        Violations violations = new Violations();
+
+        baseCase.setLatitude(alarmParam.getLatitude());
+        baseCase.setLongitude(alarmParam.getLongitude());
+        if (region != null) {
+            baseCase.setStreetId(region.getId().intValue());
+        }
+        baseCase.setSite(alarmParam.getScene());
+
+        baseCaseService.save(baseCase);
+        violations.setId(baseCase.getId());
+
+        if (dataDictionaries.size() > 0) {
+            violations.setGradeId(dataDictionaries.get(0).getId());
+        }
+
+        violations.setDescription(alarmParam.getEventContent());
+        violations.setInformant(alarmParam.getReportUserName());
+        violations.setInformantPhoneCode(alarmParam.getContact());
+        if (videoPoint != null) {
+            violations.setVideoPointId(videoPoint.getId());
+        }
+
+        String[] imgs = alarmParam.getFileUrl().split(",");
+
+        VideoAlarmReport videoAlarmReport = new VideoAlarmReport();
+        videoAlarmReport.setPlatResourceId(alarmParam.getEventNumber());
+        String img0 = "";
+        if (imgs.length > 0) {
+            img0 = saveOSS(imgs[0]);
+            videoAlarmReport.setPicData(img0);
+        }
+        videoAlarmReport.setAlarmTime(alarmTime);
+        videoAlarmReport.setAlarmId(alarmParam.getEventId());
+        videoAlarmReport.setAlgoName(alarmParam.getContact());
+        videoAlarmReport.setAlarmName(alarmParam.getSubject());
+        videoAlarmReportService.save(videoAlarmReport);
+
+        violations.setVideoAlarmReportId(videoAlarmReport.getId());
+        baseMapper.insert(violations);
+
+        try {
+            for (int i = 0; i < imgs.length; i++) {
+                ImageResources imageResources = new ImageResources();
+                imageResources.setType("04");
+                imageResources.setBelongToId(baseCase.getId());
+                imageResources.setUrl(i == 0 ? img0 : saveOSS(imgs[i]));
+                imageResources.setCreateTime(LocalDateTime.now());
+
+                ImageResources imageResources1 = new ImageResources();
+                BeanUtil.copyProperties(imageResources, imageResources1);
+                imageResources1.setType("01");
+
+                imageResourcesService.save(imageResources1);
+                imageResourcesService.save(imageResources);
+            }
+        } catch (Exception ex) {
+
+        }
+
+    }
+
+    private String saveOSS(String hkUrl) {
+        InputStream inputStream = getImageStream(hkUrl);
+        if (inputStream != null) {
+            String picData = ossService.uploadImages(inputStream, ".png",0);
+            return picData;
+        } else return "";
+    }
+
+    private InputStream getImageStream(String url) {
+        try {
+            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
+            connection.setReadTimeout(5000);
+            connection.setConnectTimeout(5000);
+            connection.setRequestMethod("GET");
+            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
+                InputStream inputStream = connection.getInputStream();
+                ByteArrayOutputStream outs = new ByteArrayOutputStream();
+                Thumbnails.of(inputStream).scale(0.6).outputQuality(1).toOutputStream(outs);
+                InputStream ins = new ByteArrayInputStream(outs.toByteArray());
+                return ins;
+            }
+        } catch (IOException e) {
+            System.out.println("鑾峰彇缃戠粶鍥剧墖鍑虹幇寮傚父锛屽浘鐗囪矾寰勪负锛�" + url);
+
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Override
+    public List<VideoAndAreaVO> selectType() {
+        return baseCaseMapper.selectType();
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0