Przeglądaj źródła

Merge branch 'dev-2.0' into dev-2.0_test

lyq 11 miesięcy temu
rodzic
commit
d814dd2ff5

+ 2 - 1
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/controller/AlarmEventController.java

@@ -11,6 +11,7 @@ import com.sooka.sponest.event.centereventtreportmessage.domain.CentereventTRepo
 import com.sooka.sponest.event.centereventtreportmessage.service.ICentereventTReportmessageService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.MapUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -100,7 +101,7 @@ public class AlarmEventController {
         try {
             CentereventTReportmessage tReportMessage = new CentereventTReportmessage();
             tReportMessage.setId(eventCode);
-            tReportMessage.setSource("大华摄像头-" + daHuaFireEventVO.getInfo().getAlarmTypeName());
+            tReportMessage.setSource("大华摄像头-" + MapUtils.getString(daHuaFireEventVO.getInfo(), "alarmType"));
             tReportMessage.setContext(jsonStr);
             centereventTReportmessageService.insertCentereventTReportmessage(tReportMessage);
         } catch (Exception e) {

+ 14 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/controller/CenterEventReportController.java

@@ -54,6 +54,20 @@ public class CenterEventReportController extends BaseController {
         return R.ok(centerEventReportService.getEventTotal(visuForestCloudMapVO));
     }
 
+    @ApiOperation("查询事件总数")
+    @PostMapping("/getTotalMore")
+    public R getTotalMore(@RequestBody VisuForestCloudMapVO visuForestCloudMapVO) {
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("total", centerEventReportService.getEventTotal(visuForestCloudMapVO));
+        visuForestCloudMapVO.setDiff(0L);// 当日
+        resultMap.put("day", centerEventReportService.getEventTotal(visuForestCloudMapVO));
+        LocalDate currentDate = LocalDate.now();
+        int dayOfMonth = currentDate.getDayOfMonth() - 1;
+        visuForestCloudMapVO.setDiff(Long.valueOf(dayOfMonth));// 当月
+        resultMap.put("month", centerEventReportService.getEventTotal(visuForestCloudMapVO));
+        return R.ok(resultMap);
+    }
+
     @ApiOperation("事件来源、类型统计")
     @PostMapping("/getEventSourceAndTypeStatistics")
     public R getEventSourceAndTypeStatistics(@RequestBody VisuForestCloudMapVO visuForestCloudMapVO) {

+ 69 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/dahua/BayonetInfoVO.java

@@ -0,0 +1,69 @@
+package com.sooka.sponest.event.centereventteventcatalogue.domain.dahua;
+
+import com.sooka.sponest.monitor.api.domain.CenterdataTCamera;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Map;
+
+@Data
+public class BayonetInfoVO {
+
+    private String chnId;
+
+    private String orgName;
+
+    private String alarmPictureSize;
+
+    private String nodeCode;
+
+    private String deviceCode;
+
+    private String alarmCode;
+
+    private String alarmPicture;
+
+    private Long nodeType;
+
+    private Long alarmDate;
+
+    private String deviceName;
+
+    private Long alarmGrade;
+
+    private Boolean isSave;
+
+    private Map<String, Object> extend;
+
+    private Long unitSeq;
+
+    private Long unitType;
+
+    private String alarmType;
+
+    private Long channelSeq;
+
+    private String orgCode;
+
+    private String channelName;
+
+    private Long alarmStat;
+
+    private Boolean event;
+
+    private Boolean isEvent;
+
+    public String toString(CenterdataTCamera centerdataTCamera) {
+        String toString = new ToStringBuilder(this, ToStringStyle.NO_CLASS_NAME_STYLE)
+//                .append("行政区:", centerdataTCamera.getCameraName())
+                .append("瞭望塔:", getChannelName())
+//                .append("方向:", getDirection())
+//                .append("距离:", getDistance())
+//                .append("高程:", getHeight())
+                .append("经度:", centerdataTCamera.getLongitude())
+                .append("纬度:", centerdataTCamera.getLatitude())
+                .toString().replaceAll("=", "");
+        return toString.substring(1, toString.length() - 1);
+    }
+}

+ 15 - 1
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/dahua/DaHuaFireEventVO.java

@@ -3,6 +3,8 @@ package com.sooka.sponest.event.centereventteventcatalogue.domain.dahua;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 @Data
 public class DaHuaFireEventVO {
@@ -25,18 +27,30 @@ public class DaHuaFireEventVO {
     /**
      * 报文内容
      */
-    private InfoVO info;
+    private Map<String, Object> info;
 
     /**
      * 子系统名称
      */
     private String subsystem;
 
+    private List<Long> userIds;
+
+    private String sid;
+
     /**
      * 域ID-级联消息下级发给mac时需要带上
      */
     private String domainId;
 
+    private String infoArray;
+
+    private String protocol;
+
+    private String supplementFlag;
+
+    private String uuid;
+
     /**
      * 创建时间
      */

+ 67 - 14
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/impl/AlarmEventServiceImpl.java

@@ -13,9 +13,7 @@ import com.sooka.sponest.event.centereventtdeptevent.domain.CentereventDeptEvent
 import com.sooka.sponest.event.centereventtdeptevent.service.ICentereventDeptEventService;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.CentereventTEventcatalogue;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.DaHuaEventBO;
-import com.sooka.sponest.event.centereventteventcatalogue.domain.dahua.DaHuaFireEventVO;
-import com.sooka.sponest.event.centereventteventcatalogue.domain.dahua.DaHuaOtherEventVO;
-import com.sooka.sponest.event.centereventteventcatalogue.domain.dahua.PictureVO;
+import com.sooka.sponest.event.centereventteventcatalogue.domain.dahua.*;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.haikang.EventsVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.haikang.HaiKangEventVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.sensor.SensorEventVo;
@@ -32,6 +30,7 @@ import com.sooka.sponest.exchange.api.domain.FireEventVO;
 import com.sooka.sponest.monitor.api.RemoteMonitorService;
 import com.sooka.sponest.monitor.api.domain.CenterdataTAidevicedept;
 import com.sooka.sponest.monitor.api.domain.CenterdataTCamera;
+import org.apache.commons.collections4.MapUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -237,19 +236,23 @@ public class AlarmEventServiceImpl implements AlarmEventService {
     @Transactional
     @Override
     public String insertDaHuaEvent(DaHuaFireEventVO daHuaFireEventVO) {
-        Long type = daHuaFireEventVO.getInfo().getAlarmType();
+        Long type = MapUtils.getLong(daHuaFireEventVO.getInfo(), "alarmType");
         // 313:烟雾,5122:热感
         if (type == 313 || type == 5122) {
             return insertFireEvent(daHuaFireEventVO);
+        } else if (type == 302 || type == 303 || type == 962 || type == 963 || type == 964 || type == 965) {
+            // 302:绊线入侵,303:区域入侵 ,962:人穿越警戒线,963:机动车穿越警戒线,964:人穿越区域,965:机动车穿越区域
+            return insertBayonetEvent(daHuaFireEventVO);
         }
         return "";
     }
 
     public String insertFireEvent(DaHuaFireEventVO daHuaFireEventVO) {
+        InfoVO infoVO = JSONObject.parseObject(JSON.toJSONString(daHuaFireEventVO.getInfo()), InfoVO.class);
         // 验证是否配置摄像头通道
-        CenterdataTCamera centerdataTCamera = SpringUtils.getBean(RemoteMonitorService.class).getInfoByChannelCode(daHuaFireEventVO.getInfo().getChannelSn()).getData();
+        CenterdataTCamera centerdataTCamera = SpringUtils.getBean(RemoteMonitorService.class).getInfoByChannelCode(infoVO.getChannelSn()).getData();
         if (StringUtils.isNull(centerdataTCamera)) {
-            logger.info(ERROR_MSG_CHANNEL, daHuaFireEventVO.getInfo().getChannelSn());
+            logger.info(ERROR_MSG_CHANNEL, infoVO.getChannelSn());
             return "";
         }
         // 验证是否配置指挥中心
@@ -260,12 +263,12 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         }
         // 事件目录
         //四平市双辽市卧虎镇贺家村热感应 + 2024-01-05 10:32:54 + 火情报警
-        String eventName = daHuaFireEventVO.getInfo().getChannelName() + daHuaFireEventVO.getInfo().getAlarmDateStr() + daHuaFireEventVO.getInfo().getAlarmTypeName();
-        String eventDescription = daHuaFireEventVO.getInfo().toString(centerdataTCamera);
-        String longitude = StringUtils.isEmpty(daHuaFireEventVO.getInfo().getFirePoint()) ? centerdataTCamera.getLongitude() : daHuaFireEventVO.getInfo().getFirePoint()[0].getGpsX();
-        String latitude = StringUtils.isEmpty(daHuaFireEventVO.getInfo().getFirePoint()) ? centerdataTCamera.getLatitude() : daHuaFireEventVO.getInfo().getFirePoint()[0].getGpsY();
-        String reportor = daHuaFireEventVO.getInfo().getDeviceName();
-        Date reportTime = DateUtils.timestampToTime(daHuaFireEventVO.getInfo().getAlarmDate());
+        String eventName = infoVO.getChannelName() + infoVO.getAlarmDateStr() + infoVO.getAlarmTypeName();
+        String eventDescription = infoVO.toString(centerdataTCamera);
+        String longitude = StringUtils.isEmpty(infoVO.getFirePoint()) ? centerdataTCamera.getLongitude() : infoVO.getFirePoint()[0].getGpsX();
+        String latitude = StringUtils.isEmpty(infoVO.getFirePoint()) ? centerdataTCamera.getLatitude() : infoVO.getFirePoint()[0].getGpsY();
+        String reportor = infoVO.getDeviceName();
+        Date reportTime = DateUtils.timestampToTime(infoVO.getAlarmDate());
         String address = centerdataTCamera.getCameraRegion();
         CentereventTEventcatalogue centereventTEventcatalogue = new CentereventTEventcatalogue("1", null, eventName, eventDescription, longitude, latitude, reportor, reportTime, address,
                 REPORTING_SOURCE_1, "上报", FOREST_EVENT_STATUS_1, centerdataTCamera.getId(), centerdataTCamera.getCameraName(), daHuaFireEventVO.getCreateTime());
@@ -274,8 +277,8 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         this.insertEventDept(centereventTEventcatalogue, listDept);
         // 事件日志
         String logId = this.insertEventLog(centereventTEventcatalogue);
-        if (StringUtils.isNotBlank(daHuaFireEventVO.getInfo().getPicture())) {
-            String[] pictures = daHuaFireEventVO.getInfo().getPicture().split(",");
+        if (StringUtils.isNotBlank(infoVO.getPicture())) {
+            String[] pictures = infoVO.getPicture().split(",");
             for (String picture : pictures) {
                 CenterdataTAttach tAttach = new CenterdataTAttach();
                 tAttach.setBusId(logId);
@@ -289,6 +292,56 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         return centereventTEventcatalogue.getEventCode();
     }
 
+    private String insertBayonetEvent(DaHuaFireEventVO daHuaFireEventVO) {
+        BayonetInfoVO infoVO = JSONObject.parseObject(JSON.toJSONString(daHuaFireEventVO.getInfo()), BayonetInfoVO.class);
+        // 验证是否配置摄像头
+        List<CenterdataTCamera> centerdataTCameras = SpringUtils.getBean(RemoteMonitorService.class).selectCameraByDepIdGong(new CenterdataTCamera(null, infoVO.getDeviceName())).getData();
+        if (StringUtils.isEmpty(centerdataTCameras) || 1 != centerdataTCameras.size()) {
+            logger.info("无法匹配相关设备!摄像头为:{}", infoVO.getDeviceName());
+            return "";
+        }
+        // 验证是否配置指挥中心
+        CenterdataTCamera centerdataTCamera = centerdataTCameras.get(0);
+        List<CenterdataTAidevicedept> listDept = SpringUtils.getBean(RemoteMonitorService.class).listForCommandCenter(centerdataTCamera.getId(), "1", "1").getData();
+        if (StringUtils.isEmpty(listDept)) {
+            logger.info(ERROR_MSG_DEPT, centerdataTCamera.getCameraCode());
+            return "";
+        }
+        // 验证事件类型是否配置对应报文码值--只能从数据库配
+        CentereventTEventtype centereventTEventtype = centereventTEventtypeService.selectCentereventTEventtypeByCode(infoVO.getAlarmType());
+        if (StringUtils.isNull(centereventTEventtype)) {
+            logger.info("无法匹配相关事件!报文码值为:{}", infoVO.getAlarmType());
+            return "";
+        }
+        // 事件目录
+        String eventType = centereventTEventtype.getParentId();
+        String eventTypeXl = centereventTEventtype.getId();
+        String eventName = infoVO.getChannelName() + DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, new Date(infoVO.getAlarmDate() * 1000)) + centereventTEventtype.getEventTypeName();
+        String eventDescription = infoVO.toString(centerdataTCamera);
+        String longitude = centerdataTCamera.getLongitude();
+        String latitude = centerdataTCamera.getLatitude();
+        String reportor = centerdataTCamera.getCameraName();
+        Date reportTime = DateUtils.timestampToTime(infoVO.getAlarmDate() * 1000);
+        String address = centerdataTCamera.getCameraRegion();
+        CentereventTEventcatalogue centereventTEventcatalogue = new CentereventTEventcatalogue(eventType, eventTypeXl, eventName, eventDescription, longitude, latitude, reportor, reportTime, address,
+                REPORTING_SOURCE_1, "上报", FOREST_EVENT_STATUS_1, centerdataTCamera.getId(), centerdataTCamera.getCameraName(), daHuaFireEventVO.getCreateTime());
+        this.insertEventCatalogue(centereventTEventcatalogue);
+        // 事件部门
+        this.insertEventDept(centereventTEventcatalogue, listDept);
+        // 事件日志
+        String logId = this.insertEventLog(centereventTEventcatalogue);
+        if (StringUtils.isNotBlank(infoVO.getAlarmPicture())) {
+            CenterdataTAttach tAttach = new CenterdataTAttach();
+            tAttach.setBusId(logId);
+            tAttach.setAttachPath(infoVO.getAlarmPicture());
+            tAttach.setBusIndx(BUS_INDEX_2);
+            tAttach.setBusSource("DH_1");
+            tAttach.setFileType(FILE_TYPE_1);
+            remoteDataService.insertAttach(tAttach);
+        }
+        return centereventTEventcatalogue.getEventCode();
+    }
+
     @Override
     public String updateFireEventImage(DaHuaEventBO eventBO) throws ClientException {
         // 通过eventCode查询详情

+ 3 - 0
src/main/resources/mapper/centereventteventcatalogue/CenterEventReportMapper.xml

@@ -15,6 +15,9 @@
         <if test="day != null and day != ''">
             and DATE_FORMAT(a.create_time,'%Y-%m-%d') = #{day}
         </if>
+        <if test="diff != null">
+            and DATEDIFF( now(), a.create_time ) &lt;= #{diff}
+        </if>
         <if test="eventTypeId != null and eventTypeId.length > 0">
             and event_type_xl in
             <foreach item="eventTypeId" collection="eventTypeId" open="(" separator="," close=")">