浏览代码

119新增接口

Wang-Xiao-Ran 1 年之前
父节点
当前提交
53eb785714

+ 46 - 1
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/controller/FireIncidentController.java

@@ -4,14 +4,18 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.dahuatech.icc.exception.ClientException;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.SpringUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.DaHuaEventBO;
+import com.sooka.sponest.event.centereventteventcatalogue.domain.RemoteFireVO;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.sensor.SensorEventVo;
 import com.sooka.sponest.event.centereventteventcatalogue.service.AlarmEventService;
+import com.sooka.sponest.event.centereventteventcatalogue.service.IFireIncidentService;
+import com.sooka.sponest.event.centereventteventtype.domain.CentereventTEventtype;
+import com.sooka.sponest.event.centereventteventtype.service.ICentereventTEventtypeService;
 import com.sooka.sponest.event.centereventtreportmessage.domain.CentereventTReportmessage;
 import com.sooka.sponest.event.centereventtreportmessage.service.ICentereventTReportmessageService;
-import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +25,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.text.SimpleDateFormat;
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
 
 @RestController
 @RequestMapping("/fireIncident")
@@ -35,6 +41,13 @@ public class FireIncidentController {
     @Autowired
     private ICentereventTReportmessageService centereventTReportmessageService;
 
+
+    @Autowired
+    private IFireIncidentService fireIncidentService;
+
+    @Autowired
+    private ICentereventTEventtypeService centereventTEventtypeService;
+
     /**
      * 传感器事件上报
      * @param sensorEventVo
@@ -89,4 +102,36 @@ public class FireIncidentController {
         eventBO.setDbType("0");
         return AjaxResult.success(alarmEventService.updateFireEventImage(eventBO));
     }
+
+    /**
+     * 第三方上报事件接口
+     * @param RemoteFireVO
+     * @return
+     */
+    @PostMapping("/remoteReport")
+    public AjaxResult remoteReport(@RequestBody RemoteFireVO remoteFireVO) {
+        try {
+            //根据事件小类,反查事件大类
+            CentereventTEventtype eventtype = centereventTEventtypeService.selectCentereventTEventtypeById(remoteFireVO.getEventType());
+            if(StringUtils.isNull(eventtype)){
+                return AjaxResult.error("参数错误");
+            }
+            remoteFireVO.setEventSubType(eventtype.getParentId());
+            //处理上报逻辑
+            String eventCode = fireIncidentService.insertFireIncident(remoteFireVO);
+            if (StringUtils.isBlank(eventCode)) {
+                eventCode = String.valueOf(System.currentTimeMillis());
+            }
+            CentereventTReportmessage tReportMessage = new CentereventTReportmessage();
+            tReportMessage.setId(eventCode);
+            tReportMessage.setSource("第三方上传-" + remoteFireVO.getEventType());
+            tReportMessage.setContext(JSON.toJSONString(remoteFireVO));
+            centereventTReportmessageService.insertCentereventTReportmessage(tReportMessage);
+        } catch (Exception e) {
+            logger.error(e.getMessage());
+            return AjaxResult.error("上报失败");
+        }
+        return AjaxResult.success("上报成功");
+    }
+
 }

+ 18 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/CentereventTEventcatalogue.java

@@ -35,6 +35,24 @@ public class CentereventTEventcatalogue extends BaseBusinessEntity {
         this.address = address;
     }
 
