ソースを参照

传感器事件上传

Memory_LG 2 ヶ月 前
コミット
3a7353481e

+ 29 - 17
src/main/java/com/sooka/sponest/event/eventMessage/controller/EventMessageController.java

@@ -14,8 +14,11 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import java.util.List;
 
+import static com.sooka.sponest.event.utils.eventConstants.EventConstants.*;
+
 /**
  * 事件接收Controller
+ *
  * @author limeng
  * @since 2025/07/03
  */
@@ -39,45 +42,54 @@ public class EventMessageController extends BaseController {
         return getDataTable(list);
     }
 
+    private AjaxResult insertEventMessage(JSONObject jsonObject, String alarmTypeName, String alarmType) {
+        if (alarmTypeName == null || alarmType == null) {
+            return AjaxResult.error("Message reception failed");
+        }
+        EventMessage message = new EventMessage();
+        message.setEventId(IdUtils.fastSimpleUUID());
+        message.setEventSource("大华-" + alarmTypeName);
+        message.setEventMessage(jsonObject.toJSONString());
+        message.setCreateTime(DateUtils.getNowDate());
+        eventMessageService.insertEventMessage(message, alarmType);
+        return AjaxResult.success("Message received successfully");
+    }
+
     //======================================   DSS START  ======================================//
 
     /**
      * DSS - 接收大华xc5300事件
-     * */
+     */
     @PostMapping("/dahua@OtherEventMessageReceiver")
     public AjaxResult DH_OtherEventsMessageReceiver(@RequestBody JSONObject jsonObject) {
         String alarmTypeName = StringUtils.isBlank(jsonObject.getString("alarmName")) ? jsonObject.getString("alarmTypeName") : jsonObject.getString("alarmName");
         String alarmType = StringUtils.isBlank(jsonObject.getString("alarmType")) ? jsonObject.getString("alarmTypeCode") : jsonObject.getString("alarmType");
-        return insertEventMessage(jsonObject, alarmTypeName, alarmType);
+        return insertEventMessage(jsonObject, "大华-" + alarmTypeName, alarmType);
     }
 
     /**
      * DSS - 接收大华火险、烟雾事件 5122 313
-     * */
+     */
     @PostMapping("/dahua@FireEventMessageReceiver")
     public AjaxResult DH_FireEventsMessageReceiver(@RequestBody JSONObject jsonObject) {
         String alarmTypeName = jsonObject.getJSONObject("info").getString("alarmTypeName");
         String alarmType = jsonObject.getJSONObject("info").getString("alarmType");
-        return insertEventMessage(jsonObject, alarmTypeName, alarmType);
+        return insertEventMessage(jsonObject, "大华-" + alarmTypeName, alarmType);
     }
+    //======================================   DSS END  ======================================//
 
-    private AjaxResult insertEventMessage(JSONObject jsonObject, String alarmTypeName, String alarmType) {
-        if (alarmTypeName == null || alarmType == null) {
-            return AjaxResult.error("Message reception failed");
-        }
-        EventMessage message = new EventMessage();
-        message.setEventId(IdUtils.fastSimpleUUID());
-        message.setEventSource("大华-" + alarmTypeName);
-        message.setEventMessage(jsonObject.toJSONString());
-        message.setCreateTime(DateUtils.getNowDate());
-        eventMessageService.insertEventMessage(message,alarmType);
-        return AjaxResult.success("Message received successfully");
-    }
 
-    //======================================   DSS END  ======================================//
+    //======================================   SENSOR START  ======================================//
+    @PostMapping("/sensor@EventMessageReceiver")
+    public AjaxResult sensorEventMessageReceiver(@RequestBody JSONObject jsonObject) {
+        return insertEventMessage(jsonObject, "传感器-" + jsonObject.getString("eventType"), SENSOR);
+//        return AjaxResult.success("Message received successfully");
+    }
+    //======================================   SENSOR END  ======================================//
 
 
     //======================================   HIK START  ======================================//
 
