瀏覽代碼

海康烟雾报警事件

Memory_LG 2 周之前
父節點
當前提交
51a21741a7

文件差異過大導致無法顯示
+ 142 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/controller/AlarmEventController.java


+ 85 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/haikang/EventSmokeVo.java

@@ -0,0 +1,85 @@
+package com.sooka.sponest.event.centereventteventcatalogue.domain.haikang;
+
+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.List;
+import java.util.Map;
+
+@Data
+public class EventSmokeVo {
+    private String componentId;
+    private String deploySubType;
+    private String deploymentId;
+    private String eventId;
+    private List<String> tenants;
+    private int eventLvl;
+    private String eventName;
+    private String eventType;
+    private String eventTypeCode;
+    private String happenTime;
+    private String stopTime;
+    private String snappedPicUrl;
+    private String srcIndex;
+    private String externalIndexCode;
+    private String srcName;
+    private String srcType;
+    private int status;
+    private int eventConfirmStatus;
+    private String strEventType;
+    private int timeout;
+    private Map<String, Object> data;
+    private String eventSource;
+    private String tenantIndexCode;
+    private int verifyTimeLimit;
+    private String algorithmCode;
+    private String rect;
+    private int lockTime;
+    private String deploymentIdDetail;
+    private String aiFunctionCode;
+    private int presetIndex;
+    private String tag;
+    private String ruleId;
+    private int lockTimeBefore;
+    private String longitude;
+    private String baseAlgorithmId;
+    private String locationName;
+    private String address;
+    private int level;
+    private boolean verified;
+    private boolean videoLock;
+    private String resourceName;
+    private Map<String, Object> aiStrategyOutput;
+    private String resourceIndexCode;
+    private List<Map<String, Object>> ruleRegion;
+    private String applicant;
+    private long eventCode;
+    private String jobId;
+    private String targetList;
+    private String ptzValue;
+    private String region;
+    private long subEventCode;
+    private String taskId;
+    private String resourceType;
+    private String externalIndexCodeDetail;
+    private int strategyStatus;
+    private String presetIndexCode;
+    private boolean manualConfirmFlag;
+    private boolean autoVerify;
+
+
+    public String toString(CenterdataTCamera centerdataTCamera) {
+        String toString = new ToStringBuilder(this, ToStringStyle.NO_CLASS_NAME_STYLE)
+                .append("行政区:", centerdataTCamera.getCameraRegion())
+                .append("瞭望塔:", getSrcName())
+//                .append("方向:", getDirection())
+//                .append("距离:", getDistance())
+//                .append("高程:", getHeight())
+                .append("经度:", centerdataTCamera.getLongitude())
+                .append("纬度:", centerdataTCamera.getLatitude())
+                .toString().replaceAll("=", "");
+        return toString.substring(1, toString.length() - 1);
+    }
+}

+ 19 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/haikang/HaiKangEventSmokeVo.java

@@ -0,0 +1,19 @@
+package com.sooka.sponest.event.centereventteventcatalogue.domain.haikang;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class HaiKangEventSmokeVo {
+
+    private String ability;
+
+    private EventSmokeVo[] events;
+
+    private String quids;
+
+    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
+    public Date sendTime;
+}

+ 2 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/AlarmEventService.java

@@ -4,6 +4,7 @@ import com.dahuatech.icc.exception.ClientException;
 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.haikang.HaiKangEventSmokeVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.haikang.HaiKangEventVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.sensor.SensorEventVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.tower.TowerEventVo;
@@ -18,6 +19,7 @@ public interface AlarmEventService {
 
     // 海康城管事件
     String insertHaiKangCityEvent(HaiKangEventVo haiKangEventVo);
+    String insertHaiKangSmokeEvent(HaiKangEventSmokeVo eventSmokeVo);
 
 
     // 大华火情事件

+ 62 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/impl/AlarmEventServiceImpl.java

@@ -16,7 +16,9 @@ import com.sooka.sponest.event.centereventtdeptevent.service.ICentereventDeptEve
 import com.sooka.sponest.event.centereventteventcatalogue.domain.CentereventTEventcatalogue;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.DaHuaEventBO;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.dahua.*;
+import com.sooka.sponest.event.centereventteventcatalogue.domain.haikang.EventSmokeVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.haikang.EventsVo;
+import com.sooka.sponest.event.centereventteventcatalogue.domain.haikang.HaiKangEventSmokeVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.haikang.HaiKangEventVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.sensor.SensorEventVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.tower.TowerEventVo;
@@ -212,6 +214,7 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         centereventTEventcatalogue.setCreateBy(centerdataTCamera.getId());
         centereventTEventcatalogue.setCreateName(centerdataTCamera.getCameraName());
         centereventTEventcatalogue.setCreateTime(null == createTime ? DateUtils.getNowDate() : createTime);
+        logger.info("写入事件主表:-->{}", centereventTEventcatalogue.getEventCode());
         centereventTEventcatalogueService.insertCentereventTEventcatalogue(centereventTEventcatalogue);
         return centereventTEventcatalogue;
     }
@@ -267,6 +270,7 @@ public class AlarmEventServiceImpl implements AlarmEventService {
             centereventTDeptEvent.setCreateTime(centereventTEventcatalogue.getCreateTime());
             centereventTDeptEventService.insertCentereventTDeptEvent(centereventTDeptEvent);
         });
+        logger.info("写入事件部门表:-->{}", centereventTEventcatalogue.getEventCode());
     }
 
     // 事件日志