+    public CentereventTEventcatalogue(
+            String eventType, String eventTypeXl, String eventName, String eventDescription, String longitude,
+            String latitude, String reportor, Date reportTime, String address, String reportSource,
+            String eventStatus, String eventStatusValue) {
+        this.eventType = eventType;
+        this.eventTypeXl = eventTypeXl;
+        this.eventName = eventName;
+        this.eventDescription = eventDescription;
+        this.longitude = longitude;
+        this.latitude = latitude;
+        this.reportor = reportor;
+        this.reportTime = reportTime;
+        this.address = address;
+        this.reportSource = reportSource;
+        this.eventStatus = eventStatus;
+        this.eventStatusValue = eventStatusValue;
+    }
+
     private static final long serialVersionUID = 1L;
 
     /**

+ 80 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/RemoteFireVO.java

@@ -0,0 +1,80 @@
+package com.sooka.sponest.event.centereventteventcatalogue.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sooka.sponest.event.centereventteventcatalogue.domain.dahua.InfoVO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RemoteFireVO {
+
+    /**
+     * 事件名称
+     */
+    @NotBlank
+    private String eventName;
+
+    /**
+     * 事件详细类型( 101森林火情、102秸秆禁烧、103建筑物火情、1002消防占道、510水压监测异常、1001电瓶车进电梯)
+     */
+    @NotBlank
+    private String eventType;
+
+    /**
+     * 事件分类
+     */
+    private String eventSubType;
+
+    /**
+     * 事件描述
+     */
+    @NotBlank
+    private String eventDescription;
+
+    /**
+     * 事件上报人
+     */
+    @NotBlank
+    private String eventReporter;
+
+    /**
+     * 联系方式
+     */
+    private String  contactNumber;
+
+    /**
+     * 事件上报时间
+     */
+    @NotBlank
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date eventReportTime;
+
+    /**
+     * 事件地理位置
+     */
+    @NotBlank
+    private String eventLocation;
+
+    /**
+     * 事件坐标(经度)
+     */
+    @NotBlank
+    private String eventLongitude;
+
+    /**
+     * 事件坐标(纬度)
+     */
+    @NotBlank
+    private String eventLatitude;
+
+    /**
+     * 事件图片
+     */
+    private String eventPicture;
+}

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

@@ -1,12 +1,18 @@
 package com.sooka.sponest.event.centereventteventcatalogue.service;
 
 import com.dahuatech.icc.exception.ClientException;
+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.haikang.EventsVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.haikang.HaiKangEventVo;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.sensor.SensorEventVo;
+import com.sooka.sponest.monitor.api.domain.CenterdataTAidevicedept;
+import com.sooka.sponest.monitor.api.domain.CenterdataTCamera;
+
+import java.util.Date;
+import java.util.List;
 
 public interface AlarmEventService {
 
@@ -29,4 +35,6 @@ public interface AlarmEventService {
 
     // 传感器事件
     String insertSensorEvent(SensorEventVo sensorEventVo);
+
+    String getFunction(CentereventTEventcatalogue centereventTEventcatalogue, CenterdataTCamera centerdataTCamera, Date createTime, List<CenterdataTAidevicedept> listDept);
 }

+ 7 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/IFireIncidentService.java

@@ -0,0 +1,7 @@
+package com.sooka.sponest.event.centereventteventcatalogue.service;
+
+import com.sooka.sponest.event.centereventteventcatalogue.domain.RemoteFireVO;
+
+public interface IFireIncidentService {
+    String insertFireIncident(RemoteFireVO remoteFireVO);
+}

+ 55 - 38
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/impl/AlarmEventServiceImpl.java

@@ -8,6 +8,9 @@ import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.SpringUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.model.LoginUser;
 import com.sooka.sponest.event.centereventtdeptevent.domain.CentereventDeptEvent;
 import com.sooka.sponest.event.centereventtdeptevent.service.ICentereventDeptEventService;
 import com.sooka.sponest.event.centereventteventcatalogue.domain.CentereventTEventcatalogue;
@@ -172,56 +175,69 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         return centereventTEventcatalogue.getEventCode();
     }
 
+    @Override
+    public String getFunction(CentereventTEventcatalogue centereventTEventcatalogue, CenterdataTCamera centerdataTCamera, Date createTime, List<CenterdataTAidevicedept> listDept){
+        CentereventTEventcatalogue eventcatalogue = this.insertEventCatalogue(centereventTEventcatalogue, centerdataTCamera, createTime);
+        this.insertEventDept(eventcatalogue, listDept);
+        return this.insertEventLog(eventcatalogue);
+    }
+
     // 事件目录
