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