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 | 210 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 195 insertions(+), 15 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 bfe056f..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,25 +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.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> @@ -34,49 +59,204 @@ 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(0L).state(1).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) { 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()); - violations.setVideoAlarmReportId(videoAlarmReport.getId()); - violations.setVideoPointId(videoPoint.getId()); - violations.setDescription(videoAlarmReport.getAlgoName()); - 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(); + + 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(); + return baseCaseMapper.selectType(); } } \ No newline at end of file -- Gitblit v1.8.0