-    private CentereventTEventcatalogue insertEventCatalogue(CentereventTEventcatalogue centereventTEventcatalogue, CenterdataTCamera centerdataTCamera, Date createTime) {
+    private CentereventTEventcatalogue insertEventCatalogue(CentereventTEventcatalogue eventcatalogue, CenterdataTCamera camera, Date createTime) {
         //生成uuid
         String eventCode = IdUtils.simpleUUID();
-        centereventTEventcatalogue.setId(eventCode);
-        centereventTEventcatalogue.setEventCode(eventCode);
-
-        if (null == centereventTEventcatalogue.getReportSource()) {
-            centereventTEventcatalogue.setReportSource(REPORTING_SOURCE_1);//reporting_source_1
+        eventcatalogue.setId(eventCode);
+        eventcatalogue.setEventCode(eventCode);
+        if (null == eventcatalogue.getReportSource()) {
+            eventcatalogue.setReportSource(null == eventcatalogue.getReportSource()?REPORTING_SOURCE_1:eventcatalogue.getReportSource());//reporting_source_1
         }
-        centereventTEventcatalogue.setIsUrged(SYS_ISURGE_2);//sys_isurge_2
-        centereventTEventcatalogue.setEventStatus("上报");
-        centereventTEventcatalogue.setEventStatusValue(FOREST_EVENT_STATUS_1);//forest_event_status_1
-        centereventTEventcatalogue.setCreateBy(centerdataTCamera.getId());
-        centereventTEventcatalogue.setCreateName(centerdataTCamera.getCameraName());
-        centereventTEventcatalogue.setCreateTime(null == createTime ? DateUtils.getNowDate() : createTime);
-        centereventTEventcatalogueService.insertCentereventTEventcatalogue(centereventTEventcatalogue);
-        return centereventTEventcatalogue;
+        eventcatalogue.setIsUrged(SYS_ISURGE_2);//sys_isurge_2
+        eventcatalogue.setEventStatus(null == eventcatalogue.getEventStatus()?"上报":eventcatalogue.getEventStatus());
+        eventcatalogue.setEventStatusValue(null == eventcatalogue.getEventStatusValue()?FOREST_EVENT_STATUS_1:eventcatalogue.getEventStatusValue());//forest_event_status_1
+        eventcatalogue.setCreateBy(camera.getId());
+        eventcatalogue.setCreateName(camera.getCameraName());
+        eventcatalogue.setCreateTime(null == createTime ? DateUtils.getNowDate() : createTime);
+        centereventTEventcatalogueService.insertCentereventTEventcatalogue(eventcatalogue);
+        return eventcatalogue;
     }
 
     // 事件部门
-    private void insertEventDept(CentereventTEventcatalogue centereventTEventcatalogue, List<CenterdataTAidevicedept> listDept) {
+    private void insertEventDept(CentereventTEventcatalogue eventcatalogue, List<CenterdataTAidevicedept> listDept) {
+        String eventStatusValue = (null == eventcatalogue.getEventStatusValue())?FOREST_EVENT_STATUS_1:eventcatalogue.getEventStatusValue();
+        String eventStatus = (null == eventcatalogue.getEventStatus())?"上报":eventcatalogue.getEventStatus();
         listDept.forEach(item -> {
-            CentereventDeptEvent centereventTDeptEvent = new CentereventDeptEvent();
-            centereventTDeptEvent.setId(IdUtils.fastSimpleUUID());
-            centereventTDeptEvent.setEventCode(centereventTEventcatalogue.getEventCode());
-            centereventTDeptEvent.setDeptId(item.getMapDeptId());
-            centereventTDeptEvent.setDeptName(item.getMapDeptName());
-            centereventTDeptEvent.setIsUrged(SYS_ISURGE_2);
-            centereventTDeptEvent.setEventStatus("上报");
-            centereventTDeptEvent.setEventStatusValue(FOREST_EVENT_STATUS_1);
-            centereventTDeptEvent.setDeptHandleType(DEPT_HANDLE_TYPE_2);
-            centereventTDeptEvent.setCreateName(centereventTEventcatalogue.getCreateName());
-            centereventTDeptEvent.setCreateTime(centereventTEventcatalogue.getCreateTime());
-            centereventTDeptEventService.insertCentereventTDeptEvent(centereventTDeptEvent);
+            CentereventDeptEvent deptEvent = new CentereventDeptEvent();
+            deptEvent.setId(IdUtils.fastSimpleUUID());
+            deptEvent.setEventCode(eventcatalogue.getEventCode());
+            deptEvent.setDeptId(item.getMapDeptId());
+            deptEvent.setDeptName(item.getMapDeptName());
+            deptEvent.setIsUrged(SYS_ISURGE_2);
+            deptEvent.setEventStatus(eventStatus);
+            deptEvent.setEventStatusValue(eventStatusValue);
+            deptEvent.setDeptHandleType(DEPT_HANDLE_TYPE_2);
+            LoginUser loginUser = SecurityUtils.getLoginUser();
+            deptEvent.setCreateBy(null == loginUser ? null : loginUser.getSysUser().getUserId().toString());
+            deptEvent.setCreateName(eventcatalogue.getCreateName());
+            deptEvent.setCreateTime(eventcatalogue.getCreateTime());
+            centereventTDeptEventService.insertCentereventTDeptEvent(deptEvent);
         });
     }
 
     // 事件日志
-    private String insertEventLog(CentereventTEventcatalogue centereventTEventcatalogue) {
-        CentereventTFireLog centereventTFireLog = new CentereventTFireLog();
-        centereventTFireLog.setId(IdUtils.simpleUUID());
-        centereventTFireLog.setEventCode(centereventTEventcatalogue.getEventCode());
-        centereventTFireLog.setLogContent(centereventTEventcatalogue.getEventName() + System.getProperty("line.separator") + centereventTEventcatalogue.getEventDescription());
-        centereventTFireLog.setOperation(BUS_OPER_TYPE_2);
-        centereventTFireLog.setOperationType(LOG_OPER_TYPE_3);
-        centereventTFireLog.setCreateName(centereventTEventcatalogue.getCreateName());
-        centereventTFireLog.setCreateTime(centereventTEventcatalogue.getCreateTime());
-        centereventTFireLogService.insertCentereventTFireLog(centereventTFireLog);
-        return centereventTFireLog.getId();
+    private String insertEventLog(CentereventTEventcatalogue eventcatalogue) {
+        CentereventTFireLog fireLog = new CentereventTFireLog();
+        fireLog.setId(IdUtils.simpleUUID());
+        fireLog.setEventCode(eventcatalogue.getEventCode());
+        fireLog.setLogContent(eventcatalogue.getEventName() + System.getProperty("line.separator") + eventcatalogue.getEventDescription());
+        fireLog.setOperation(BUS_OPER_TYPE_2);
+        fireLog.setOperationType(LOG_OPER_TYPE_3);
+        if(REPORTING_SOURCE_5.equals(eventcatalogue.getReportSource())){
+            fireLog.setOperationType(LOG_OPER_TYPE_4);
+        }
+        fireLog.setCreateName(eventcatalogue.getCreateName());
+        fireLog.setCreateTime(eventcatalogue.getCreateTime());
+        centereventTFireLogService.insertCentereventTFireLog(fireLog);
+        return fireLog.getId();
     }
 
 
@@ -250,6 +266,7 @@ public class AlarmEventServiceImpl implements AlarmEventService {
             return "";
         }
         // 事件目录
+        //四平市双辽市卧虎镇贺家村热感应 + 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();

+ 94 - 0
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/impl/FireInsidentServiceImpl.java

@@ -0,0 +1,94 @@
+package com.sooka.sponest.event.centereventteventcatalogue.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.model.LoginUser;
+import com.sooka.sponest.event.centereventteventcatalogue.domain.CentereventTEventcatalogue;
+import com.sooka.sponest.event.centereventteventcatalogue.domain.RemoteFireVO;
+import com.sooka.sponest.event.centereventteventcatalogue.service.AlarmEventService;
+import com.sooka.sponest.event.centereventteventcatalogue.service.IFireIncidentService;
+import com.sooka.sponest.event.remoteapi.RemoteDataService;
+import com.sooka.sponest.event.remoteapi.domain.CenterdataTAttach;
+import com.sooka.sponest.monitor.api.domain.CenterdataTAidevicedept;
+import com.sooka.sponest.monitor.api.domain.CenterdataTCamera;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.sooka.sponest.event.utils.EventConstants.*;
+
+@Service
+public class FireInsidentServiceImpl implements IFireIncidentService {
+    Logger logger = LoggerFactory.getLogger(FireInsidentServiceImpl.class);
+
+    @Autowired
+    private AlarmEventService alarmEventService;
+
+    @Autowired
+    private RemoteDataService remoteDataService;
+
+
+
+    /**
+     * 119平台上报事件
+     *
+     * @param remoteFireVO
+     * @return
+     */
+    @Override
+    public String insertFireIncident(RemoteFireVO remoteFireVO) {
+
+        // 事件目录
+        CentereventTEventcatalogue eventcatalogue =
+                new CentereventTEventcatalogue(
+                        remoteFireVO.getEventSubType(),
+                        remoteFireVO.getEventType(),
+                        null == remoteFireVO.getEventName() || "".equals(remoteFireVO.getEventName())?remoteFireVO.getEventLocation() + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(remoteFireVO.getEventReportTime()) + remoteFireVO.getEventType():remoteFireVO.getEventName(),
+                        remoteFireVO.getEventDescription(),
+                        remoteFireVO.getEventLongitude(),
+                        remoteFireVO.getEventLatitude(),
+                        remoteFireVO.getEventReporter(),
+                        remoteFireVO.getEventReportTime(),
+                        remoteFireVO.getEventLocation(),
+                        REPORTING_SOURCE_5,
+                        "确认",
+                        FOREST_EVENT_STATUS_7
+                );
+        //增加判断,防止没有token时空指针异常。
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        StringBuilder userId = new StringBuilder();
+        StringBuilder nickName = new StringBuilder();
+        if(null != loginUser){
+            userId.append(loginUser.getSysUser().getUserId());
+            nickName.append(loginUser.getSysUser().getNickName());
+        }
+        CenterdataTCamera camera = new CenterdataTCamera(userId.toString(), nickName.toString());
+        //后续应该修改为调用接口获取部门信息
+        List<CenterdataTAidevicedept> listDept = new ArrayList();
+        listDept.add(new CenterdataTAidevicedept(3777L, "市消防救援支队"));
+        String logId = alarmEventService.getFunction(eventcatalogue, camera, null, listDept);
+        if (StringUtils.isNotBlank(remoteFireVO.getEventPicture())) {
+            String[] pictures =remoteFireVO.getEventPicture().split(",");
+            // 添加新附件
+            List<CenterdataTAttach> attachList = new ArrayList<>();
+            for (String picture : pictures) {
+                CenterdataTAttach tAttach = new CenterdataTAttach();
+                tAttach.setBusId(logId);
+                tAttach.setAttachPath(picture);
+                tAttach.setBusIndx(BUS_INDEX_1);
+                tAttach.setBusSource("platform - 119");
+                tAttach.setFileType(FILE_TYPE_1);
+                attachList.add(tAttach);
+            }
+            remoteDataService.delAndInsertBatch(JSON.toJSONString(attachList));
+        }
+        return eventcatalogue.getEventCode();
+    }
+
+}

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

@@ -18,6 +18,7 @@ public class EventConstants {
     // 事件来源
     public static final String REPORTING_SOURCE_1 = "reporting_source_1";// AI
     public static final String REPORTING_SOURCE_4 = "reporting_source_4";// 传感器
+    public static final String REPORTING_SOURCE_5 = "reporting_source_5";// 第三方协查
 
     // 是否催办
     public static final String SYS_ISURGE_2 = "sys_isurge_2";// 否
@@ -33,6 +34,7 @@ public class EventConstants {
     // 日志操作类型
     public static final String LOG_OPER_TYPE_1 = "log_oper_type_1";
     public static final String LOG_OPER_TYPE_3 = "log_oper_type_3";// AI反馈
+    public static final String LOG_OPER_TYPE_4 = "log_oper_type_4";//第三方协查
 
     // 附件索引
     public static final String BUS_INDEX_1 = "bus_indx_forest";// 火情事件