Explorar el Código

无人机数据转事件

Memory_LG hace 2 meses
padre
commit
d9f61262cf

+ 5 - 1
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/domain/vo/DroneVO.java

@@ -19,6 +19,10 @@ public class DroneVO {
      */
     private String id;
     /**
+     * 上报无人机id
+     */
+    private String copterId;
+    /**
      * 时间戳
      */
     private Long timeStamp;
@@ -34,7 +38,7 @@ public class DroneVO {
      * 隐患时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date createTime;
+    private Date creationTime;
     /**
      * 隐患图片地址
      */

+ 89 - 4
src/main/java/com/sooka/sponest/event/centereventteventcatalogue/service/impl/AlarmEventServiceImpl.java

@@ -36,6 +36,7 @@ import com.sooka.sponest.event.utils.RemoteApiUtil;
 import com.sooka.sponest.monitor.api.RemoteMonitorService;
 import com.sooka.sponest.monitor.api.domain.CenterdataTAidevicedept;
 import com.sooka.sponest.monitor.api.domain.CenterdataTCamera;
+import com.sooka.sponest.monitor.api.domain.CentermonitorTUav;
 import org.apache.commons.collections4.MapUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,10 +49,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 import static com.ruoyi.common.core.utils.DateUtils.YYYY_MM_DD_HH_MM_SS;
 import static com.sooka.sponest.event.utils.EventConstants.*;
@@ -279,6 +277,12 @@ public class AlarmEventServiceImpl implements AlarmEventService {
         centereventTFireLog.setOperationType(LOG_OPER_TYPE_3);
         centereventTFireLog.setCreateName(centereventTEventcatalogue.getCreateName());
         centereventTFireLog.setCreateTime(centereventTEventcatalogue.getCreateTime());
+        if(StringUtils.isNotEmpty(centereventTEventcatalogue.getLongitude())){
+            centereventTFireLog.setLongitude(centereventTEventcatalogue.getLongitude());
+        }
+        if(StringUtils.isNotEmpty(centereventTEventcatalogue.getLatitude())){
+            centereventTFireLog.setLatitude(centereventTEventcatalogue.getLatitude());
+        }
         centereventTFireLogService.insertCentereventTFireLog(centereventTFireLog);
         return centereventTFireLog.getId();
     }
@@ -688,6 +692,15 @@ public class AlarmEventServiceImpl implements AlarmEventService {
 
     @Override
     public int insertDroneEvent(List<DroneVO> alarmData) {
+        Map<Object, Object> eventType = new HashMap<>();
+        eventType.put("Sheep","222");
+        eventType.put("Car","218");
+
+        Map<Object, Object> eventLabel = new HashMap<>();
+        eventLabel.put("Sheep","区域入侵");
+        eventLabel.put("Car","工程车检测");
+
+        // 将告警图片转换为本地图片
         alarmData.parallelStream().forEach(item -> {
             item.setId(IdUtils.simpleUUID());
             try {
@@ -698,6 +711,78 @@ public class AlarmEventServiceImpl implements AlarmEventService {
                 logger.error("Failed to process image for item {}: {}", item.getId(), e.getMessage());
             }
         });
+        // 通过无人机id, 获取无人机信息和绑定的指挥中心
+        alarmData.forEach(alarm->{
+            CentermonitorTUav data = SpringUtils.getBean(RemoteMonitorService.class).selectUavByUavId(alarm.getCopterId()).getData();
+            /**
+             * 牛羊 Sheep:222
+             * 车辆 Car: 218
+             */
+
+            String eventName = data.getUavName()+"上报"+MapUtils.getString(eventLabel, alarm.getAlarmType())+"事件";
+            String eventDescription = "基站:"+data.getBaseStationName()+",无人机:"+data.getUavName()+",经度:"+alarm.getLongitude()+",纬度:"+alarm.getLatitude()+",海拔:"+alarm.getAltitude();
+
+            //创建事件主体, 写入事件表.
+            CentereventTEventcatalogue centereventTEventcatalogue = new CentereventTEventcatalogue("2", MapUtils.getString(eventType, alarm.getAlarmType()), eventName, eventDescription, alarm.getLongitude(), alarm.getLatitude(), data.getUavName(), alarm.getCreationTime(), "");
+            centereventTEventcatalogue.setLongitude(alarm.getLongitude());
+            centereventTEventcatalogue.setLatitude(alarm.getLatitude());
+            centereventTEventcatalogue.setReportSource(REPORTING_SOURCE_6);
+            CenterdataTCamera centerdataTCamera = new CenterdataTCamera();
+            centerdataTCamera.setId(alarm.getCopterId());
+            centerdataTCamera.setCameraName(data.getUavName());
+            centereventTEventcatalogue = this.insertEventCatalogue(centereventTEventcatalogue, centerdataTCamera, alarm.getCreationTime());
+
+            String eventCode = centereventTEventcatalogue.getEventCode();
+            String createName = centereventTEventcatalogue.getCreateName();
+            Date createTime = centereventTEventcatalogue.getCreateTime();
+            // 事件部门
+            data.getDeptList().forEach(item -> {
+                CentereventDeptEvent centereventTDeptEvent = new CentereventDeptEvent();
+                centereventTDeptEvent.setId(IdUtils.fastSimpleUUID());
+                centereventTDeptEvent.setEventCode(eventCode);
+                centereventTDeptEvent.setDeptId(item.getDeptId());
+                centereventTDeptEvent.setDeptName(item.getDeptName());
+                centereventTDeptEvent.setIsUrged(SYS_ISURGE_2);
+                centereventTDeptEvent.setEventStatus("上报");
+                centereventTDeptEvent.setEventStatusValue(FOREST_EVENT_STATUS_1);
+                centereventTDeptEvent.setDeptHandleType(DEPT_HANDLE_TYPE_2);
+                centereventTDeptEvent.setCreateBy(alarm.getCopterId());
+                centereventTDeptEvent.setCreateName(createName);
+                centereventTDeptEvent.setCreateTime(createTime);
+                centereventTDeptEventService.insertCentereventTDeptEvent(centereventTDeptEvent);
+            });
+
+
+            //事件日志
+            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_4);
+            centereventTFireLog.setCreateBy(alarm.getCopterId());
+            centereventTFireLog.setCreateName(centereventTEventcatalogue.getCreateName());
+            centereventTFireLog.setCreateTime(centereventTEventcatalogue.getCreateTime());
+            if(StringUtils.isNotEmpty(centereventTEventcatalogue.getLongitude())){
+                centereventTFireLog.setLongitude(centereventTEventcatalogue.getLongitude());
+            }
+            if(StringUtils.isNotEmpty(centereventTEventcatalogue.getLatitude())){
+                centereventTFireLog.setLatitude(centereventTEventcatalogue.getLatitude());
+            }
+            centereventTFireLogService.insertCentereventTFireLog(centereventTFireLog);
+
+            //事件附件
+            if (StringUtils.isNotBlank(alarm.getLocalPath())) {
+                CenterdataTAttach tAttach = new CenterdataTAttach();
+                tAttach.setBusId(centereventTFireLog.getId());
+                tAttach.setAttachPath(alarm.getLocalPath());
+                tAttach.setBusIndx(BUS_INDEX_2);
+                tAttach.setBusSource("UAV_1");
+                tAttach.setFileType(FILE_TYPE_1);
+                remoteDataService.insertAttach(tAttach);
+            }
+        });
+
         return alarmEventMapper.insertDrone(alarmData);
     }
 }

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

@@ -20,6 +20,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 REPORTING_SOURCE_6 = "reporting_source_6";// 数字住建
 
     // 是否催办
     public static final String SYS_ISURGE_2 = "sys_isurge_2";// 否
@@ -36,6 +37,7 @@ public class EventConstants {
     public static final String LOG_OPER_TYPE_1 = "log_oper_type_1";
     public static final String LOG_OPER_TYPE_2 = "log_oper_type_2";
     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";// 火情事件

+ 1 - 1
src/main/resources/mapper/centereventteventcatalogue/AlarmEventMapper.xml

@@ -22,7 +22,7 @@
         (id, time_stamp, altitude, alarm_type, create_time, photo_path, latitude, longitude, photo_id, photo_name, local_path)
         values
         <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.id}, #{item.timeStamp}, #{item.altitude}, #{item.alarmType}, #{item.createTime}, #{item.photoPath}, #{item.latitude}, #{item.longitude}, #{item.photoId}, #{item.photoName}, #{item.localPath})
+            (#{item.id}, #{item.timeStamp}, #{item.altitude}, #{item.alarmType}, #{item.creationTime}, #{item.photoPath}, #{item.latitude}, #{item.longitude}, #{item.photoId}, #{item.photoName}, #{item.localPath})
         </foreach>
     </insert>
 </mapper>