+
     //======================================   HIK END  ======================================//
 }

+ 40 - 0
src/main/java/com/sooka/sponest/event/eventMessage/domain/SensorEventVo.java

@@ -0,0 +1,40 @@
+package com.sooka.sponest.event.eventMessage.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Auther: mjq
+ * @Date: 2023/6/17 - 06 - 17 - 9:30
+ * @Description: com.sooka.sponest.event.centereventteventcatalogue.domain.sensor
+ * @version: 1.0
+ */
+@Data
+public class SensorEventVo {
+    private String eventId;// 事件id
+
+    private String eventType;// 事件分类
+
+    private String eventTypeName;// 事件分类名称
+
+    private String eventDescription;// 事件描述
+
+    private String longitude;// 经度
+
+    private String latitude;// 纬度
+
+    private String sensorId;// 传感器id
+
+    private String reportor;// 传感器名称
+
+    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
+    public Date reportTime;// 上报时间
+
+    private String address;// 地址
+
+    private String picture;// 图片
+
+    private String deptType;
+}

+ 1 - 1
src/main/java/com/sooka/sponest/event/eventMessage/service/impl/EventMessageServiceImpl.java

@@ -44,7 +44,7 @@ public class EventMessageServiceImpl implements EventMessageService {
             }
 //        }catch (Exception e) {
 //            logger.error("事件报文插入条数:{} 条",result);
-//            throw new RuntimeException("insertEventMessage Error:", e);
+//            throw new RuntimeException("insertEventMessage_DH Error:", e);
 //        }
     }
 

+ 2 - 1
src/main/java/com/sooka/sponest/event/eventProcess/service/EventProcessService.java

@@ -4,6 +4,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.sooka.sponest.event.eventLog.domain.EventLog;
 import com.sooka.sponest.event.eventMessage.domain.DaHuaFireEventVO;
 import com.sooka.sponest.event.eventMessage.domain.DaHuaOtherEventVO;
+import com.sooka.sponest.event.eventMessage.domain.SensorEventVo;
 import com.sooka.sponest.event.eventProcess.domain.BO.EventInfoBO;
 import com.sooka.sponest.event.eventProcess.domain.EventInfo;
 
@@ -56,5 +57,5 @@ public interface EventProcessService {
     AjaxResult gangedDeptList(EventInfo eventInfo);
 
 
-
+    void insertSensorEvent(SensorEventVo sensorEventVo);
 }

+ 36 - 19
src/main/java/com/sooka/sponest/event/eventProcess/service/impl/EventProcessServiceImpl.java

@@ -20,10 +20,7 @@ import com.sooka.sponest.event.eventAttach.service.EventAttachService;
 import com.sooka.sponest.event.eventDept.service.EventDeptService;
 import com.sooka.sponest.event.eventLog.domain.EventLog;
 import com.sooka.sponest.event.eventLog.service.EventLogService;
-import com.sooka.sponest.event.eventMessage.domain.DaHuaFireEventVO;
-import com.sooka.sponest.event.eventMessage.domain.DaHuaOtherEventVO;
-import com.sooka.sponest.event.eventMessage.domain.FireEventInfoVO;
-import com.sooka.sponest.event.eventMessage.domain.PictureVO;
+import com.sooka.sponest.event.eventMessage.domain.*;
 import com.sooka.sponest.event.eventProcess.domain.BO.EventInfoBO;
 import com.sooka.sponest.event.eventProcess.domain.EventInfo;
 import com.sooka.sponest.event.eventProcess.domain.VO.EventUnconfirmed;
@@ -108,7 +105,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
                 EventUnconfirmed eventUnconfirmed = new EventUnconfirmed(
                         daHuaOtherEventVO.getEventId(), eventType.getId(),  centerdataTCamera.getCameraName() + DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS,
                         DateUtils.timestampToTime(daHuaOtherEventVO.getOccurrenceTime())) + daHuaOtherEventVO.getAlarmName(), daHuaOtherEventVO.toString(),
