Browse Source

事件中心报文重新解析

Memory_LG 1 month ago
parent
commit
26f97c3a4a

+ 41 - 49
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/dahua/InfoVO.java

@@ -11,77 +11,69 @@ import java.util.List;
 
 @Data
 public class InfoVO {
-
-    private FirePointVO[] firePoint;
-
-    private PtzPositionVO ptzPosition;
-
     private Long resourceId;
-
+    private String subSystem;
+    private String alarmTypeName;
+    private List<String> alarmPictures;
+    private String alarmCode;
+    private Long alarmDate;
+    private String deviceName;
+    private Long rtype;
+    private String orgCode;
+    private String alarmPosition;
+    private String id;
+    private String area;
+    private FirePointVO[] firePoint;
     private String orgName;
-
-    /**
-     * 该设备关联的其他通道的唯一标识码
-     */
-    private List<String> otherChannelSns;
-
     private String nodeCode;
-
-    private String distance;
-
-    private String alarmTypeName;
-
-    private String alarmPictures;
-
     private String alarmDateStr;
-
     private String resourceName;
-
     private String deviceCode;
-
-    private String alarmCode;
-
     private String alarmPicture;
-
     private Long nodeType;
-
-    private Long alarmDate;
-
-    private String deviceName;
-
     private String picture;
-
     private Long alarmGrade;
-
-    private Long alarmType;
-
-    private String orgCode;
-
-    private String alarmPosition;
-
-    private String angle;
-
+    private String extend;
+    private String alarmType;
     private String channelName;
+    private String channelSn;
 
+//    private PtzPositionVO ptzPosition;
+
+    /**
+     * 该设备关联的其他通道的唯一标识码
+     */
+//    private List<String> otherChannelSns;
+//    private String distance;
+//    private String angle;
     /**
      * 通道唯一标示码
      */
-    private String channelSn;
-
-    private String elevation;
-
-
-    public String toString(CenterdataTCamera centerdataTCamera) {
+//    private String elevation;
+    /*public String toString(CenterdataTCamera centerdataTCamera) {
         String toString = new ToStringBuilder(this, ToStringStyle.NO_CLASS_NAME_STYLE)
                 .append("行政区:", getAlarmPosition())
                 .append("瞭望塔:", getChannelName())
-                .append("方向:", getDirection(getAngle()))
-                .append("距离:", getStr(getDistance()))
-                .append("高程:", getStr(getElevation()))
+//                .append("方向:", getDirection(getAngle()))
+//                .append("距离:", getStr(getDistance()))
+//                .append("高程:", getStr(getElevation()))
                 .append("经度:", StringUtils.isEmpty(getFirePoint()) ? centerdataTCamera.getLongitude() : getFirePoint()[0].getGpsX())
                 .append("纬度:", StringUtils.isEmpty(getFirePoint()) ? centerdataTCamera.getLatitude() : getFirePoint()[0].getGpsY())
                 .toString().replaceAll("=", "");
         return toString.substring(1, toString.length() - 1);
+    }*/
+
+    public String toString(String longitude, String latitude) {
+        String toString = new ToStringBuilder(this, ToStringStyle.NO_CLASS_NAME_STYLE)
+                .append("行政区:", getAlarmPosition())
+                .append("瞭望塔:", getChannelName())
+//                .append("方向:", getDirection(getAngle()))
+//                .append("距离:", getStr(getDistance()))
+//                .append("高程:", getStr(getElevation()))
+                .append("经度:", longitude)
+                .append("纬度:", latitude)
+                .toString().replaceAll("=", "");
+        return toString.substring(1, toString.length() - 1);
     }
 
     public String getStr(String str) {

+ 32 - 18
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/impl/AlarmEventServiceImpl.java

@@ -330,18 +330,30 @@ public class AlarmEventServiceImpl implements AlarmEventService {
             logger.info(ERROR_MSG_DEPT, centerdataTCamera.getCameraCode());
             return "";
         }
+
+        // 验证事件类型是否配置对应报文码值--只能从数据库配
+        CentereventTEventtype centereventTEventtype = centereventTEventtypeService.selectCentereventTEventtypeByCode(infoVO.getAlarmType());
+        if (StringUtils.isNull(centereventTEventtype)) {
+            logger.info("无法匹配相关事件!报文码值为:{}", infoVO.getAlarmType());
+            return "";
+        }
+
+        ExtendVO extendVO = JSONObject.parseObject(infoVO.getExtend(), ExtendVO.class);
         // 事件目录
         //四平市双辽市卧虎镇贺家村热感应 + 2024-01-05 10:32:54 + 火情报警
-        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 eventName = infoVO.getChannelName() + infoVO.getAlarmDateStr() + centereventTEventtype.getEventTypeName();
+//        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 longitude = StringUtils.isEmpty(String.valueOf(extendVO.getGpsxy().getGpsX()))? centerdataTCamera.getLongitude() : String.valueOf(extendVO.getGpsxy().getGpsX());
+        String latitude = StringUtils.isEmpty(String.valueOf(extendVO.getGpsxy().getGpsY()))? centerdataTCamera.getLatitude() : String.valueOf(extendVO.getGpsxy().getGpsY());
+        String eventDescription = infoVO.toString(longitude, latitude);
         String reportor = infoVO.getDeviceName();
         Date reportTime = DateUtils.timestampToTime(infoVO.getAlarmDate());
         String address = centerdataTCamera.getCameraRegion();
         String alarmCode = infoVO.getAlarmCode().replace("{", "").replace("}", "");
-        CentereventTEventcatalogue centereventTEventcatalogue = new CentereventTEventcatalogue("1", null, eventName, eventDescription, longitude, latitude, reportor, reportTime, address, alarmCode, infoVO.getNodeCode());
-        centereventTEventcatalogue = this.insertEventCatalogue(centereventTEventcatalogue, centerdataTCamera, daHuaFireEventVO.getCreateTime());
+        CentereventTEventcatalogue centereventTEventcatalogue = new CentereventTEventcatalogue(centereventTEventtype.getParentId(), centereventTEventtype.getId(), eventName, eventDescription, longitude, latitude, reportor, reportTime, address, alarmCode, infoVO.getNodeCode());
+        this.insertEventCatalogue(centereventTEventcatalogue, centerdataTCamera, daHuaFireEventVO.getCreateTime());
         // 事件部门
         this.insertEventDept(centereventTEventcatalogue, listDept);
         // 事件日志
@@ -386,10 +398,10 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         // 事件目录
         String eventType = centereventTEventtype.getParentId();
         String eventTypeXl = centereventTEventtype.getId();
-        String eventName = infoVO.getChannelName() + DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, new Date(infoVO.getAlarmDate())) + centereventTEventtype.getEventTypeName();
+        String eventName = infoVO.getChannelName() + infoVO.getAlarmDateStr() + centereventTEventtype.getEventTypeName();
         StringBuilder eventDescription = new StringBuilder();
-        String longitude = String.valueOf(extendVO.getGpsxy().getGpsX());
-        String latitude = String.valueOf(extendVO.getGpsxy().getGpsY());
+        String longitude = StringUtils.isEmpty(String.valueOf(extendVO.getGpsxy().getGpsX()))? centerdataTCamera.getLongitude() : String.valueOf(extendVO.getGpsxy().getGpsX());
+        String latitude = StringUtils.isEmpty(String.valueOf(extendVO.getGpsxy().getGpsY()))? centerdataTCamera.getLatitude() : String.valueOf(extendVO.getGpsxy().getGpsY());
         if("987654321".equals(infoVO.getAlarmType())){
 //            eventDescription.append(infoVO.toString(centerdataTCamera)).append(",").append(extendVO.getImageDescription());
             eventDescription.append(infoVO.toString(longitude, latitude)).append(",").append(extendVO.getImageDescription());
@@ -401,19 +413,21 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         Date reportTime = DateUtils.timestampToTime(infoVO.getAlarmDate());
         String address = centerdataTCamera.getCameraRegion();
         CentereventTEventcatalogue centereventTEventcatalogue = new CentereventTEventcatalogue(eventType, eventTypeXl, eventName, eventDescription.toString(), longitude, latitude, reportor, reportTime, address, infoVO.getAlarmCode(), infoVO.getNodeCode());
-        centereventTEventcatalogue = this.insertEventCatalogue(centereventTEventcatalogue, centerdataTCamera, daHuaFireEventVO.getCreateTime());
+        this.insertEventCatalogue(centereventTEventcatalogue, centerdataTCamera, daHuaFireEventVO.getCreateTime());
         // 事件部门
         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);
+        if (!infoVO.getAlarmPictures().isEmpty()) {
+            infoVO.getAlarmPictures().forEach(picture->{
+                CenterdataTAttach tAttach = new CenterdataTAttach();
+                tAttach.setBusId(logId);
+                tAttach.setAttachPath(picture);
+                tAttach.setBusIndx(BUS_INDEX_2);
+                tAttach.setBusSource("DH_1");
+                tAttach.setFileType(FILE_TYPE_1);
+                remoteDataService.insertAttach(tAttach);
+            });
         }
         return centereventTEventcatalogue.getEventCode();
     }