From fd071f321fb967f36cf795fc40b4f2e87e89e69d Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期一, 12 十二月 2022 22:38:24 +0800 Subject: [PATCH] 预警研判 --- ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml | 43 +++++++++++---------- ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java | 7 +++ ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java | 1 ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java | 2 ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java | 32 ++++++++++----- 5 files changed, 53 insertions(+), 32 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java index 79ba342..6e80c0d 100644 --- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java @@ -42,7 +42,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import sun.util.resources.cldr.dyo.LocaleNames_dyo; + import javax.annotation.Resource; import java.math.BigDecimal; 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 40f34f5..b3e236a 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 @@ -63,6 +63,7 @@ baseCaseService.save(baseCase); violations.setId(baseCase.getId()); violations.setVideoAlarmReportId(videoAlarmReport.getId()); + violations.setVideoPointId(videoPoint.getId()); baseMapper.insert(violations); } } 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 25df2b8..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 @@ -2,6 +2,7 @@ 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; @@ -55,10 +56,10 @@ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); String picData = ""; if (!StringUtils.isEmpty(alarmParam.getPicData())) { - String[] strings = alarmParam.getPicData().split(","); +// String[] strings = alarmParam.getPicData().split(","); String extension = "jpg"; - byte[] data = DatatypeConverter.parseBase64Binary(strings[1]); + byte[] data = DatatypeConverter.parseBase64Binary(alarmParam.getPicData()); InputStream inputStream = new ByteArrayInputStream(data); try { picData = mediaFileUtil.savePicture(inputStream, extension); @@ -67,14 +68,13 @@ } } List<VideoAlarmReport> videoAlarmReports = new ArrayList<>(); -// for (int i = 0; i < alarmParam.getAlarmData().size(); i++) { + 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()) @@ -83,16 +83,26 @@ .alarmId(alarmData.getAlarmID()).algoType(alarmData.getAlgoType()) .algoName(alarmData.getAlgoName()).alarmObj(JSON.toJSONString(alarmData.getAlarmObject())) .build(); - videoAlarmReports.add(videoAlarmReport); + 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(); } -// } - this.saveBatch(videoAlarmReports, videoAlarmReports.size()); - - violationsService.saveFromVideo(videoAlarmReports); - } } + + private List<VideoAlarmReport> getByAlarmId(String alarmId) { + LambdaQueryWrapper<VideoAlarmReport> queryWrapper = new LambdaQueryWrapper<VideoAlarmReport>().eq(VideoAlarmReport::getAlarmId, alarmId); + return this.list(queryWrapper); + } } diff --git a/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java b/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java index c3abe5f..8e0e8a1 100644 --- a/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java +++ b/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java @@ -17,7 +17,14 @@ private String picData; private String grade; private String address; + private String algoName; + private String platResourceId; + private String videoCode; @JsonFormat(timezone = "GMT",pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime alarmTime; + + @JsonFormat(timezone = "GMT",pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime currentAlarmTime; + } diff --git a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml index 0c4512f..bbea396 100644 --- a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml +++ b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml @@ -229,16 +229,20 @@ </select> <select id="selectVideoInspection" resultType="com.ycl.vo.casePool.BaseCaseVO"> - SELECT t1.id as baseId, + SELECT t1.id as baseId, t1.`code`, t3.`name`, t3.url_address, t3.longitude, t3.latitude, t4.pic_data, - t5.`name` as grade, + t5.`name` as grade, t3.address, - t1.alarm_time as alarmTime + t3.plat_resource_id as platResourceId, + t3.code as videoCode, + t1.alarm_time as alarmTime, + t1.alarm_time as currentAlarmTime, + t4.algo_name as algoName FROM ums_base_case t1 LEFT JOIN ums_violations t2 ON t1.id = t2.id LEFT JOIN ums_video_point t3 on t2.video_point_id = t3.id @@ -251,7 +255,8 @@ <select id="selectRegisterCount" resultType="java.lang.Long"> select count(1) from ums_base_case - where state in(2,6) and to_days(create_time) = TO_DAYS(now()); + where state in (2, 6) + and to_days(create_time) = TO_DAYS(now()); </select> <select id="dayCount" resultType="java.lang.Integer"> @@ -295,7 +300,7 @@ <where> t1.category=1 <if test="beginTime !=''and beginTime!=null and endTime!=''and endTime!=null"> - and t1.create_time BETWEEN #{beginTime} + and t1.create_time BETWEEN #{beginTime} AND #{endTime} </if> @@ -303,27 +308,25 @@ </select> <select id="areaCount" resultType="com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO"> - SELECT - t2.region_name, - COUNT( 1 ) AS count + SELECT t2.region_name, + COUNT(1) AS count FROM `ums_base_case` t1 - LEFT JOIN ums_sccg_region t2 ON t1.street_id = t2.id + LEFT JOIN ums_sccg_region t2 + ON t1.street_id = t2.id GROUP BY street_id </select> <select id="selectDelayVOList" resultType="com.ycl.dto.cockpitManage.DelayDO"> - SELECT - t1.`code`, - t3.description, - t2.start_time, - t2.end_time, - t2.limit_time - FROM - `ums_base_case` t1 - LEFT JOIN ums_dispose_record t2 ON t1.id = t2.base_case_id - LEFT JOIN ums_violations t3 on t1.id=t3.id - WHERE t2.workflow_config_step_id IN (1,2) + SELECT t1.`code`, + t3.description, + t2.start_time, + t2.end_time, + t2.limit_time + FROM `ums_base_case` t1 + LEFT JOIN ums_dispose_record t2 ON t1.id = t2.base_case_id + LEFT JOIN ums_violations t3 on t1.id = t3.id + WHERE t2.workflow_config_step_id IN (1, 2) </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0