-                        EVENT_LOG_SOURCE_1, daHuaOtherEventVO.getLongitude(), daHuaOtherEventVO.getLatitude(), centerdataTCamera.getCameraName(), DateUtils.timestampToTime(daHuaOtherEventVO.getOccurrenceTime()),
+                        REPORTING_SOURCE_1, daHuaOtherEventVO.getLongitude(), daHuaOtherEventVO.getLatitude(), centerdataTCamera.getCameraName(), DateUtils.timestampToTime(daHuaOtherEventVO.getOccurrenceTime()),
                         centerdataTCamera.getCameraCode(), EVENT_STATUS_1, daHuaOtherEventVO.getAddress(), IS_URGE_0, daHuaOtherEventVO.getChannelSn(), DateUtils.timestampToTime(daHuaOtherEventVO.getOccurrenceTime()));
 
                 // 插入事件信息
@@ -127,9 +124,6 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
 
                 // 插入事件图片(待确认附件表)
                 eventAttachService.batchInsertEventAttachUnconfirmed(logId, daHuaOtherEventVO.getEventId(), pictureList, EVENT_LOG_FILE_SOURCE_1, DH_2);
-
-                //上报状态事件, 可视化响铃推送
-//                SpringUtils.getBean(RedisService.class).convertAndSend(SOCKET_PUSH_TOPIC, eventUnconfirmed);
             }
         } catch (Exception e) {
             logger.error("事件新增失败!输入参数:{}", daHuaOtherEventVO, e);
@@ -165,7 +159,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
                 // 构建待确认事件对象
                 EventUnconfirmed eventUnconfirmed = new EventUnconfirmed(
                         daHuaFireEventVO.getEventId(), "1", messageInfo.getChannelName() + messageInfo.getAlarmDateStr() + messageInfo.getAlarmTypeName(), messageInfo.toString(longitude, latitude),
-                        EVENT_LOG_SOURCE_1, longitude, latitude, messageInfo.getDeviceName(), reportTime, centerdataTCamera.getCameraCode(), EVENT_STATUS_1, centerdataTCamera.getCameraRegion(), IS_URGE_0, messageInfo.getChannelSn(), reportTime);
+                        REPORTING_SOURCE_1, longitude, latitude, messageInfo.getDeviceName(), reportTime, centerdataTCamera.getCameraCode(), EVENT_STATUS_1, centerdataTCamera.getCameraRegion(), IS_URGE_0, messageInfo.getChannelSn(), reportTime);
 
                 // 插入事件信息
                 eventProcessMapper.insertEventInfo(eventUnconfirmed);
@@ -178,9 +172,6 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
 
                 // 插入事件图片(待确认附件表)
                 eventAttachService.batchInsertEventAttachUnconfirmed(logId, daHuaFireEventVO.getEventId(), Arrays.asList(messageInfo.getPicture().split(",")), EVENT_LOG_FILE_SOURCE_1, DH_1);
-
-                //上报状态事件, 可视化响铃推送
-//                SpringUtils.getBean(RedisService.class).convertAndSend(SOCKET_PUSH_TOPIC, eventUnconfirmed);
             }
         } catch (Exception e) {
             logger.error("事件新增失败!输入参数:{}", daHuaFireEventVO, e);
@@ -188,6 +179,32 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
     }
 
     @Override