@@ -285,6 +289,7 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         if(StringUtils.isNotEmpty(centereventTEventcatalogue.getLatitude())){
             centereventTFireLog.setLatitude(centereventTEventcatalogue.getLatitude());
         }
+        logger.info("写入事件部门表:-->{}", centereventTEventcatalogue.getEventCode());
         centereventTFireLogService.insertCentereventTFireLog(centereventTFireLog);
         return centereventTFireLog.getId();
     }
@@ -787,4 +792,61 @@ public class AlarmEventServiceImpl implements AlarmEventService {
 
         return alarmEventMapper.insertDrone(alarmData);
     }
+
+
+    @Transactional
+    @Override
+    public String insertHaiKangSmokeEvent(HaiKangEventSmokeVo eventSmokeVo) {
+        EventSmokeVo eventsVo = eventSmokeVo.getEvents()[0];
+        // 验证是否配置摄像头通道
+        CenterdataTCamera centerdataTCamera = SpringUtils.getBean(RemoteMonitorService.class).getInfoByChannelCode(eventsVo.getSrcIndex()).getData();
+        if (StringUtils.isNull(centerdataTCamera)) {
+            logger.info(ERROR_MSG_CHANNEL, eventsVo.getSrcIndex());
+            return "";
+        }
+        // 验证是否配置指挥中心
+        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(eventsVo.getEventTypeCode());
+        if (StringUtils.isNull(centereventTEventtype)) {
+            logger.info("无法匹配相关事件!报文码值为:{}", eventsVo.getEventTypeCode());
+            return "";
+        }
+        // 事件目录
+        String eventType = centereventTEventtype.getParentId();
+        String eventTypeXl = centereventTEventtype.getId();
+        String eventName = centerdataTCamera.getCameraName() + DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, eventSmokeVo.getSendTime()) + eventsVo.getEventName();
+        String eventDescription = eventsVo.toString(centerdataTCamera);
+        String longitude = centerdataTCamera.getLongitude();
+        String latitude = centerdataTCamera.getLatitude();
+        String reportor = centerdataTCamera.getCameraName();
+        Date reportTime = eventSmokeVo.getSendTime();
+        String address = eventsVo.getSrcName();
+        CentereventTEventcatalogue centereventTEventcatalogue = new CentereventTEventcatalogue(eventType, eventTypeXl, eventName, eventDescription, longitude, latitude, reportor, reportTime, address);
+        centereventTEventcatalogue = this.insertEventCatalogue(centereventTEventcatalogue, centerdataTCamera, null);
+        // 事件部门
+        this.insertEventDept(centereventTEventcatalogue, listDept);
+        // 事件日志
+        String logId = this.insertEventLog(centereventTEventcatalogue);
+        if (StringUtils.isNotBlank(eventsVo.getSnappedPicUrl())) {
+            CenterdataTAttach tAttach = new CenterdataTAttach();
+            tAttach.setBusId(logId);
+            JSONObject jsonObject = JSON.parseObject(MapUtils.getString(eventsVo.getData(),"transInfo"));
+            String imageUrl = jsonObject.getString("imageUrl");
+
+            Optional.ofNullable(NetworkImageToMultipartFile.downloadImageToMultipartFile(imageUrl))
+                    .map(multipartFile -> fileService.upload(multipartFile).getData())
+                    .ifPresent(data -> tAttach.setAttachPath(data.getUrl()));
+
+            tAttach.setBusIndx("bus_indx_smoke");
+            tAttach.setBusSource("HIK_3");
+            tAttach.setFileType(FILE_TYPE_1);
+            remoteDataService.insertAttach(tAttach);
+        }
+        return centereventTEventcatalogue.getEventCode();
+    }
 }

+ 1 - 1
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/impl/CenterEventViewServiceImpl.java

@@ -135,7 +135,7 @@ public class CenterEventViewServiceImpl extends BaseService implements ICenterEv
         // 查附件
         List<CenterdataTAttach> files = remoteDataService.remotelistNew(new CenterdataTAttach(logIds)).getData();
         // 附件前缀
-        Map<String, String> keyMap = SpringUtils.getBean(RemoteConfigService.class).remotegetConfigMap(Arrays.asList(FILE_DOWNLOAD, FILE_PREFIX_LOCAL, FILE_PREFIX_HIK1, FILE_PREFIX_HIK2, FILE_PREFIX_DH1, FILE_PREFIX_DH2)).getData();
+        Map<String, String> keyMap = SpringUtils.getBean(RemoteConfigService.class).remotegetConfigMap(Arrays.asList(FILE_DOWNLOAD, FILE_PREFIX_LOCAL, FILE_PREFIX_HIK1, FILE_PREFIX_HIK2, FILE_PREFIX_HIK3, FILE_PREFIX_DH1, FILE_PREFIX_DH2)).getData();
         String token = RemoteApiUtil.getInstance().getToken();// 大华token
         // 拼接组合
         logs.forEach(log -> {

+ 1 - 0
src/main/java/com/sooka/sponest/event/utils/EventConstants.java

@@ -53,6 +53,7 @@ public class EventConstants {
     public static final String FILE_PREFIX_APP = "appUrl";
     public static final String FILE_PREFIX_HIK1 = "HIK_1";
     public static final String FILE_PREFIX_HIK2 = "HIK_2";
+    public static final String FILE_PREFIX_HIK3 = "HIK_3";
     public static final String FILE_PREFIX_DH1 = "DH_1";
     public static final String FILE_PREFIX_DH2 = "DH_2";
     public static final String FILE_DOWNLOAD = "downloadUrl";