From e89d76539cc91bd13acabbf25a12312d2f8bba56 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期二, 16 十二月 2025 21:27:06 +0800
Subject: [PATCH] 超过17点不接受报警
---
ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 217 insertions(+), 13 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 d5cbed7..27af299 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,23 +1,50 @@
package com.ycl.service.caseHandler.impl;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.service.video.impl.VideoPointServiceImpl;
+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>
@@ -32,38 +59,215 @@
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) {
- VideoPoint videoPoint = null;
- LambdaQueryWrapper<VideoPoint> queryWrapper = new LambdaQueryWrapper<VideoPoint>().eq(VideoPoint::getPlatResourceId, videoAlarmReport.getPlatResourceId());
- List<VideoPoint> pointList = videoPointService.list(queryWrapper);
- if (pointList.size() > 0) {
- videoPoint = pointList.get(0);
- }
+
BaseCase baseCase = BaseCase.builder().eventSource(EventSource.VIDEO.getCode()).category(QuestionCategory.VIOLATION.getCode())
- .createTime(LocalDateTime.now()).createUser(0).alarmTime(videoAlarmReport.getAlarmTime()).build();
+ .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) {
+
+ // 鏃堕棿瓒呰繃17鐐癸紝妗堜欢涓轰笉澶勭悊
+ if (videoAlarmReport.getAlarmTime().getHour() > 17) {
+ baseCase.setState(4);
+ }
+
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());
+ }
}
- baseCaseService.save(baseCase);
- violations.setId(baseCase.getId());
- baseMapper.insert(violations);
}
}
-}
+
+ @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();
+
+ // 鏃堕棿瓒呰繃17鐐癸紝妗堜欢涓轰笉澶勭悊
+ if (alarmTime.getHour() > 17) {
+ baseCase.setState(4);
+ }
+
+ 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