+    public void insertSensorEvent(SensorEventVo sensorEventVo) {
+        List<CenterdataTAidevicedept> listDept = SpringUtils.getBean(RemoteMonitorService.class).listForCommandCenter(sensorEventVo.getSensorId(), "1", "1").getData();
+        if (StringUtils.isEmpty(listDept)) {
+            logger.info("无法匹配相关部门!传感器为:{}", sensorEventVo.getReportor());
+            return;
+        }
+        // 构建待确认事件对象
+        EventUnconfirmed eventUnconfirmed = new EventUnconfirmed(
+                sensorEventVo.getEventId(), sensorEventVo.getEventType(), sensorEventVo.getReportor() + DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, sensorEventVo.getReportTime()) + sensorEventVo.getEventTypeName(),
+                sensorEventVo.getEventDescription(), REPORTING_SOURCE_2, sensorEventVo.getLongitude(), sensorEventVo.getLatitude(), sensorEventVo.getReportor(), sensorEventVo.getReportTime(),
+                sensorEventVo.getSensorId(), EVENT_STATUS_1, sensorEventVo.getAddress(), IS_URGE_0, sensorEventVo.getSensorId(), sensorEventVo.getReportTime());
+
+        // 插入事件信息
+        eventProcessMapper.insertEventInfo(eventUnconfirmed);
+
+        // 插入事件指挥中心
+        eventDeptService.insertEventDept(sensorEventVo.getEventId(), listDept);
+
+        // 插入事件日志
+        String logId = eventLogService.insertEventLog( sensorEventVo.getEventId(), eventUnconfirmed.getEventName() + System.getProperty("line.separator") + eventUnconfirmed.getEventDescription(), EVENT_LOG_TYPE_1, EVENT_LOG_SOURCE_1, sensorEventVo.getSensorId(), sensorEventVo.getReportTime());
+
+        // 插入事件图片(待确认附件表)
+        eventAttachService.batchInsertEventAttachUnconfirmed(logId, sensorEventVo.getEventId(), Arrays.asList(sensorEventVo.getPicture().split(",")), EVENT_LOG_FILE_SOURCE_4, FILE_URL);
+    }
+
+    @Override
     @DataScopeMutiDept(deptAlias = "d")
     public List<EventInfoBO> selectUnConfirmedList(EventInfo eventInfo) {
         setSookaDataBase(eventInfo);
@@ -271,7 +288,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
                 eventDeptService.insertEventDept(eventInfo.getEventId(), listDept);
 
                 // 插入事件日志
-                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "确认该事件", EVENT_LOG_TYPE_2, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), new Date());
+                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "确认该事件", EVENT_LOG_TYPE_2, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), DateUtils.getNowDate());
 
                 //下载附件到本地
                 moveAttach(unconfirmedEventDetail.getAttachList(), eventInfo.getEventId());
@@ -334,7 +351,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
                 moveAttach(eventInfoBO.getAttachList(), eventInfo.getEventId());
 
                 // 插入事件日志
-                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + content, logType.toString(), EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), new Date());
+                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + content, logType.toString(), EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), DateUtils.getNowDate());
 
                 //将事件主体移动到无异常表
                 eventInfoBO.setEventStatus(eventInfo.getEventStatus());
@@ -372,7 +389,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
                 sysUser.setNickName("测试用户");
 
                 // 插入事件日志
-                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "签收该事件", EVENT_LOG_TYPE_3, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), new Date());
+                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "签收该事件", EVENT_LOG_TYPE_3, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), DateUtils.getNowDate());
 
                 //签收时, 选择联动部门
                 gangedDeptList(eventInfo);
@@ -410,7 +427,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
                 sysUser.setNickName("测试用户");
 
                 // 插入事件日志
-                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "办结该事件", EVENT_LOG_TYPE_4, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), new Date());
+                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "办结该事件", EVENT_LOG_TYPE_4, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), DateUtils.getNowDate());
 
                 //更新主表状态
                 eventInfo.setEventStatus(EVENT_STATUS_4);
@@ -445,7 +462,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
                 sysUser.setNickName("测试用户");
 
                 // 插入事件日志
-                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "审核结果:" + eventInfo.getEventDescription(), EVENT_LOG_TYPE_5, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), new Date());
+                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "审核结果:" + eventInfo.getEventDescription(), EVENT_LOG_TYPE_5, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), DateUtils.getNowDate());
 
                 //更新主表状态
                 if(StringUtils.isBlank(eventInfo.getEventStatus())){
@@ -482,7 +499,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
                 sysUser.setNickName("测试用户");
 
                 // 插入事件日志
-                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "归档该事件", EVENT_LOG_TYPE_6, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), new Date());
+                eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "归档该事件", EVENT_LOG_TYPE_6, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), DateUtils.getNowDate());
 
                 //更新主表状态
                 eventInfo.setEventStatus(EVENT_STATUS_6);
@@ -513,7 +530,7 @@ public class EventProcessServiceImpl extends BaseServiceImpl implements EventPro
             sysUser.setDeptNames("四平市");
             sysUser.setNickName("测试用户");
 
-            eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "添加协同部门", EVENT_LOG_TYPE_100, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), new Date());
+            eventLogService.insertEventLog(eventInfo.getEventId(), sysUser.getDeptNames() + sysUser.getNickName() + "添加协同部门", EVENT_LOG_TYPE_100, EVENT_LOG_SOURCE_99, String.valueOf(sysUser.getUserId()), DateUtils.getNowDate());
 
             List<CenterdataTAidevicedept> listDept = new ArrayList<>();
             eventInfo.getDeptIdList().forEach(deptId -> {

+ 9 - 1
src/main/java/com/sooka/sponest/event/listener/listener/EventMessageEventListener.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.sooka.sponest.event.eventMessage.domain.DaHuaFireEventVO;
 import com.sooka.sponest.event.eventMessage.domain.DaHuaOtherEventVO;
 import com.sooka.sponest.event.eventMessage.domain.EventMessage;
+import com.sooka.sponest.event.eventMessage.domain.SensorEventVo;
 import com.sooka.sponest.event.eventProcess.service.EventProcessService;
 import com.sooka.sponest.event.listener.carrier.EventMessageInsertedEvent;
 import org.slf4j.Logger;
@@ -14,6 +15,8 @@ import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 
+import static com.sooka.sponest.event.utils.eventConstants.EventConstants.*;
+
 /**
  * 监听者类 用于监听事件报文插入事件
  * @author limeng
@@ -42,7 +45,12 @@ public class EventMessageEventListener {
                 DaHuaFireEventVO daHuaFireEventVO = JSONObject.parseObject(eventMessage.getEventMessage(), DaHuaFireEventVO.class);
                 daHuaFireEventVO.setEventId(eventMessage.getEventId());
                 eventProcessService.insertDaHuaFireEvent(daHuaFireEventVO);
-            } else {
+            }else if(SENSOR.equals(alarmType)){
+                //传感器事件
+                SensorEventVo sensorEventVo = JSONObject.parseObject(eventMessage.getEventMessage(), SensorEventVo.class);
+                sensorEventVo.setEventId(eventMessage.getEventId());
+                eventProcessService.insertSensorEvent(sensorEventVo);
+            }else {
                 DaHuaOtherEventVO daHuaOtherEventVO = JSONObject.parseObject(eventMessage.getEventMessage(), DaHuaOtherEventVO.class);
                 daHuaOtherEventVO.setEventId(eventMessage.getEventId());
                 eventProcessService.insertDaHuaOtherEvent(daHuaOtherEventVO);

+ 4 - 2
src/main/java/com/sooka/sponest/event/utils/eventConstants/EventConstants.java

@@ -79,12 +79,14 @@ public class EventConstants {
 
     public static final String EVENT_LOG_FILE_SOURCE_3 = "event_log_file_source_3";// APP
 
+    public static final String EVENT_LOG_FILE_SOURCE_4 = "event_log_file_source_4";// SENSOR
+
     public static final String EVENT_LOG_FILE_SOURCE_99 = "event_log_file_source_99";// 业务
 
     /**
-     * socket主题
+     * alarmType
      */
-    public static final String SOCKET_PUSH_TOPIC = "socketpushTopic";// socket主题
+    public static final String SENSOR = "SENSOR";// 传感器
 
     /**
      * 附件来源类型(不同类型获取的图片访问地址不同)